Whamcloud - gitweb
Revert "LU-7791 ldlm: signal vs CP callback race" 98/19798/2
authorOleg Drokin <oleg.drokin@intel.com>
Tue, 26 Apr 2016 17:46:09 +0000 (17:46 +0000)
committerOleg Drokin <oleg.drokin@intel.com>
Mon, 2 May 2016 17:41:30 +0000 (17:41 +0000)
This causes frequent failures tracked in LU-8067

This reverts commit a880f385164547837a34df92acd6cdc8e9a9698d.

Change-Id: Ib247bb924dabe4635edd17f9a2dca391135f558f
Reviewed-on: http://review.whamcloud.com/19798
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
Tested-by: Oleg Drokin <oleg.drokin@intel.com>
Tested-by: Jenkins
lustre/include/obd_support.h
lustre/ldlm/ldlm_lockd.c
lustre/ldlm/ldlm_request.c
lustre/tests/sanityn.sh

index c26a25e..71b4792 100644 (file)
@@ -366,7 +366,6 @@ extern char obd_jobid_var[];
 #define OBD_FAIL_LDLM_SRV_GL_AST        0x326
 #define OBD_FAIL_LDLM_WATERMARK_LOW     0x327
 #define OBD_FAIL_LDLM_WATERMARK_HIGH    0x328
-#define OBD_FAIL_LDLM_PAUSE_CANCEL_LOCAL 0x329
 
 /* LOCKLESS IO */
 #define OBD_FAIL_LDLM_SET_CONTENTION     0x385
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");
index 1d61fed..1e2a6cd 100644 (file)
@@ -1110,10 +1110,7 @@ static __u64 ldlm_cli_cancel_local(struct ldlm_lock *lock)
         if (lock->l_conn_export) {
                 bool local_only;
 
-               LDLM_DEBUG(lock, "client-side cancel");
-               OBD_FAIL_TIMEOUT(OBD_FAIL_LDLM_PAUSE_CANCEL_LOCAL,
-                                cfs_fail_val);
-
+                LDLM_DEBUG(lock, "client-side cancel");
                 /* Set this flag to prevent others from getting new references*/
                 lock_res_and_lock(lock);
                ldlm_set_cbpending(lock);
index 6b00d2f..096bebc 100644 (file)
@@ -3567,40 +3567,6 @@ test_92() {
 }
 run_test 92 "create remote directory under orphan directory"
 
-test_93() {
-       dd if=/dev/zero of=$DIR2/$tfile bs=4k count=2 conv=fsync
-
-       local before=$(date +%s)
-       local evict
-
-       $LCTL mark write
-#define OBD_FAIL_LDLM_PAUSE_CANCEL       0x312
-       $LCTL set_param fail_val=5 fail_loc=0x80000312
-       dd if=/dev/zero of=$DIR/$tfile conv=notrunc oflag=append bs=4k count=1 &
-       local pid=$!
-       sleep 2
-
-#define OBD_FAIL_LDLM_PAUSE_CANCEL_LOCAL 0x329
-       $LCTL set_param fail_val=6 fail_loc=0x80000329
-       $LCTL mark kill $pid
-       kill -ALRM $pid
-
-       dd if=/dev/zero of=$DIR2/$tfile conv=notrunc oflag=append bs=4k count=1
-
-       wait $pid
-       dd if=/dev/zero of=$DIR/$tfile bs=4k count=1 conv=fsync
-
-       evict=$(do_facet client $LCTL get_param \
-               osc.$FSNAME-OST*-osc-*/state | \
-           awk -F"[ [,]" '/EVICTED ]$/ { if (t<$5) {t=$5;} } END { print t }')
-
-       [ -z "$evict" ] || [[ $evict -le $before ]] ||
-               (do_facet client $LCTL get_param \
-                       osc.$FSNAME-OST*-osc-*/state;
-                   error "eviction happened: $evict before:$before")
-}
-run_test 93 "signal vs CP callback race"
-
 log "cleanup: ======================================================"
 
 # kill and wait in each test only guarentee script finish, but command in script