xfs
[Top] [All Lists]

[PATCH 08/10] xfs: initialise xfssync work before running quotachecks

To: xfs@xxxxxxxxxxx
Subject: [PATCH 08/10] xfs: initialise xfssync work before running quotachecks
From: Dave Chinner <david@xxxxxxxxxxxxx>
Date: Wed, 7 Mar 2012 15:50:26 +1100
In-reply-to: <1331095828-28742-1-git-send-email-david@xxxxxxxxxxxxx>
References: <1331095828-28742-1-git-send-email-david@xxxxxxxxxxxxx>
From: Dave Chinner <dchinner@xxxxxxxxxx>

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.

Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
---
 fs/xfs/xfs_super.c |   15 ++++++++-------
 1 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c
index 13fa0cf..150d8f4 100644
--- a/fs/xfs/xfs_super.c
+++ b/fs/xfs/xfs_super.c
@@ -1343,22 +1343,22 @@ 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_alloc_root(root);
        if (!sb->s_root) {
@@ -1368,6 +1368,8 @@ xfs_fs_fill_super(
 
        return 0;
 
+ out_syncd_stop:
+       xfs_syncd_stop(mp);
  out_filestream_unmount:
        xfs_filestream_unmount(mp);
  out_free_sb:
@@ -1384,8 +1386,6 @@ xfs_fs_fill_super(
 
  out_iput:
        iput(root);
- out_syncd_stop:
-       xfs_syncd_stop(mp);
  out_unmount:
        /*
         * Blow away any referenced inode in the filestreams cache.
@@ -1397,6 +1397,7 @@ xfs_fs_fill_super(
        xfs_flush_buftarg(mp->m_ddev_targp, 1);
 
        xfs_unmountfs(mp);
+       xfs_syncd_stop(mp);
        goto out_free_sb;
 }
 
-- 
1.7.9

<Prev in Thread] Current Thread [Next in Thread>