Whamcloud - gitweb
b=21938 wait and signal correct waitq
authorhongchao.zhang <Hongchao.Zhang@sun.com>
Thu, 27 May 2010 22:18:16 +0000 (06:18 +0800)
committerRobert Read <robert.read@oracle.com>
Wed, 2 Jun 2010 18:44:03 +0000 (11:44 -0700)
update patch to use req->rq_set_waitq instead of req->rq_reply_waitq

i=johann
i=robert.read

lustre/ptlrpc/client.c
lustre/ptlrpc/ptlrpcd.c

index 7802282..5833e80 100644 (file)
@@ -795,7 +795,11 @@ void ptlrpc_set_destroy(struct ptlrpc_request_set *set)
                         cfs_atomic_dec(&set->set_remaining);
                 }
 
+                cfs_spin_lock(&req->rq_lock);
                 req->rq_set = NULL;
+                req->rq_invalid_rqset = 0;
+                cfs_spin_unlock(&req->rq_lock);
+
                 ptlrpc_req_finished (req);
         }
 
index 225db05..aba0893 100644 (file)
@@ -147,7 +147,7 @@ int ptlrpcd_add_req(struct ptlrpc_request *req, enum ptlrpcd_scope scope)
 
                 timeout = cfs_time_seconds(5);
                 lwi = LWI_TIMEOUT(timeout, back_to_sleep, NULL);
-                l_wait_event(req->rq_reply_waitq, (req->rq_set == NULL), &lwi);
+                l_wait_event(req->rq_set_waitq, (req->rq_set == NULL), &lwi);
         } else if (req->rq_set) {
                 LASSERT(req->rq_phase == RQ_PHASE_NEW);
                 LASSERT(req->rq_send_state == LUSTRE_IMP_REPLAY);