diff --git a/lustre/quota/quota_context.c b/lustre/quota/quota_context.c index 0df0344..cbe5a4d 100644 --- a/lustre/quota/quota_context.c +++ b/lustre/quota/quota_context.c @@ -238,12 +238,15 @@ check_cur_qunit(struct obd_device *obd, int ret = 0; ENTRY; - if (!ll_sb_has_quota_active(sb, QDATA_IS_GRP(qdata))) + if (!ll_sb_has_quota_active(sb, QDATA_IS_GRP(qdata))) { + CWARN("Quota isn't active\n"); RETURN(0); + } spin_lock(&qctxt->lqc_lock); if (!qctxt->lqc_valid){ spin_unlock(&qctxt->lqc_lock); + CWARN("Quota context isn't ready\n"); RETURN(0); } spin_unlock(&qctxt->lqc_lock); @@ -262,6 +265,7 @@ check_cur_qunit(struct obd_device *obd, ret = 0; else CERROR("can't get fs quota usage! (rc:%d)\n", ret); + CWARN("Quotactl failed\n"); GOTO(out, ret); } @@ -275,8 +279,10 @@ check_cur_qunit(struct obd_device *obd, /* ignore the no quota limit case; and it can avoid creating * unnecessary lqs for uid/gid */ - if (!limit) + if (!limit) { + CWARN("Quota no limit\n"); GOTO(out, ret = 0); + } lqs = quota_search_lqs(LQS_KEY(QDATA_IS_GRP(qdata), qdata->qd_id), qctxt, 0); @@ -333,14 +339,14 @@ check_cur_qunit(struct obd_device *obd, * That ongoing quota request will call this function again when * it returned b=18630 */ if (pending_write || record) { - CDEBUG(D_QUOTA, "delay quota release\n"); + CDEBUG(D_WARNING, "delay quota release\n"); ret = 0; } } if (ret > 0) quota_compute_lqs(qdata, lqs, 1, (ret == 1) ? 1 : 0); - CDEBUG(D_QUOTA, "type: %c, limit: "LPU64", usage: "LPU64 + CDEBUG(D_WARNING, "type: %c, limit: "LPU64", usage: "LPU64 ", pending_write: "LPU64", record: %lld" ", qunit_sz: %lu, tune_sz: %lu, ret: %d.\n", QDATA_IS_BLK(qdata) ? 'b' : 'i', limit, usage, pending_write, @@ -1153,8 +1159,11 @@ qctxt_adjust_qunit(struct obd_device *obd, struct lustre_quota_ctxt *qctxt, * checked the QB/QI_SET). */ if (!wait && - quota_is_set(obd, uid, gid, isblk ? QB_SET : QI_SET) == 0) + quota_is_set(obd, uid, gid, isblk ? QB_SET : QI_SET) == 0) { + CWARN("Quota isn't set. uid=%u, gid=%u, wait=%d\n", + uid, gid, wait); RETURN(0); + } for (i = 0; i < MAXQUOTAS; i++) { qdata[i].qd_id = id[i]; @@ -1164,18 +1173,21 @@ qctxt_adjust_qunit(struct obd_device *obd, struct lustre_quota_ctxt *qctxt, qdata[i].qd_count = 0; rc = check_cur_qunit(obd, qctxt, &qdata[i]); + CWARN("Quota check_cur_qunit return %d\n", rc); if (rc > 0) { int opc; /* need acquire or release */ opc = rc == 1 ? QUOTA_DQACQ : QUOTA_DQREL; rc = schedule_dqacq(obd, qctxt, &qdata[i], opc, wait,oti); + CWARN("Quota schedule dqacq return %d\n", rc); if (rc < 0) RETURN(rc); } else if (wait == 1) { /* when wait equates 1, that means mds_quota_acquire * or filter_quota_acquire is calling it. */ rc = qctxt_wait_pending_dqacq(qctxt, id[i], i, isblk); + CWARN("Quota wait pending dqacq return %d\n", rc); if (rc < 0) RETURN(rc); } diff --git a/lustre/quota/quota_interface.c b/lustre/quota/quota_interface.c index 2778008..d01df8a 100644 --- a/lustre/quota/quota_interface.c +++ b/lustre/quota/quota_interface.c @@ -479,8 +479,8 @@ static int quota_chk_acq_common(struct obd_export *exp, unsigned int uid, cfs_time_current())) { CWARN("still haven't managed to acquire quota " "space from the quota master after %d " - "retries (err=%d, rc=%d)\n", - cycle, count_err - 1, rc); + "retries (uid=%u, gid=%u, err=%d, rc=%d)" + "\n", cycle, uid, gid, count_err - 1, rc); last_print = cfs_time_current(); } spin_unlock(&last_print_lock);