Commit b4d05e30 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Ben Myers
Browse files

xfs: avoid taking the ilock unnessecarily in xfs_qm_dqattach

Check if we actually need to attach a dquot before taking the ilock in
xfs_qm_dqattach.  This avoid superflous lock roundtrips for the common cases
of quota support compiled in but not activated on a filesystem and an
inode that already has the dquots attached.
Signed-off-by: default avatarChristoph Hellwig <>
Reviewed-by: default avatarMark Tinguely <>
Reviewed-by: default avatarDave Chinner <>
Signed-off-by: default avatarBen Myers <>
parent 8a00ebe4
......@@ -483,6 +483,23 @@ done:
static bool
struct xfs_inode *ip)
struct xfs_mount *mp = ip->i_mount;
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;
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);
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment