*
* This only can happen on client side.
*/
-static int ldlm_handle_cp_callback(struct ptlrpc_request *req,
+static void ldlm_handle_cp_callback(struct ptlrpc_request *req,
struct ldlm_namespace *ns,
struct ldlm_request *dlm_req,
struct ldlm_lock *lock)
}
lock_res_and_lock(lock);
- if (ldlm_is_failed(lock)) {
- unlock_res_and_lock(lock);
- LDLM_LOCK_RELEASE(lock);
- RETURN(-EINVAL);
- }
if (ldlm_is_destroyed(lock) ||
lock->l_granted_mode == lock->l_req_mode) {
/* bug 11300: the lock has already been granted */
wake_up(&lock->l_waitq);
}
LDLM_LOCK_RELEASE(lock);
-
- return 0;
}
/**
ldlm_handle_bl_callback(ns, &dlm_req->lock_desc, lock);
break;
case LDLM_CP_CALLBACK:
- CDEBUG(D_INODE, "completion ast\n");
- req_capsule_extend(&req->rq_pill, &RQF_LDLM_CP_CALLBACK);
- rc = ldlm_handle_cp_callback(req, ns, dlm_req, lock);
- ldlm_callback_reply(req, rc);
+ CDEBUG(D_INODE, "completion ast\n");
+ req_capsule_extend(&req->rq_pill, &RQF_LDLM_CP_CALLBACK);
+ ldlm_callback_reply(req, 0);
+ ldlm_handle_cp_callback(req, ns, dlm_req, lock);
break;
case LDLM_GL_CALLBACK:
CDEBUG(D_INODE, "glimpse ast\n");