diff --git a/lib/nvme/nvme_rdma.c b/lib/nvme/nvme_rdma.c index 62eb7472e..2c2936a8b 100644 --- a/lib/nvme/nvme_rdma.c +++ b/lib/nvme/nvme_rdma.c @@ -1994,6 +1994,8 @@ nvme_rdma_qpair_destroy(struct nvme_rdma_qpair *rqpair) } } +static void nvme_rdma_qpair_abort_reqs(struct spdk_nvme_qpair *qpair, uint32_t dnr); + static int nvme_rdma_qpair_disconnected(struct nvme_rdma_qpair *rqpair, int ret) { @@ -2001,6 +2003,8 @@ nvme_rdma_qpair_disconnected(struct nvme_rdma_qpair *rqpair, int ret) nvme_rdma_qpair_destroy(rqpair); + nvme_rdma_qpair_abort_reqs(&rqpair->qpair, 0); + if (ret) { SPDK_DEBUGLOG(nvme, "Target did not respond to qpair disconnect.\n"); goto quiet; @@ -2178,8 +2182,6 @@ nvme_rdma_stale_conn_retry(struct nvme_rdma_qpair *rqpair) return 0; } -static void nvme_rdma_qpair_abort_reqs(struct spdk_nvme_qpair *qpair, uint32_t dnr); - static int nvme_rdma_ctrlr_delete_io_qpair(struct spdk_nvme_ctrlr *ctrlr, struct spdk_nvme_qpair *qpair) { diff --git a/lib/nvme/nvme_tcp.c b/lib/nvme/nvme_tcp.c index 3306e6eba..d1d35e9b6 100644 --- a/lib/nvme/nvme_tcp.c +++ b/lib/nvme/nvme_tcp.c @@ -320,6 +320,8 @@ fail: return -ENOMEM; } +static void nvme_tcp_qpair_abort_reqs(struct spdk_nvme_qpair *qpair, uint32_t dnr); + static void nvme_tcp_ctrlr_disconnect_qpair(struct spdk_nvme_ctrlr *ctrlr, struct spdk_nvme_qpair *qpair) { @@ -351,11 +353,10 @@ nvme_tcp_ctrlr_disconnect_qpair(struct spdk_nvme_ctrlr *ctrlr, struct spdk_nvme_ TAILQ_REMOVE(&tqpair->send_queue, pdu, tailq); } + nvme_tcp_qpair_abort_reqs(qpair, 0); nvme_transport_ctrlr_disconnect_qpair_done(qpair); } -static void nvme_tcp_qpair_abort_reqs(struct spdk_nvme_qpair *qpair, uint32_t dnr); - static int nvme_tcp_ctrlr_delete_io_qpair(struct spdk_nvme_ctrlr *ctrlr, struct spdk_nvme_qpair *qpair) { diff --git a/lib/nvme/nvme_transport.c b/lib/nvme/nvme_transport.c index 29cc2e037..e8e91acc2 100644 --- a/lib/nvme/nvme_transport.c +++ b/lib/nvme/nvme_transport.c @@ -546,7 +546,6 @@ void nvme_transport_ctrlr_disconnect_qpair_done(struct spdk_nvme_qpair *qpair) { nvme_qpair_abort_all_queued_reqs(qpair, 0); - nvme_transport_qpair_abort_reqs(qpair, 0); nvme_qpair_set_state(qpair, NVME_QPAIR_DISCONNECTED); }