mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-04 13:21:45 +00:00
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: Christoph Hellwig <hch@lst.de> Reviewed-by: Christian Brauner <brauner@kernel.org> Reviewed-by: "Darrick J. Wong" <djwong@kernel.org> Message-Id: <20230809220545.1308228-4-hch@lst.de> Signed-off-by: Christian Brauner <brauner@kernel.org>
This commit is contained in:
parent
1aa2d074d4
commit
2a9311adb8
1 changed files with 11 additions and 9 deletions
|
@ -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(
|
||||||
|
|
||||||
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(
|
||||||
|
|
||||||
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(
|
||||||
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(
|
||||||
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");
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue