From 3a1b2ec262436be1c0cf461bbfa0ab4e81ca8d40 Mon Sep 17 00:00:00 2001 From: Jim Harris Date: Mon, 6 May 2019 14:52:33 -0700 Subject: [PATCH] nvme/rdma: alloc req/rsp during construct (not connect) This moves us towards not freeing and reallocating this memory if and when we reconnect the qpair. Signed-off-by: Jim Harris Change-Id: Ic20d3c221442f6206d161760a8bfa7f9b8989d4c Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/453479 Tested-by: SPDK CI Jenkins Reviewed-by: Changpeng Liu Reviewed-by: Ben Walker Reviewed-by: Shuhei Matsumoto --- lib/nvme/nvme_rdma.c | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/lib/nvme/nvme_rdma.c b/lib/nvme/nvme_rdma.c index 99c01a32d..d04aeca0a 100644 --- a/lib/nvme/nvme_rdma.c +++ b/lib/nvme/nvme_rdma.c @@ -871,14 +871,6 @@ nvme_rdma_qpair_connect(struct nvme_rdma_qpair *rqpair) return -1; } - rc = nvme_rdma_alloc_reqs(rqpair); - SPDK_DEBUGLOG(SPDK_LOG_NVME, "rc =%d\n", rc); - if (rc) { - SPDK_ERRLOG("Unable to allocate rqpair RDMA requests\n"); - return -1; - } - SPDK_DEBUGLOG(SPDK_LOG_NVME, "RDMA requests allocated\n"); - rc = nvme_rdma_register_reqs(rqpair); SPDK_DEBUGLOG(SPDK_LOG_NVME, "rc =%d\n", rc); if (rc) { @@ -887,14 +879,6 @@ nvme_rdma_qpair_connect(struct nvme_rdma_qpair *rqpair) } SPDK_DEBUGLOG(SPDK_LOG_NVME, "RDMA requests registered\n"); - rc = nvme_rdma_alloc_rsps(rqpair); - SPDK_DEBUGLOG(SPDK_LOG_NVME, "rc =%d\n", rc); - if (rc < 0) { - SPDK_ERRLOG("Unable to allocate rqpair RDMA responses\n"); - return -1; - } - SPDK_DEBUGLOG(SPDK_LOG_NVME, "RDMA responses allocated\n"); - rc = nvme_rdma_register_rsps(rqpair); SPDK_DEBUGLOG(SPDK_LOG_NVME, "rc =%d\n", rc); if (rc < 0) { @@ -1317,6 +1301,22 @@ nvme_rdma_ctrlr_create_qpair(struct spdk_nvme_ctrlr *ctrlr, return NULL; } + rc = nvme_rdma_alloc_reqs(rqpair); + SPDK_DEBUGLOG(SPDK_LOG_NVME, "rc =%d\n", rc); + if (rc) { + SPDK_ERRLOG("Unable to allocate rqpair RDMA requests\n"); + return NULL; + } + SPDK_DEBUGLOG(SPDK_LOG_NVME, "RDMA requests allocated\n"); + + rc = nvme_rdma_alloc_rsps(rqpair); + SPDK_DEBUGLOG(SPDK_LOG_NVME, "rc =%d\n", rc); + if (rc < 0) { + SPDK_ERRLOG("Unable to allocate rqpair RDMA responses\n"); + return NULL; + } + SPDK_DEBUGLOG(SPDK_LOG_NVME, "RDMA responses allocated\n"); + rc = nvme_rdma_qpair_connect(rqpair); if (rc < 0) { nvme_rdma_qpair_destroy(qpair);