|
@@ -981,8 +981,6 @@ xfs_fs_put_super(
|
|
|
{
|
|
{
|
|
|
struct xfs_mount *mp = XFS_M(sb);
|
|
struct xfs_mount *mp = XFS_M(sb);
|
|
|
|
|
|
|
|
- xfs_syncd_stop(mp);
|
|
|
|
|
-
|
|
|
|
|
/*
|
|
/*
|
|
|
* Blow away any referenced inode in the filestreams cache.
|
|
* Blow away any referenced inode in the filestreams cache.
|
|
|
* This can and will cause log traffic as inodes go inactive
|
|
* This can and will cause log traffic as inodes go inactive
|
|
@@ -993,6 +991,7 @@ xfs_fs_put_super(
|
|
|
xfs_flush_buftarg(mp->m_ddev_targp, 1);
|
|
xfs_flush_buftarg(mp->m_ddev_targp, 1);
|
|
|
|
|
|
|
|
xfs_unmountfs(mp);
|
|
xfs_unmountfs(mp);
|
|
|
|
|
+ xfs_syncd_stop(mp);
|
|
|
xfs_freesb(mp);
|
|
xfs_freesb(mp);
|
|
|
xfs_icsb_destroy_counters(mp);
|
|
xfs_icsb_destroy_counters(mp);
|
|
|
xfs_destroy_mount_workqueues(mp);
|
|
xfs_destroy_mount_workqueues(mp);
|
|
@@ -1362,31 +1361,32 @@ xfs_fs_fill_super(
|
|
|
sb->s_time_gran = 1;
|
|
sb->s_time_gran = 1;
|
|
|
set_posix_acl_flag(sb);
|
|
set_posix_acl_flag(sb);
|
|
|
|
|
|
|
|
- error = xfs_mountfs(mp);
|
|
|
|
|
|
|
+ error = xfs_syncd_init(mp);
|
|
|
if (error)
|
|
if (error)
|
|
|
goto out_filestream_unmount;
|
|
goto out_filestream_unmount;
|
|
|
|
|
|
|
|
- error = xfs_syncd_init(mp);
|
|
|
|
|
|
|
+ error = xfs_mountfs(mp);
|
|
|
if (error)
|
|
if (error)
|
|
|
- goto out_unmount;
|
|
|
|
|
|
|
+ goto out_syncd_stop;
|
|
|
|
|
|
|
|
root = igrab(VFS_I(mp->m_rootip));
|
|
root = igrab(VFS_I(mp->m_rootip));
|
|
|
if (!root) {
|
|
if (!root) {
|
|
|
error = ENOENT;
|
|
error = ENOENT;
|
|
|
- goto out_syncd_stop;
|
|
|
|
|
|
|
+ goto out_unmount;
|
|
|
}
|
|
}
|
|
|
if (is_bad_inode(root)) {
|
|
if (is_bad_inode(root)) {
|
|
|
error = EINVAL;
|
|
error = EINVAL;
|
|
|
- goto out_syncd_stop;
|
|
|
|
|
|
|
+ goto out_unmount;
|
|
|
}
|
|
}
|
|
|
sb->s_root = d_make_root(root);
|
|
sb->s_root = d_make_root(root);
|
|
|
if (!sb->s_root) {
|
|
if (!sb->s_root) {
|
|
|
error = ENOMEM;
|
|
error = ENOMEM;
|
|
|
- goto out_syncd_stop;
|
|
|
|
|
|
|
+ goto out_unmount;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
return 0;
|
|
return 0;
|
|
|
-
|
|
|
|
|
|
|
+ out_syncd_stop:
|
|
|
|
|
+ xfs_syncd_stop(mp);
|
|
|
out_filestream_unmount:
|
|
out_filestream_unmount:
|
|
|
xfs_filestream_unmount(mp);
|
|
xfs_filestream_unmount(mp);
|
|
|
out_free_sb:
|
|
out_free_sb:
|
|
@@ -1403,8 +1403,6 @@ out_destroy_workqueues:
|
|
|
out:
|
|
out:
|
|
|
return -error;
|
|
return -error;
|
|
|
|
|
|
|
|
- out_syncd_stop:
|
|
|
|
|
- xfs_syncd_stop(mp);
|
|
|
|
|
out_unmount:
|
|
out_unmount:
|
|
|
/*
|
|
/*
|
|
|
* Blow away any referenced inode in the filestreams cache.
|
|
* Blow away any referenced inode in the filestreams cache.
|
|
@@ -1416,6 +1414,7 @@ out_destroy_workqueues:
|
|
|
xfs_flush_buftarg(mp->m_ddev_targp, 1);
|
|
xfs_flush_buftarg(mp->m_ddev_targp, 1);
|
|
|
|
|
|
|
|
xfs_unmountfs(mp);
|
|
xfs_unmountfs(mp);
|
|
|
|
|
+ xfs_syncd_stop(mp);
|
|
|
goto out_free_sb;
|
|
goto out_free_sb;
|
|
|
}
|
|
}
|
|
|
|
|
|