From e749c115c63fe12e4a17ab763453425c94bf2382 Mon Sep 17 00:00:00 2001 From: Evgeniy Kochetov Date: Mon, 9 Dec 2019 13:32:29 +0000 Subject: [PATCH] nvme/rdma: Fix error return code in nvme_rdma_register_rsps nvme_rdma_register_rsps returned ENOMEM for all failure cases. All of them are not directly related to shortage of memory. Every point of failure now sets relevant return code. Signed-off-by: Evgeniy Kochetov Signed-off-by: Sasha Kotchubievsky Signed-off-by: Alexey Marchuk Change-Id: Ia340f6c6fd3a68d8c34acfefc2c9224ffcdcad3f Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/477302 Tested-by: SPDK CI Jenkins Reviewed-by: Seth Howell Reviewed-by: Shuhei Matsumoto Reviewed-by: Tomasz Zawadzki Community-CI: SPDK CI Jenkins --- lib/nvme/nvme_rdma.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/lib/nvme/nvme_rdma.c b/lib/nvme/nvme_rdma.c index 1b0773e08..00852c2d2 100644 --- a/lib/nvme/nvme_rdma.c +++ b/lib/nvme/nvme_rdma.c @@ -667,12 +667,13 @@ fail: static int nvme_rdma_register_rsps(struct nvme_rdma_qpair *rqpair) { - int i; + int i, rc; rqpair->rsp_mr = rdma_reg_msgs(rqpair->cm_id, rqpair->rsps, rqpair->num_entries * sizeof(*rqpair->rsps)); if (rqpair->rsp_mr == NULL) { - SPDK_ERRLOG("Unable to register rsp_mr\n"); + rc = -errno; + SPDK_ERRLOG("Unable to register rsp_mr: %s (%d)\n", spdk_strerror(errno), errno); goto fail; } @@ -688,12 +689,14 @@ nvme_rdma_register_rsps(struct nvme_rdma_qpair *rqpair) rqpair->rsp_recv_wrs[i].sg_list = rsp_sgl; rqpair->rsp_recv_wrs[i].num_sge = 1; - if (nvme_rdma_post_recv(rqpair, i)) { + rc = nvme_rdma_post_recv(rqpair, i); + if (rc) { goto fail; } } - if (nvme_rdma_qpair_submit_recvs(rqpair)) { + rc = nvme_rdma_qpair_submit_recvs(rqpair); + if (rc) { goto fail; } @@ -701,7 +704,7 @@ nvme_rdma_register_rsps(struct nvme_rdma_qpair *rqpair) fail: nvme_rdma_unregister_rsps(rqpair); - return -ENOMEM; + return rc; } static void