* GPL HEADER END
*/
/*
- * Copyright (c) 2012, 2013, Intel Corporation.
+ * Copyright (c) 2012, 2016, Intel Corporation.
* Use is subject to license terms.
*
* Author: Johann Lombardi <johann.lombardi@intel.com>
/* kick off reintegration thread if not running already, if
* it's just local cancel (for stack clean up or eviction),
* don't re-trigger the reintegration. */
- if ((lock->l_flags & LDLM_FL_LOCAL_ONLY) == 0)
+ if (!ldlm_is_local_only(lock))
qsd_start_reint_thread(qqi);
lu_ref_del(&qqi->qqi_reference, "ast_data_get", lock);
break;
}
default:
- LASSERTF(0, "invalid flags for blocking ast %d", flag);
+ LASSERTF(0, "invalid flags for blocking ast %d\n", flag);
}
RETURN(rc);
/* valid race */
GOTO(out, rc = -ELDLM_NO_LOCK_DATA);
- CDEBUG(D_QUOTA, "%s: glimpse on glb quota locks, id:"LPU64" ver:"LPU64
- " hard:" LPU64" soft:"LPU64"\n", qqi->qqi_qsd->qsd_svname,
+ CDEBUG(D_QUOTA, "%s: glimpse on glb quota locks, id:%llu ver:%llu"
+ " hard:" "%llu soft:%llu\n", qqi->qqi_qsd->qsd_svname,
desc->gl_id.qid_uid, desc->gl_ver, desc->gl_hardlimit,
desc->gl_softlimit);
if (desc->gl_ver == 0) {
- CERROR("%s: invalid global index version "LPU64"\n",
+ CERROR("%s: invalid global index version %llu\n",
qqi->qqi_qsd->qsd_svname, desc->gl_ver);
GOTO(out_qqi, rc = -EINVAL);
}
case LDLM_CB_CANCELING: {
struct lu_env *env;
struct lquota_entry *lqe;
- bool rel = false;
- LDLM_DEBUG(lock, "canceling global quota lock");
+ LDLM_DEBUG(lock, "canceling ID quota lock");
lqe = qsd_id_ast_data_get(lock, true);
if (lqe == NULL)
break;
LQUOTA_DEBUG(lqe, "losing ID lock");
- /* just local cancel (for stack clean up or eviction), don't
- * release quota space in this case */
- if ((lock->l_flags & LDLM_FL_LOCAL_ONLY) != 0) {
- lqe_putref(lqe);
- break;
- }
-
- /* allocate environment */
- OBD_ALLOC_PTR(env);
- if (env == NULL) {
- lqe_putref(lqe);
- rc = -ENOMEM;
- break;
- }
-
- /* initialize environment */
- rc = lu_env_init(env, LCT_DT_THREAD);
- if (rc) {
- OBD_FREE_PTR(env);
- lqe_putref(lqe);
- break;
- }
-
ldlm_lock2handle(lock, &lockh);
lqe_write_lock(lqe);
if (lustre_handle_equal(&lockh, &lqe->lqe_lockh)) {
/* Clear lqe_lockh & reset qunit to 0 */
qsd_set_qunit(lqe, 0);
memset(&lqe->lqe_lockh, 0, sizeof(lqe->lqe_lockh));
- lqe->lqe_edquot = false;
- rel = true;
+ qsd_set_edquot(lqe, false);
}
lqe_write_unlock(lqe);
- /* If there is qqacq inflight, the release will be skipped
+ /* If there is dqacq inflight, the release will be skipped
* at this time, and triggered on dqacq completion later,
* which means there could be a short window that slave is
* holding spare grant wihtout per-ID lock. */
- if (rel)
+
+ /* don't release quota space for local cancel (stack clean
+ * up or eviction) */
+ if (!ldlm_is_local_only(lock)) {
+ /* allocate environment */
+ OBD_ALLOC_PTR(env);
+ if (env == NULL) {
+ lqe_putref(lqe);
+ rc = -ENOMEM;
+ break;
+ }
+
+ /* initialize environment */
+ rc = lu_env_init(env, LCT_DT_THREAD);
+ if (rc) {
+ OBD_FREE_PTR(env);
+ lqe_putref(lqe);
+ break;
+ }
+
rc = qsd_adjust(env, lqe);
+ lu_env_fini(env);
+ OBD_FREE_PTR(env);
+ }
+
/* release lqe reference grabbed by qsd_id_ast_data_get() */
lqe_putref(lqe);
- lu_env_fini(env);
- OBD_FREE_PTR(env);
break;
}
default:
- LASSERTF(0, "invalid flags for blocking ast %d", flag);
+ LASSERTF(0, "invalid flags for blocking ast %d\n", flag);
}
RETURN(rc);
{
struct ptlrpc_request *req = data;
struct lquota_entry *lqe;
- struct qsd_instance *qsd;
struct ldlm_gl_lquota_desc *desc;
struct lquota_lvb *lvb;
int rc;
/* valid race */
GOTO(out, rc = -ELDLM_NO_LOCK_DATA);
- LQUOTA_DEBUG(lqe, "glimpse on quota locks, new qunit:"LPU64,
+ LQUOTA_DEBUG(lqe, "glimpse on quota locks, new qunit:%llu",
desc->gl_qunit);
- qsd = lqe2qqi(lqe)->qqi_qsd;
-
lqe_write_lock(lqe);
lvb->lvb_id_rel = 0;
if (desc->gl_qunit != 0 && desc->gl_qunit != lqe->lqe_qunit) {
if (space > 0) {
if (lqe->lqe_pending_req > 0) {
LQUOTA_DEBUG(lqe, "request in flight, postpone "
- "release of "LPD64, space);
+ "release of %lld", space);
lvb->lvb_id_may_rel = space;
} else {
lqe->lqe_pending_req++;
/* release quota space in glimpse reply */
- LQUOTA_DEBUG(lqe, "releasing "LPD64, space);
+ LQUOTA_DEBUG(lqe, "releasing %lld", space);
lqe->lqe_granted -= space;
lvb->lvb_id_rel = space;
}
}
- lqe->lqe_edquot = !!(desc->gl_flags & LQUOTA_FL_EDQUOT);
+ qsd_set_edquot(lqe, !!(desc->gl_flags & LQUOTA_FL_EDQUOT));
lqe_write_unlock(lqe);
if (wakeup)
if (lustre_handle_is_used(&qti->qti_lockh)) {
memset(&lqe->lqe_lockh, 0, sizeof(lqe->lqe_lockh));
qsd_set_qunit(lqe, 0);
- lqe->lqe_edquot = false;
+ qsd_set_edquot(lqe, false);
}
lqe_write_unlock(lqe);