if (rc) {
CERROR("can't read dquot from admin quotafile! "
"(rc:%d)\n", rc);
- lustre_dqput(dquot);
+ free_dquot(dquot);
RETURN(ERR_PTR(rc));
} else {
cfs_write_lock(&dquot_hash_lock);
if (OBD_FAIL_CHECK(OBD_FAIL_OBD_DQACQ))
RETURN(-EIO);
+ if (!ll_sb_has_quota_active(qctxt->lqc_sb,
+ QDATA_IS_GRP(qdata) ? GRPQUOTA : USRQUOTA))
+ RETURN(-EIO);
+
lqs = quota_search_lqs(LQS_KEY(QDATA_IS_GRP(qdata), qdata->qd_id),
qctxt, 0);
if (lqs == NULL)
EXIT;
out:
+ CDEBUG(D_QUOTA, "%s: quotaoff type:flags:rc %u:%lu:%d\n",
+ obd->obd_name, oqctl->qc_type, qctxt->lqc_flags, rc);
cfs_up_write(&mds->mds_qonoff_sem);
pop_ctxt(&saved, &obd->obd_lvfs_ctxt, NULL);
return rc ? : (rc1 ? : rc2);
data.obd = obd;
cfs_init_completion(&data.comp);
- rc = cfs_kernel_thread(qmaster_recovery_main, &data,
- CLONE_VM|CLONE_FILES);
+ rc = cfs_create_thread(qmaster_recovery_main, &data,
+ CFS_DAEMON_FLAGS);
if (rc < 0)
CERROR("%s: cannot start quota recovery thread: rc %d\n",
obd->obd_name, rc);