nvme_rdma: Call disconnected_qpair_cb when qpair is in disconnected_qpairs list

We want to call disconnected_qpairs_cb only if qpair is actually
disconnected. When we disconnect qpair asynchronously, for qpairs in
the group->disconnected_qpairs list, we want to poll them until
actually disconnected and then call disconnected_qpairs_cb for them.

As a preparation, call disconnected_qpair_cb only for qpairs which is
in the group->disconnected_qpairs list.

For TCP and PCIe transports, disconnecting qpair will continue to be
synchronous for now.

So we change only RDMA transport.

Signed-off-by: Shuhei Matsumoto <smatsumoto@nvidia.com>
Change-Id: Ifaf6157e1e02fa13f52a66409c9e60fc814d71dd
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/11495
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Community-CI: Mellanox Build Bot
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
This commit is contained in:
Shuhei Matsumoto 2022-02-10 11:06:58 +09:00 committed by Tomasz Zawadzki
parent 0fba8dc8cb
commit 486f46e867

View File

@ -2751,7 +2751,6 @@ nvme_rdma_poll_group_process_completions(struct spdk_nvme_transport_poll_group *
if (spdk_unlikely(qpair->transport_failure_reason != SPDK_NVME_QPAIR_FAILURE_NONE)) { if (spdk_unlikely(qpair->transport_failure_reason != SPDK_NVME_QPAIR_FAILURE_NONE)) {
nvme_rdma_fail_qpair(qpair, 0); nvme_rdma_fail_qpair(qpair, 0);
disconnected_qpair_cb(qpair, tgroup->group->ctx);
continue; continue;
} }
num_qpairs++; num_qpairs++;