Whamcloud - gitweb
LU-8765 ptlrpc: update replay cursor when close during replay
[fs/lustre-release.git] / lustre / ptlrpc / client.c
index 7bba405..27e4dca 100644 (file)
@@ -2731,13 +2731,18 @@ free_req:
                GOTO(out, 0);
 
        list_for_each_entry_safe(req, saved, &imp->imp_committed_list,
-                                    rq_replay_list) {
+                                rq_replay_list) {
                LASSERT(req->rq_transno != 0);
-               if (req->rq_import_generation < imp->imp_generation) {
-                       DEBUG_REQ(D_RPCTRACE, req, "free stale open request");
-                       ptlrpc_free_request(req);
-               } else if (!req->rq_replay) {
-                       DEBUG_REQ(D_RPCTRACE, req, "free closed open request");
+               if (req->rq_import_generation < imp->imp_generation ||
+                   !req->rq_replay) {
+                       DEBUG_REQ(D_RPCTRACE, req, "free %s open request",
+                                 req->rq_import_generation <
+                                 imp->imp_generation ? "stale" : "closed");
+
+                       if (imp->imp_replay_cursor == &req->rq_replay_list)
+                               imp->imp_replay_cursor =
+                                       req->rq_replay_list.next;
+
                        ptlrpc_free_request(req);
                }
        }