diff options
author | Christian Brauner <brauner@kernel.org> | 2024-03-26 13:47:22 +0100 |
---|---|---|
committer | Christian Brauner <brauner@kernel.org> | 2024-03-27 13:17:15 +0100 |
commit | 22650a99821dda3d05f1c334ea90330b4982de56 (patch) | |
tree | d6dbade087df53eb660d654d876a35c6d1a59a54 /drivers | |
parent | 3ff56e285de5a375fbfab3c3f1af81bbd23db36d (diff) | |
download | linux-stable-22650a99821dda3d05f1c334ea90330b4982de56.tar.gz linux-stable-22650a99821dda3d05f1c334ea90330b4982de56.tar.bz2 linux-stable-22650a99821dda3d05f1c334ea90330b4982de56.zip |
fs,block: yield devices early
Currently a device is only really released once the umount returns to
userspace due to how file closing works. That ultimately could cause
an old umount assumption to be violated that concurrent umount and mount
don't fail. So an exclusively held device with a temporary holder should
be yielded before the filesystem is gone. Add a helper that allows
callers to do that. This also allows us to remove the two holder ops
that Linus wasn't excited about.
Link: https://lore.kernel.org/r/20240326-vfs-bdev-end_holder-v1-1-20af85202918@kernel.org
Fixes: f3a608827d1f ("bdev: open block device as files") # mainline only
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Jan Kara <jack@suse.cz>
Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Christian Brauner <brauner@kernel.org>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/mtd/devices/block2mtd.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/mtd/devices/block2mtd.c b/drivers/mtd/devices/block2mtd.c index 97a00ec9a4d4..caacdc0a3819 100644 --- a/drivers/mtd/devices/block2mtd.c +++ b/drivers/mtd/devices/block2mtd.c @@ -209,7 +209,7 @@ static void block2mtd_free_device(struct block2mtd_dev *dev) if (dev->bdev_file) { invalidate_mapping_pages(dev->bdev_file->f_mapping, 0, -1); - fput(dev->bdev_file); + bdev_fput(dev->bdev_file); } kfree(dev); |