From 22dfd6e96b4483617a62442ffda560f4e5819181 Mon Sep 17 00:00:00 2001 From: "Alexander.Boyko" Date: Tue, 17 Jun 2014 12:22:55 +0400 Subject: [PATCH] LU-5554 ptlrpc: race at req processing 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 Xyratex-bug-id: MRP-1888 Change-Id: I64d7c997976ff73956ebe97d7ea0775e0a54bc50 Reviewed-on: http://review.whamcloud.com/10735 Tested-by: Jenkins Tested-by: Maloo Reviewed-by: Niu Yawei Reviewed-by: Mike Pershin Reviewed-by: Oleg Drokin --- lustre/ptlrpc/client.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lustre/ptlrpc/client.c b/lustre/ptlrpc/client.c index ec92ea1..81d1478 100644 --- a/lustre/ptlrpc/client.c +++ b/lustre/ptlrpc/client.c @@ -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); -- 1.8.3.1