From e1c9185005ed2a6b516f0e666640c8b1b675f3bb Mon Sep 17 00:00:00 2001 From: Seth Howell Date: Tue, 14 Apr 2020 14:41:11 -0700 Subject: [PATCH] lib/nvme: always call the transport disconnect function. The qpair states should be maintained at the generic level. Always going through the transport disconnect function is one step in that direction. Signed-off-by: Seth Howell Change-Id: I019b2b4a14fe192eff5293f918d633dde2c5400a Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1851 Community-CI: Mellanox Build Bot Community-CI: Broadcom CI Tested-by: SPDK CI Jenkins Reviewed-by: Jim Harris Reviewed-by: Aleksey Marchuk Reviewed-by: Shuhei Matsumoto Reviewed-by: Ben Walker --- lib/nvme/nvme_rdma.c | 4 ++-- lib/nvme/nvme_tcp.c | 6 +++--- test/common/lib/nvme/common_stubs.h | 2 ++ test/unit/lib/nvme/nvme_rdma.c/nvme_rdma_ut.c | 3 --- 4 files changed, 7 insertions(+), 8 deletions(-) diff --git a/lib/nvme/nvme_rdma.c b/lib/nvme/nvme_rdma.c index 8f7b39573..0ea204aed 100644 --- a/lib/nvme/nvme_rdma.c +++ b/lib/nvme/nvme_rdma.c @@ -1688,7 +1688,7 @@ nvme_rdma_ctrlr_delete_io_qpair(struct spdk_nvme_ctrlr *ctrlr, struct spdk_nvme_ if (!qpair) { return -1; } - nvme_rdma_ctrlr_disconnect_qpair(ctrlr, qpair); + nvme_transport_ctrlr_disconnect_qpair(ctrlr, qpair); nvme_rdma_qpair_abort_reqs(qpair, 1); nvme_qpair_deinit(qpair); @@ -2100,7 +2100,7 @@ fail: } if (nvme_qpair_is_admin_queue(qpair)) { - nvme_rdma_ctrlr_disconnect_qpair(qpair->ctrlr, qpair); + nvme_transport_ctrlr_disconnect_qpair(qpair->ctrlr, qpair); } else { nvme_ctrlr_disconnect_qpair(qpair); } diff --git a/lib/nvme/nvme_tcp.c b/lib/nvme/nvme_tcp.c index fe7929d7c..60176a522 100644 --- a/lib/nvme/nvme_tcp.c +++ b/lib/nvme/nvme_tcp.c @@ -264,7 +264,7 @@ nvme_tcp_ctrlr_delete_io_qpair(struct spdk_nvme_ctrlr *ctrlr, struct spdk_nvme_q return -1; } - nvme_tcp_ctrlr_disconnect_qpair(ctrlr, qpair); + nvme_transport_ctrlr_disconnect_qpair(ctrlr, qpair); nvme_tcp_qpair_abort_reqs(qpair, 1); nvme_qpair_deinit(qpair); tqpair = nvme_tcp_qpair(qpair); @@ -305,7 +305,7 @@ _pdu_write_done(void *cb_arg, int err) TAILQ_REMOVE(&tqpair->send_queue, pdu, tailq); if (err != 0) { - nvme_tcp_ctrlr_disconnect_qpair(tqpair->qpair.ctrlr, &tqpair->qpair); + nvme_transport_ctrlr_disconnect_qpair(tqpair->qpair.ctrlr, &tqpair->qpair); return; } @@ -1438,7 +1438,7 @@ fail: qpair->transport_failure_reason = SPDK_NVME_QPAIR_FAILURE_UNKNOWN; if (nvme_qpair_is_admin_queue(qpair)) { - nvme_tcp_ctrlr_disconnect_qpair(qpair->ctrlr, qpair); + nvme_transport_ctrlr_disconnect_qpair(qpair->ctrlr, qpair); } else { nvme_ctrlr_disconnect_qpair(qpair); } diff --git a/test/common/lib/nvme/common_stubs.h b/test/common/lib/nvme/common_stubs.h index cca1a2046..4a2778055 100644 --- a/test/common/lib/nvme/common_stubs.h +++ b/test/common/lib/nvme/common_stubs.h @@ -110,3 +110,5 @@ DEFINE_STUB(nvme_fabric_ctrlr_scan, int, (struct spdk_nvme_probe_ctx *probe_ctx, bool direct_connect), 0); DEFINE_STUB(nvme_fabric_qpair_connect, int, (struct spdk_nvme_qpair *qpair, uint32_t num_entries), 0); +DEFINE_STUB_V(nvme_transport_ctrlr_disconnect_qpair, (struct spdk_nvme_ctrlr *ctrlr, + struct spdk_nvme_qpair *qpair)); diff --git a/test/unit/lib/nvme/nvme_rdma.c/nvme_rdma_ut.c b/test/unit/lib/nvme/nvme_rdma.c/nvme_rdma_ut.c index 10e85c484..ad61c649b 100644 --- a/test/unit/lib/nvme/nvme_rdma.c/nvme_rdma_ut.c +++ b/test/unit/lib/nvme/nvme_rdma.c/nvme_rdma_ut.c @@ -47,9 +47,6 @@ DEFINE_STUB(spdk_mem_map_alloc, struct spdk_mem_map *, (uint64_t default_transla const struct spdk_mem_map_ops *ops, void *cb_ctx), NULL); DEFINE_STUB_V(spdk_mem_map_free, (struct spdk_mem_map **pmap)); -DEFINE_STUB_V(nvme_transport_ctrlr_disconnect_qpair, (struct spdk_nvme_ctrlr *ctrlr, - struct spdk_nvme_qpair *qpair)); - /* used to mock out having to split an SGL over a memory region */ uint64_t g_mr_size; struct ibv_mr g_nvme_rdma_mr;