From e9c404d46ed278b2ebcf8dc4d423786f6ec50f53 Mon Sep 17 00:00:00 2001 From: Christoph Hellwig Date: Tue, 27 Mar 2012 10:34:46 -0400 Subject: [PATCH] --- yaml --- r: 307703 b: refs/heads/master c: b4d05e3019692fc5a8c573fbce60de2d48c5b7a1 h: refs/heads/master i: 307701: b6f5dafdd4bb0467489cd4fbfbb376d9dc49ad0a 307699: c517374961858ecd82d79b2cbd06438572c455c6 307695: 1b5d1cd5860f78b15e12c59078c93757fa762fa6 v: v3 --- [refs] | 2 +- trunk/fs/xfs/xfs_qm.c | 26 +++++++++++++++++++++----- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index 7337fdd41eba..ff7bbddc3141 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 8a00ebe4cfc90eda9ecb575ba97e22021cd8cf70 +refs/heads/master: b4d05e3019692fc5a8c573fbce60de2d48c5b7a1 diff --git a/trunk/fs/xfs/xfs_qm.c b/trunk/fs/xfs/xfs_qm.c index 55c6afedc879..18ba438386ab 100644 --- a/trunk/fs/xfs/xfs_qm.c +++ b/trunk/fs/xfs/xfs_qm.c @@ -483,6 +483,23 @@ xfs_qm_dqattach_grouphint( xfs_dqunlock(udq); } +static bool +xfs_qm_need_dqattach( + struct xfs_inode *ip) +{ + struct xfs_mount *mp = ip->i_mount; + + if (!XFS_IS_QUOTA_RUNNING(mp)) + return false; + if (!XFS_IS_QUOTA_ON(mp)) + return false; + if (!XFS_NOT_DQATTACHED(mp, ip)) + return false; + if (ip->i_ino == mp->m_sb.sb_uquotino || + ip->i_ino == mp->m_sb.sb_gquotino) + return false; + return true; +} /* * Given a locked inode, attach dquot(s) to it, taking U/G/P-QUOTAON @@ -500,11 +517,7 @@ xfs_qm_dqattach_locked( uint nquotas = 0; int error = 0; - if (!XFS_IS_QUOTA_RUNNING(mp) || - !XFS_IS_QUOTA_ON(mp) || - !XFS_NOT_DQATTACHED(mp, ip) || - ip->i_ino == mp->m_sb.sb_uquotino || - ip->i_ino == mp->m_sb.sb_gquotino) + if (!xfs_qm_need_dqattach(ip)) return 0; ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL)); @@ -575,6 +588,9 @@ xfs_qm_dqattach( { int error; + if (!xfs_qm_need_dqattach(ip)) + return 0; + xfs_ilock(ip, XFS_ILOCK_EXCL); error = xfs_qm_dqattach_locked(ip, flags); xfs_iunlock(ip, XFS_ILOCK_EXCL);