Commit 2a9311ad authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Christian Brauner

xfs: free the xfs_mount in ->kill_sb

As a rule of thumb everything allocated to the fs_context and moved into
the super_block should be freed by ->kill_sb so that the teardown
handling doesn't need to be duplicated between the fill_super error
path and put_super.  Implement a XFS-specific kill_sb method to do that.
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarChristian Brauner <brauner@kernel.org>
Reviewed-by: default avatar"Darrick J. Wong" <djwong@kernel.org>
Message-Id: <20230809220545.1308228-4-hch@lst.de>
Signed-off-by: default avatarChristian Brauner <brauner@kernel.org>
parent 1aa2d074
...@@ -1144,9 +1144,6 @@ xfs_fs_put_super( ...@@ -1144,9 +1144,6 @@ xfs_fs_put_super(
xfs_destroy_percpu_counters(mp); xfs_destroy_percpu_counters(mp);
xfs_destroy_mount_workqueues(mp); xfs_destroy_mount_workqueues(mp);
xfs_close_devices(mp); xfs_close_devices(mp);
sb->s_fs_info = NULL;
xfs_mount_free(mp);
} }
static long static long
...@@ -1488,7 +1485,7 @@ xfs_fs_fill_super( ...@@ -1488,7 +1485,7 @@ xfs_fs_fill_super(
error = xfs_fs_validate_params(mp); error = xfs_fs_validate_params(mp);
if (error) if (error)
goto out_free_names; return error;
sb_min_blocksize(sb, BBSIZE); sb_min_blocksize(sb, BBSIZE);
sb->s_xattr = xfs_xattr_handlers; sb->s_xattr = xfs_xattr_handlers;
...@@ -1515,7 +1512,7 @@ xfs_fs_fill_super( ...@@ -1515,7 +1512,7 @@ xfs_fs_fill_super(
error = xfs_open_devices(mp); error = xfs_open_devices(mp);
if (error) if (error)
goto out_free_names; return error;
error = xfs_init_mount_workqueues(mp); error = xfs_init_mount_workqueues(mp);
if (error) if (error)
...@@ -1735,9 +1732,6 @@ xfs_fs_fill_super( ...@@ -1735,9 +1732,6 @@ xfs_fs_fill_super(
xfs_destroy_mount_workqueues(mp); xfs_destroy_mount_workqueues(mp);
out_close_devices: out_close_devices:
xfs_close_devices(mp); xfs_close_devices(mp);
out_free_names:
sb->s_fs_info = NULL;
xfs_mount_free(mp);
return error; return error;
out_unmount: out_unmount:
...@@ -2000,12 +1994,20 @@ static int xfs_init_fs_context( ...@@ -2000,12 +1994,20 @@ static int xfs_init_fs_context(
return 0; return 0;
} }
static void
xfs_kill_sb(
struct super_block *sb)
{
kill_block_super(sb);
xfs_mount_free(XFS_M(sb));
}
static struct file_system_type xfs_fs_type = { static struct file_system_type xfs_fs_type = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.name = "xfs", .name = "xfs",
.init_fs_context = xfs_init_fs_context, .init_fs_context = xfs_init_fs_context,
.parameters = xfs_fs_parameters, .parameters = xfs_fs_parameters,
.kill_sb = kill_block_super, .kill_sb = xfs_kill_sb,
.fs_flags = FS_REQUIRES_DEV | FS_ALLOW_IDMAP, .fs_flags = FS_REQUIRES_DEV | FS_ALLOW_IDMAP,
}; };
MODULE_ALIAS_FS("xfs"); MODULE_ALIAS_FS("xfs");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment