xfs: move q_qlock locking into xqcheck_compare_dquot

Instead of having both callers do it.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Carlos Maiolino <cem@kernel.org>
This commit is contained in:
Christoph Hellwig 2025-11-10 14:23:06 +01:00 committed by Carlos Maiolino
parent bfca8760f4
commit 7dd30acb4b
1 changed files with 3 additions and 8 deletions

View File

@ -563,6 +563,7 @@ xqcheck_compare_dquot(
return -ECANCELED;
}
mutex_lock(&dq->q_qlock);
mutex_lock(&xqc->lock);
error = xfarray_load_sparse(counts, dq->q_id, &xcdq);
if (error)
@ -589,7 +590,9 @@ xqcheck_compare_dquot(
xchk_set_incomplete(xqc->sc);
error = -ECANCELED;
}
out_unlock:
mutex_unlock(&xqc->lock);
mutex_unlock(&dq->q_qlock);
if (error)
return error;
@ -597,10 +600,6 @@ xqcheck_compare_dquot(
return -ECANCELED;
return 0;
out_unlock:
mutex_unlock(&xqc->lock);
return error;
}
/*
@ -635,9 +634,7 @@ xqcheck_walk_observations(
if (error)
return error;
mutex_lock(&dq->q_qlock);
error = xqcheck_compare_dquot(xqc, dqtype, dq);
mutex_unlock(&dq->q_qlock);
xfs_qm_dqrele(dq);
if (error)
return error;
@ -675,9 +672,7 @@ xqcheck_compare_dqtype(
/* Compare what we observed against the actual dquots. */
xchk_dqiter_init(&cursor, sc, dqtype);
while ((error = xchk_dquot_iter(&cursor, &dq)) == 1) {
mutex_lock(&dq->q_qlock);
error = xqcheck_compare_dquot(xqc, dqtype, dq);
mutex_unlock(&dq->q_qlock);
xfs_qm_dqrele(dq);
if (error)
break;