summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2025-11-10 14:23:06 +0100
committerCarlos Maiolino <cem@kernel.org>2025-11-11 11:45:58 +0100
commit7dd30acb4b3724ec4ecad1a6e2e19a33c0f0ace4 (patch)
tree4a48fc25c0cde8cfb3c9561046c8c115db4dcf0f
parentbfca8760f47ecda61441950babbea6f79a51b377 (diff)
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>
-rw-r--r--fs/xfs/scrub/quotacheck.c11
1 files changed, 3 insertions, 8 deletions
diff --git a/fs/xfs/scrub/quotacheck.c b/fs/xfs/scrub/quotacheck.c
index 20220afd90f1..d412a8359784 100644
--- a/fs/xfs/scrub/quotacheck.c
+++ b/fs/xfs/scrub/quotacheck.c
@@ -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;