Details
-
Bug
-
Resolution: Fixed
-
Minor
-
None
-
None
-
3
-
9223372036854775807
Description
I see there is a defect about imp_replay_cursor which can lead to ptlrpc_replay_next() run into a dead loop:
- During replay, imp_replay_cursor moves to an open request A;
- Client close the file, so that rq_replay of the A open request is cleared;
- ptlrpc_replay_next() is called to continue replay, it calls ptlrpc_free_committed() to remove committed/closed request from replay/committed list, request A is removed from committed list; (The open request is still being held by the pending close request, so it's not freed);
- ptlrpc_replay_next() then try to move imp_replay_cursor to next, but the next is itself now, dead loop;
Landed for 2.10