mirror of
https://github.com/torvalds/linux.git
synced 2024-09-21 07:23:06 +00:00
xfs: simplify device handling
We removed all codepaths where s_umount is taken beneath open_mutex and bd_holder_lock so don't make things more complicated than they need to be and hold s_umount over block device opening. Link: https://lore.kernel.org/r/20231024-vfs-super-rework-v1-2-37a8aa697148@kernel.org Reviewed-by: Jan Kara <jack@suse.cz> Signed-off-by: Christian Brauner <brauner@kernel.org>
This commit is contained in:
parent
761c47a973
commit
653bee386c
|
@ -438,19 +438,13 @@ xfs_open_devices(
|
|||
struct bdev_handle *logdev_handle = NULL, *rtdev_handle = NULL;
|
||||
int error;
|
||||
|
||||
/*
|
||||
* blkdev_put() can't be called under s_umount, see the comment
|
||||
* in get_tree_bdev() for more details
|
||||
*/
|
||||
up_write(&sb->s_umount);
|
||||
|
||||
/*
|
||||
* Open real time and log devices - order is important.
|
||||
*/
|
||||
if (mp->m_logname) {
|
||||
error = xfs_blkdev_get(mp, mp->m_logname, &logdev_handle);
|
||||
if (error)
|
||||
goto out_relock;
|
||||
return error;
|
||||
}
|
||||
|
||||
if (mp->m_rtname) {
|
||||
|
@ -493,10 +487,7 @@ xfs_open_devices(
|
|||
bdev_release(logdev_handle);
|
||||
}
|
||||
|
||||
error = 0;
|
||||
out_relock:
|
||||
down_write(&sb->s_umount);
|
||||
return error;
|
||||
return 0;
|
||||
|
||||
out_free_rtdev_targ:
|
||||
if (mp->m_rtdev_targp)
|
||||
|
@ -509,7 +500,7 @@ out_relock:
|
|||
out_close_logdev:
|
||||
if (logdev_handle)
|
||||
bdev_release(logdev_handle);
|
||||
goto out_relock;
|
||||
return error;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -759,10 +750,6 @@ static void
|
|||
xfs_mount_free(
|
||||
struct xfs_mount *mp)
|
||||
{
|
||||
/*
|
||||
* Free the buftargs here because blkdev_put needs to be called outside
|
||||
* of sb->s_umount, which is held around the call to ->put_super.
|
||||
*/
|
||||
if (mp->m_logdev_targp && mp->m_logdev_targp != mp->m_ddev_targp)
|
||||
xfs_free_buftarg(mp->m_logdev_targp);
|
||||
if (mp->m_rtdev_targp)
|
||||
|
|
Loading…
Reference in New Issue
Block a user