diff --git a/lustre/include/lustre_dlm.h b/lustre/include/lustre_dlm.h index 4680fabd127ad1d64133ed7513869d8299304048..49dcd79bb8125666d51ae35437710692de027d40 100644 --- a/lustre/include/lustre_dlm.h +++ b/lustre/include/lustre_dlm.h @@ -609,11 +609,12 @@ do { \ struct ldlm_lock *_lock, *_next; \ int c = count; \ list_for_each_entry_safe(_lock, _next, head, member) { \ + if (c-- == 0) \ + break; \ list_del_init(&_lock->member); \ LDLM_LOCK_PUT(_lock); \ - if (--c == 0) \ - break; \ } \ + LASSERT(c <= 0); \ }) struct ldlm_lock *ldlm_lock_get(struct ldlm_lock *lock); diff --git a/lustre/ldlm/ldlm_request.c b/lustre/ldlm/ldlm_request.c index 6d4f6721c8a81cd7a525dc620990483987426e82..b5ec3de195aa5e2db166019f5bda026f163f2bfc 100644 --- a/lustre/ldlm/ldlm_request.c +++ b/lustre/ldlm/ldlm_request.c @@ -891,7 +891,7 @@ int ldlm_cli_cancel_req(struct obd_export *exp, struct list_head *cancels, if (imp == NULL || imp->imp_invalid) { CDEBUG(D_HA, "skipping cancel on invalid import %p\n", imp); - break; + RETURN(count); } req = ptlrpc_prep_req(imp, LUSTRE_DLM_VERSION, LDLM_CANCEL, 2,