[PATCH 3/8] xfs: initialise xfssync work before running quotachecks
Ben Myers
bpm at sgi.com
Thu Mar 22 10:15:48 CDT 2012
On Thu, Mar 22, 2012 at 04:15:08PM +1100, Dave Chinner wrote:
> From: Dave Chinner <dchinner at redhat.com>
>
> Because the mount process can run a quotacheck and consume lots of
> inodes, we need to be able to run periodic inode reclaim during the
> mount process. This will prevent running the system out of memory
> during quota checks.
>
> This essentially reverts 2bcf6e97, but that is safe to do now that
> the quota sync code that was causing problems during long quotacheck
> executions is now gone.
Dave, I've held off on #s 3 and 4 because they appear to be racy. Being
able to run inode reclaim during quota check seems like a good idea
though.
-Ben
> Signed-off-by: Dave Chinner <dchinner at redhat.com>
> Reviewed-by: Christoph Hellwig <hch at lst.de>
> ---
> fs/xfs/xfs_super.c | 17 +++++++++--------
> 1 files changed, 9 insertions(+), 8 deletions(-)
>
> diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c
> index 2c3cc2e..a08c56d 100644
> --- a/fs/xfs/xfs_super.c
> +++ b/fs/xfs/xfs_super.c
> @@ -1346,31 +1346,33 @@ xfs_fs_fill_super(
> sb->s_time_gran = 1;
> set_posix_acl_flag(sb);
>
> - error = xfs_mountfs(mp);
> + error = xfs_syncd_init(mp);
> if (error)
> goto out_filestream_unmount;
>
> - error = xfs_syncd_init(mp);
> + error = xfs_mountfs(mp);
> if (error)
> - goto out_unmount;
> + goto out_syncd_stop;
>
> root = igrab(VFS_I(mp->m_rootip));
> if (!root) {
> error = ENOENT;
> - goto out_syncd_stop;
> + goto out_unmount;
> }
> if (is_bad_inode(root)) {
> error = EINVAL;
> - goto out_syncd_stop;
> + goto out_unmount;
> }
> sb->s_root = d_make_root(root);
> if (!sb->s_root) {
> error = ENOMEM;
> - goto out_syncd_stop;
> + goto out_unmount;
> }
>
> return 0;
>
> + out_syncd_stop:
> + xfs_syncd_stop(mp);
> out_filestream_unmount:
> xfs_filestream_unmount(mp);
> out_free_sb:
> @@ -1387,8 +1389,6 @@ out_destroy_workqueues:
> out:
> return -error;
>
> - out_syncd_stop:
> - xfs_syncd_stop(mp);
> out_unmount:
> /*
> * Blow away any referenced inode in the filestreams cache.
> @@ -1400,6 +1400,7 @@ out_destroy_workqueues:
> xfs_flush_buftarg(mp->m_ddev_targp, 1);
>
> xfs_unmountfs(mp);
> + xfs_syncd_stop(mp);
> goto out_free_sb;
> }
>
> --
> 1.7.9
>
> _______________________________________________
> xfs mailing list
> xfs at oss.sgi.com
> http://oss.sgi.com/mailman/listinfo/xfs
More information about the xfs
mailing list