Commit b17e0ae7 authored by Seth Howell's avatar Seth Howell Committed by Ben Walker
Browse files

rdma: process pending reqs before destroying qp



This is an attempt to clean up requests sititng in the
waiting_for_buffer state before destroying it for good.

Change-Id: I8ae047e4d7fd01f30419ae346e4da49355dc033d
Signed-off-by: default avatarSeth Howell <seth.howell@intel.com>
Reviewed-on: https://review.gerrithub.io/c/440127


Chandler-Test-Pool: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: default avatarDarek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
parent e0280b11
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -1405,7 +1405,7 @@ spdk_nvmf_rdma_request_process(struct spdk_nvmf_rdma_transport *rtransport,

			TAILQ_REMOVE(&rqpair->incoming_queue, rdma_recv, link);

			if (rqpair->ibv_attr.qp_state == IBV_QPS_ERR) {
			if (rqpair->ibv_attr.qp_state == IBV_QPS_ERR  || rqpair->qpair.state != SPDK_NVMF_QPAIR_ACTIVE) {
				spdk_nvmf_rdma_request_set_state(rdma_req, RDMA_REQUEST_STATE_COMPLETED);
				break;
			}
@@ -2647,6 +2647,7 @@ spdk_nvmf_rdma_poller_poll(struct spdk_nvmf_rdma_transport *rtransport,
				SPDK_DEBUGLOG(SPDK_LOG_RDMA, "Drained QP RECV %u (%p)\n", rqpair->qpair.qid, rqpair);
				rqpair->disconnect_flags |= RDMA_QP_RECV_DRAINED;
				if (rqpair->disconnect_flags & RDMA_QP_SEND_DRAINED) {
					spdk_nvmf_rdma_qpair_process_pending(rtransport, rqpair, true);
					spdk_nvmf_rdma_qpair_destroy(rqpair);
				}
				/* Continue so that this does not trigger the disconnect path below. */
@@ -2657,6 +2658,7 @@ spdk_nvmf_rdma_poller_poll(struct spdk_nvmf_rdma_transport *rtransport,
				SPDK_DEBUGLOG(SPDK_LOG_RDMA, "Drained QP SEND %u (%p)\n", rqpair->qpair.qid, rqpair);
				rqpair->disconnect_flags |= RDMA_QP_SEND_DRAINED;
				if (rqpair->disconnect_flags & RDMA_QP_RECV_DRAINED) {
					spdk_nvmf_rdma_qpair_process_pending(rtransport, rqpair, true);
					spdk_nvmf_rdma_qpair_destroy(rqpair);
				}
				/* Continue so that this does not trigger the disconnect path below. */