diff options
author | Christoph Hellwig <hch@lst.de> | 2023-10-17 20:48:21 +0200 |
---|---|---|
committer | Christian Brauner <brauner@kernel.org> | 2023-10-28 13:29:23 +0200 |
commit | 6e57236ed6e070607868da70fac3d52ae24e5417 (patch) | |
tree | c8ded2d5e3ead036b4c91f89c02c7fe844a2af04 /block/bdev.c | |
parent | 51b4cb4f3e2265cf8303ffd9a4f239ee3805d3ca (diff) |
block: move bdev_mark_dead out of disk_check_media_change
disk_check_media_change is mostly called from ->open where it makes
little sense to mark the file system on the device as dead, as we
are just opening it. So instead of calling bdev_mark_dead from
disk_check_media_change move it into the few callers that are not
in an open instance. This avoid calling into bdev_mark_dead and
thus taking s_umount with open_mutex held.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20231017184823.1383356-4-hch@lst.de
Reviewed-by: Ming Lei <ming.lei@redhat.com>
Reviewed-by: Christian Brauner <brauner@kernel.org>
Reviewed-by: Jan Kara <jack@suse.cz>
Reviewed-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Christian Brauner <brauner@kernel.org>
Diffstat (limited to 'block/bdev.c')
-rw-r--r-- | block/bdev.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/block/bdev.c b/block/bdev.c index 9838085102b3..2018d250e131 100644 --- a/block/bdev.c +++ b/block/bdev.c @@ -1019,14 +1019,13 @@ void bdev_mark_dead(struct block_device *bdev, bool surprise) invalidate_bdev(bdev); } -#ifdef CONFIG_DASD_MODULE /* - * Drivers should not use this directly, but the DASD driver has historically - * had a shutdown to offline mode that doesn't actually remove the gendisk - * that otherwise looks a lot like a safe device removal. + * New drivers should not use this directly. There are some drivers however + * that needs this for historical reasons. For example, the DASD driver has + * historically had a shutdown to offline mode that doesn't actually remove the + * gendisk that otherwise looks a lot like a safe device removal. */ EXPORT_SYMBOL_GPL(bdev_mark_dead); -#endif void sync_bdevs(bool wait) { |