Whamcloud - gitweb
Revert "LU-7791 ldlm: signal vs CP callback race"
[fs/lustre-release.git] / lustre / ldlm / ldlm_lockd.c
index 42d76b8..e848e5c 100644 (file)
@@ -1793,7 +1793,7 @@ void ldlm_handle_bl_callback(struct ldlm_namespace *ns,
  *
  * 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)
@@ -1837,11 +1837,6 @@ static int ldlm_handle_cp_callback(struct ptlrpc_request *req,
        }
 
        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 */
@@ -1921,8 +1916,6 @@ out:
                wake_up(&lock->l_waitq);
        }
        LDLM_LOCK_RELEASE(lock);
-
-       return 0;
 }
 
 /**
@@ -2329,10 +2322,10 @@ static int ldlm_callback_handler(struct ptlrpc_request *req)
                         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");