+11
−0
+3
−0
+447
−57
+3
−0
Loading
RDMA QP is attempted to recover after IBV_EVENT_QP_FATAL event is received from IBV asynchronous event API. RDMA QP is put into ERROR state and is not processing any inbound requests. The outstanding requests are only allowed to COMPLETED and FREE states, no outbound transfers are performed. IBV_EVENT_QP_LAST_WQE_REACHED or IBV_EVENT_SQ_DRAINED event is expected to follow IBV_EVENT_QP_FATAL, giving a go to draining of all outstanding requests and freeing the associated resources. The requests executed by block layer are gracefully allowed to complete, but no outbound transfers are made. Note, outstanding requests can not be reliably completed through polling the CQ, as WC's with failure status might not have all the fields valid. The failed WC's are dropped and the outstanding requests are fetched from the appropriate state's linked list. QP recovery is triggered when there is no more outstanding requests. If QP recovery is completed succesfully, the RDMA QP is put back into ACTIVE state, the QP disconnect is triggered otherwise. Change-Id: I45ee7feea067f80ccc6402518990014d691fbda3 Signed-off-by:Philipp Skadorov <philipp.skadorov@wdc.com> Reviewed-on: https://review.gerrithub.io/416879 Chandler-Test-Pool: SPDK Automated Test System <sys_sgsw@intel.com> Reviewed-by:
Ben Walker <benjamin.walker@intel.com> Tested-by:
SPDK CI Jenkins <sys_sgci@intel.com>