}
break;
case Q_SETQUOTA:
- qctxt_wait_pending_dqacq(&obd->u.obt.obt_qctxt,
+ /* currently, it is only used for nullifying the quota */
+ qctxt_wait_pending_dqacq(&obd->u.obt.obt_qctxt,
oqctl->qc_id, oqctl->qc_type, 1);
push_ctxt(&saved, &obd->obd_lvfs_ctxt, NULL);
LASSERT(oqctl->qc_dqblk.dqb_bsoftlimit == 0);
/* There might be a pending dqacq/dqrel (which is going to
- * clear stale limits on slave). we should wait for it's
+ * clear stale limits on slave). we should wait for it's
* completion then initialize limits */
- qctxt_wait_pending_dqacq(&obd->u.obt.obt_qctxt,
+ qctxt_wait_pending_dqacq(&obd->u.obt.obt_qctxt,
oqctl->qc_id, oqctl->qc_type, 1);
if (!oqctl->qc_dqblk.dqb_bhardlimit)
goto adjust;
-
+
LASSERT(oqctl->qc_dqblk.dqb_bhardlimit == MIN_QLIMIT);
push_ctxt(&saved, &obd->obd_lvfs_ctxt, NULL);
rc = fsfilt_quotactl(obd, obd->u.obt.obt_sb, oqctl);
rc = qctxt_adjust_qunit(obd, &obd->u.obt.obt_qctxt,
uid, gid, 1, 0);
+ if (rc == -EDQUOT || rc == -EBUSY) {
+ CDEBUG(D_QUOTA, "rc: %d.\n", rc);
+ rc = 0;
+ }
+
break;
}
default:
struct obd_device *obd = class_exp2obd(exp);
struct lov_obd *lov = &obd->u.lov;
__u64 curspace = 0;
- __u32 bhardlimit = 0;
+ __u64 bhardlimit = 0;
int i, rc = 0;
ENTRY;