Details
-
Improvement
-
Resolution: Fixed
-
Minor
-
Lustre 2.13.0
-
None
-
9223372036854775807
Description
The PtlRPC state machine relies on flags in the ptlrpc_request structure to transition from one request state to another. When a request is in the RQ_PHASE_UNREG_RPC state there are three flags relevant to the request's ability to transition.
From ptlrpc_check_set():
if (req->rq_phase == RQ_PHASE_UNREG_RPC && ptlrpc_client_recv_or_unlink(req)) continue;
and from ptlrpc_client_recv_or_unlink():
rc = !req->rq_req_unlinked || !req->rq_reply_unlinked || req->rq_receiving_reply;
None of those three flags are printed by the DEBUG_REQ_FLAGS macro. Historically this has made it a little more difficult to troubleshoot bugs resulting in RPCs that are stuck in the unregistering state. Those flags should be added to the macro.