Whamcloud - gitweb
LU-5554 ptlrpc: race at req processing 35/10735/7
authorAlexander.Boyko <alexander_boyko@xyratex.com>
Tue, 17 Jun 2014 08:22:55 +0000 (12:22 +0400)
committerOleg Drokin <oleg.drokin@intel.com>
Sun, 9 Aug 2015 23:36:14 +0000 (23:36 +0000)
First commit 56e5a6bb4fc0329092f85016b8664da0b6ffa8a8
decrease race window, but does not remove it. Disable rq_resend
right after MSG_REPLAY flag set. Import lock protects two threads
from race between set/clear MSG_REPLAY and rq_resend flags.

Signed-off-by: Alexander Boyko <alexander_boyko@xyratex.com>
Xyratex-bug-id: MRP-1888
Change-Id: I64d7c997976ff73956ebe97d7ea0775e0a54bc50
Reviewed-on: http://review.whamcloud.com/10735
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Niu Yawei <yawei.niu@intel.com>
Reviewed-by: Mike Pershin <mike.pershin@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre/ptlrpc/client.c

index ec92ea1..81d1478 100644 (file)
@@ -2735,6 +2735,10 @@ void ptlrpc_retain_replayable_request(struct ptlrpc_request *req,
 
        lustre_msg_add_flags(req->rq_reqmsg, MSG_REPLAY);
 
+       spin_lock(&req->rq_lock);
+       req->rq_resend = 0;
+       spin_unlock(&req->rq_lock);
+
        LASSERT(imp->imp_replayable);
        /* Balanced in ptlrpc_free_committed, usually. */
        ptlrpc_request_addref(req);