if (error)
return error;
+ mutex_lock(&dq->q_qlock);
cursor->id = dq->q_id + 1;
*dqpp = dq;
return 1;
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;
+ mutex_lock(&dq->q_qlock);
error = xqcheck_commit_dquot(xqc, dqtype, dq);
mutex_unlock(&dq->q_qlock);
xfs_qm_dqrele(dq);
/*
* Given the file system, id, and type (UDQUOT/GDQUOT/PDQUOT), return a
- * locked dquot, doing an allocation (if requested) as needed.
+ * dquot, doing an allocation (if requested) as needed.
*/
int
xfs_qm_dqget(
trace_xfs_dqget_miss(dqp);
found:
*O_dqpp = dqp;
- mutex_lock(&dqp->q_qlock);
return 0;
}
else if (error != 0)
break;
+ mutex_lock(&dqp->q_qlock);
if (!XFS_IS_DQUOT_UNINITIALIZED(dqp)) {
*dqpp = dqp;
return 0;
return error;
}
+ mutex_lock(&dqp->q_qlock);
error = xfs_dquot_attach_buf(NULL, dqp);
if (error)
goto out_unlock;
/*
* Get the ilock in the right order.
*/
- mutex_unlock(&uq->q_qlock);
lockflags = XFS_ILOCK_SHARED;
xfs_ilock(ip, lockflags);
} else {
ASSERT(error != -ENOENT);
goto error_rele;
}
- mutex_unlock(&gq->q_qlock);
lockflags = XFS_ILOCK_SHARED;
xfs_ilock(ip, lockflags);
} else {
ASSERT(error != -ENOENT);
goto error_rele;
}
- mutex_unlock(&pq->q_qlock);
lockflags = XFS_ILOCK_SHARED;
xfs_ilock(ip, lockflags);
} else {
struct xfs_dquot *dqp;
if (!xfs_qm_dqget(mp, ip->i_projid, XFS_DQTYPE_PROJ, false, &dqp)) {
+ mutex_lock(&dqp->q_qlock);
xfs_fill_statvfs_from_dquot(statp, ip, dqp);
mutex_unlock(&dqp->q_qlock);
xfs_qm_dqrele(dqp);
return error;
}
+ mutex_lock(&dqp->q_qlock);
defq = xfs_get_defquota(q, xfs_dquot_type(dqp));
mutex_unlock(&dqp->q_qlock);
* If everything's NULL, this dquot doesn't quite exist as far as
* our utility programs are concerned.
*/
+ mutex_lock(&dqp->q_qlock);
if (XFS_IS_DQUOT_UNINITIALIZED(dqp)) {
error = -ENOENT;
goto out_put;