Message ID | 20231024-vfs-super-rework-v1-1-37a8aa697148@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | fs,block: yield devices | expand |
On Tue 24-10-23 16:53:39, Christian Brauner wrote: > There's no need to drop s_umount anymore now that we removed all sources > where s_umount is taken beneath open_mutex or bd_holder_lock. > > Signed-off-by: Christian Brauner <brauner@kernel.org> Yay. Feel free to add: Reviewed-by: Jan Kara <jack@suse.cz> Honza > --- > fs/super.c | 16 ---------------- > 1 file changed, 16 deletions(-) > > diff --git a/fs/super.c b/fs/super.c > index b26b302f870d..4edde92d5e8f 100644 > --- a/fs/super.c > +++ b/fs/super.c > @@ -1613,15 +1613,7 @@ int get_tree_bdev(struct fs_context *fc, > return -EBUSY; > } > } else { > - /* > - * We drop s_umount here because we need to open the bdev and > - * bdev->open_mutex ranks above s_umount (blkdev_put() -> > - * bdev_mark_dead()). It is safe because we have active sb > - * reference and SB_BORN is not set yet. > - */ > - super_unlock_excl(s); > error = setup_bdev_super(s, fc->sb_flags, fc); > - __super_lock_excl(s); > if (!error) > error = fill_super(s, fc); > if (error) { > @@ -1665,15 +1657,7 @@ struct dentry *mount_bdev(struct file_system_type *fs_type, > return ERR_PTR(-EBUSY); > } > } else { > - /* > - * We drop s_umount here because we need to open the bdev and > - * bdev->open_mutex ranks above s_umount (blkdev_put() -> > - * bdev_mark_dead()). It is safe because we have active sb > - * reference and SB_BORN is not set yet. > - */ > - super_unlock_excl(s); > error = setup_bdev_super(s, flags, NULL); > - __super_lock_excl(s); > if (!error) > error = fill_super(s, data, flags & SB_SILENT ? 1 : 0); > if (error) { > > -- > 2.34.1 >
So while I still think we should not be holding s_umount when setting
up a new unborn sb to start with, there is no point in dropping it
now:
Reviewed-by: Christoph Hellwig <hch@lst.de>
diff --git a/fs/super.c b/fs/super.c index b26b302f870d..4edde92d5e8f 100644 --- a/fs/super.c +++ b/fs/super.c @@ -1613,15 +1613,7 @@ int get_tree_bdev(struct fs_context *fc, return -EBUSY; } } else { - /* - * We drop s_umount here because we need to open the bdev and - * bdev->open_mutex ranks above s_umount (blkdev_put() -> - * bdev_mark_dead()). It is safe because we have active sb - * reference and SB_BORN is not set yet. - */ - super_unlock_excl(s); error = setup_bdev_super(s, fc->sb_flags, fc); - __super_lock_excl(s); if (!error) error = fill_super(s, fc); if (error) { @@ -1665,15 +1657,7 @@ struct dentry *mount_bdev(struct file_system_type *fs_type, return ERR_PTR(-EBUSY); } } else { - /* - * We drop s_umount here because we need to open the bdev and - * bdev->open_mutex ranks above s_umount (blkdev_put() -> - * bdev_mark_dead()). It is safe because we have active sb - * reference and SB_BORN is not set yet. - */ - super_unlock_excl(s); error = setup_bdev_super(s, flags, NULL); - __super_lock_excl(s); if (!error) error = fill_super(s, data, flags & SB_SILENT ? 1 : 0); if (error) {
There's no need to drop s_umount anymore now that we removed all sources where s_umount is taken beneath open_mutex or bd_holder_lock. Signed-off-by: Christian Brauner <brauner@kernel.org> --- fs/super.c | 16 ---------------- 1 file changed, 16 deletions(-)