From 1399a42bbc7002dd0eae6e52ca7ddb0b5a80ac96 Mon Sep 17 00:00:00 2001 From: Seth Howell Date: Wed, 2 Oct 2019 14:06:41 -0700 Subject: [PATCH] nvme_rdma: put requests when ibv_post_send fails. Leaving these on the stack outstanding list can cause unnecessary buildup. If we fail to post the request to ibv, then the upper layer request will be freed immediately for reuse, but we will keep that request in the outstanding queue at the RDMA layer. Change-Id: Ib422dc9fcb50344ce7c01749f3e20ea9310fd5cb Signed-off-by: Seth Howell Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/470255 Reviewed-by: Jim Harris Reviewed-by: Paul Luse Reviewed-by: Ben Walker Reviewed-by: Alexey Marchuk Tested-by: SPDK CI Jenkins --- lib/nvme/nvme_rdma.c | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/nvme/nvme_rdma.c b/lib/nvme/nvme_rdma.c index 8b5f5f4fb..db03be549 100644 --- a/lib/nvme/nvme_rdma.c +++ b/lib/nvme/nvme_rdma.c @@ -1775,6 +1775,7 @@ nvme_rdma_qpair_submit_request(struct spdk_nvme_qpair *qpair, rc = ibv_post_send(rqpair->cm_id->qp, wr, &bad_wr); if (rc) { SPDK_ERRLOG("Failure posting rdma send for NVMf completion: %d (%s)\n", rc, spdk_strerror(rc)); + nvme_rdma_req_put(rqpair, rdma_req); } return rc;