+78
−11
Loading
Replace nvme_fabric_qpair_connect() by nvme_fabric_qpair_connect_async() and nvme_fabric_qpair_connect_poll(). The following is a detail. Define state of the nvme_rdma_qpair and each rqpair holds it. Initialize rqpair->state by INVALID at nvme_rdma_ctrlr_create_qpair(). _nvme_rdma_ctrlr_connect_qpair() sets rqpair->state to FABRIC_CONNECT_SEND instead of calling nvme_fabric_qpair_connect(). Then the new function nvme_rdma_ctrlr_connect_qpair_poll() calls nvme_fabric_qpair_connect_async() at FABRIC_CONNECT_SEND and nvme_fabric_qpair_connect_poll() until it returns 0 at FABRIC_CONNECT_POLL. nvme_rdma_qpair_process_completions() or nvme_rdma_poll_group_process_completions() calls nvme_rdma_ctrlr_connect_qpair_poll() if qpair->state is CONECTING. This patter follows the TCP transport. Change-Id: I411f4fa8071cb5ea27581f3820eba9b02c731e4c Signed-off-by:Shuhei Matsumoto <smatsumoto@nvidia.com> Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/11334 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:
Aleksey Marchuk <alexeymar@mellanox.com> Reviewed-by:
Ben Walker <benjamin.walker@intel.com>