kernel_optimize_test/block/partitions
Christoph Hellwig c2b4bb8cb3 block: fix locking for struct block_device size updates
Two different callers use two different mutexes for updating the
block device size, which obviously doesn't help to actually protect
against concurrent updates from the different callers.  In addition
one of the locks, bd_mutex is rather prone to deadlocks with other
parts of the block stack that use it for high level synchronization.

Switch to using a new spinlock protecting just the size updates, as
that is all we need, and make sure everyone does the update through
the proper helper.

This fixes a bug reported with the nvme revalidating disks during a
hot removal operation, which can currently deadlock on bd_mutex.

Reported-by: Xianting Tian <xianting_tian@126.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2020-09-01 16:49:25 -06:00
..
acorn.c block: declare all partition detection routines in check.h 2020-03-24 07:57:08 -06:00
aix.c block: declare all partition detection routines in check.h 2020-03-24 07:57:08 -06:00
amiga.c block: declare all partition detection routines in check.h 2020-03-24 07:57:08 -06:00
atari.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
atari.h block: declare all partition detection routines in check.h 2020-03-24 07:57:08 -06:00
check.h block: move block layer internals out of include/linux/genhd.h 2020-03-25 09:50:08 -06:00
cmdline.c block: declare all partition detection routines in check.h 2020-03-24 07:57:08 -06:00
core.c block: fix locking for struct block_device size updates 2020-09-01 16:49:25 -06:00
efi.c partitions/efi: Fix partition name parsing in GUID partition entry 2020-03-08 10:00:09 +01:00
efi.h Merge branch 'efi-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2020-03-30 16:13:08 -07:00
ibm.c s390/dasd: remove ioctl_by_bdev calls 2020-05-21 08:22:20 -06:00
karma.c block: remove block/partitions/karma.h 2020-03-24 07:57:08 -06:00
Kconfig treewide: replace '---help---' in Kconfig files with 'help' 2020-06-14 01:57:21 +09:00
ldm.c partitions/ldm: Replace uuid_copy() with import_uuid() where it makes sense 2020-06-18 09:17:54 -06:00
ldm.h block: Replace zero-length array with flexible-array 2020-06-15 23:08:32 -05:00
mac.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mac.h block: declare all partition detection routines in check.h 2020-03-24 07:57:08 -06:00
Makefile block: merge partition-generic.c and check.c 2020-03-24 07:57:08 -06:00
msdos.c block: move the various x86 Unix label formats out of genhd.h 2020-03-24 07:57:08 -06:00
osf.c block: remove block/partitions/osf.h 2020-03-24 07:57:08 -06:00
sgi.c block: move the *_PARTITION enum out of genhd.h 2020-03-24 07:57:08 -06:00
sun.c block: move the *_PARTITION enum out of genhd.h 2020-03-24 07:57:08 -06:00
sysv68.c block: declare all partition detection routines in check.h 2020-03-24 07:57:08 -06:00
ultrix.c block: declare all partition detection routines in check.h 2020-03-24 07:57:08 -06:00