linux/drivers/s390/block
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
..
dasd_3990_erp.c s390/dasd: Fix comment spelling 2020-03-17 20:50:19 +01:00
dasd_alias.c s390/dasd: fix endless loop after read unit address configuration 2019-08-01 20:46:14 -06:00
dasd_devmap.c s390/dasd: Recognise data for ESE volumes 2019-07-11 20:39:53 +02:00
dasd_diag.c s390/dasd: Use struct_size() helper 2020-07-15 08:47:11 -06:00
dasd_diag.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
dasd_eckd.c s390/dasd: fix data corruption for thin provisioned devices 2020-03-12 07:24:52 -06:00
dasd_eckd.h s390: Replace zero-length array with flexible-array member 2020-02-27 16:02:21 +01:00
dasd_eer.c s390/dasd: Handle out-of-space constraint 2019-07-11 20:39:54 +02:00
dasd_erp.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
dasd_fba.c s390/dasd: Use ALIGN_DOWN macro 2019-07-11 20:39:54 +02:00
dasd_fba.h s390/dasd: fix typo in copyright statement 2019-12-20 11:52:01 -07:00
dasd_genhd.c dasd: use blk_drop_partitions instead of badly reimplementing it 2020-04-20 11:32:59 -06:00
dasd_int.h s390/dasd: fix data corruption for thin provisioned devices 2020-03-12 07:24:52 -06:00
dasd_ioctl.c block: fix locking for struct block_device size updates 2020-09-01 16:49:25 -06:00
dasd_proc.c proc: convert everything to "struct proc_ops" 2020-02-04 03:05:26 +00:00
dasd.c blk-mq: move failure injection out of blk_mq_complete_request 2020-06-24 09:15:57 -06:00
dcssblk.c dcssblk: don't set bd_block_size in ->open 2020-07-01 08:08:15 -06:00
Kconfig s390/dasd: remove IOSCHED_DEADLINE from DASD Kconfig 2020-04-17 08:05:27 -06:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
scm_blk.c blk-mq: move failure injection out of blk_mq_complete_request 2020-06-24 09:15:57 -06:00
scm_blk.h Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux 2017-11-13 11:47:01 -08:00
scm_drv.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
xpram.c block: move ->make_request_fn to struct block_device_operations 2020-07-01 07:27:24 -06:00