Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

xfs: simplify xfs_qm_detach_gdquots



There is no reason to drop qi_dqlist_lock around calls to xfs_qm_dqrele
because the free list lock now nests inside qi_dqlist_lock and the
dquot lock.

Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarDave Chinner <dchinner@redhat.com>
Signed-off-by: default avatarBen Myers <bpm@sgi.com>
parent 093019cf
Loading
Loading
Loading
Loading
+5 −17
Original line number Diff line number Diff line
@@ -449,7 +449,6 @@ xfs_qm_detach_gdquots(
{
	struct xfs_quotainfo	*q = mp->m_quotainfo;
	struct xfs_dquot	*dqp, *gdqp;
	int			nrecl;

 again:
	ASSERT(mutex_is_locked(&q->qi_dqlist_lock));
@@ -462,25 +461,14 @@ xfs_qm_detach_gdquots(
			mutex_lock(&q->qi_dqlist_lock);
			goto again;
		}
		if ((gdqp = dqp->q_gdquot)) {
			xfs_dqlock(gdqp);

		gdqp = dqp->q_gdquot;
		if (gdqp)
			dqp->q_gdquot = NULL;
		}
		xfs_dqunlock(dqp);

		if (gdqp) {
			/*
			 * Can't hold the mplist lock across a dqput.
			 * XXXmust convert to marker based iterations here.
			 */
			nrecl = q->qi_dqreclaims;
			mutex_unlock(&q->qi_dqlist_lock);
			xfs_qm_dqput(gdqp);

			mutex_lock(&q->qi_dqlist_lock);
			if (nrecl != q->qi_dqreclaims)
				goto again;
		}
		if (gdqp)
			xfs_qm_dqrele(gdqp);
	}
}