diff --git a/lustre/ptlrpc/client.c b/lustre/ptlrpc/client.c
index fe9f6277f8286b7d53e7a2271ca69a4c65a70021..8540c9ff405a6307f776a2e867e7cdf9ab847f14 100644
--- a/lustre/ptlrpc/client.c
+++ b/lustre/ptlrpc/client.c
@@ -481,9 +481,6 @@ static int after_reply(struct ptlrpc_request *req)
                 RETURN(-EPROTO);
         }
 
-        /* Store transno in reqmsg for replay. */
-        req->rq_reqmsg->transno = req->rq_transno = req->rq_repmsg->transno;
-
         rc = ptlrpc_check_status(req);
 
         /* Either we've been evicted, or the server has failed for
@@ -500,6 +497,9 @@ static int after_reply(struct ptlrpc_request *req)
                 RETURN(rc);
         }
 
+        /* Store transno in reqmsg for replay. */
+        req->rq_reqmsg->transno = req->rq_transno = req->rq_repmsg->transno;
+
         if (req->rq_import->imp_replayable) {
                 spin_lock_irqsave(&imp->imp_lock, flags);
                 if (req->rq_replay || req->rq_transno != 0)