nvmf/rdma: Submit recv to SRQ when AER is released
Currently we don't resubmit receive request associated with AER request to SRQ. This leads to reducing of SRQ elements and may lead to non responsive NVMF target. Fixes #1507 Signed-off-by: Alexey Marchuk <alexeymar@mellanox.com> Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/3558 (master) (cherry picked from commit a3f89d62eb495cf5449ffcd926974da08ace8181) Change-Id: Ie96f8c4be0202ae973e561ebe5ea28688a6a3b72 Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/3599 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com>
This commit is contained in:
parent
fda3aafd14
commit
9866a31b49
@ -3567,6 +3567,23 @@ nvmf_rdma_request_free(struct spdk_nvmf_request *req)
|
||||
struct spdk_nvmf_rdma_request *rdma_req = SPDK_CONTAINEROF(req, struct spdk_nvmf_rdma_request, req);
|
||||
struct spdk_nvmf_rdma_transport *rtransport = SPDK_CONTAINEROF(req->qpair->transport,
|
||||
struct spdk_nvmf_rdma_transport, transport);
|
||||
struct spdk_nvmf_rdma_qpair *rqpair = SPDK_CONTAINEROF(rdma_req->req.qpair,
|
||||
struct spdk_nvmf_rdma_qpair, qpair);
|
||||
|
||||
/*
|
||||
* AER requests are freed when a qpair is destroyed. The recv corresponding to that request
|
||||
* needs to be returned to the shared receive queue or the poll group will eventually be
|
||||
* starved of RECV structures.
|
||||
*/
|
||||
if (rqpair->srq && rdma_req->recv) {
|
||||
int rc;
|
||||
struct ibv_recv_wr *bad_recv_wr;
|
||||
|
||||
rc = ibv_post_srq_recv(rqpair->srq, &rdma_req->recv->wr, &bad_recv_wr);
|
||||
if (rc) {
|
||||
SPDK_ERRLOG("Unable to re-post rx descriptor\n");
|
||||
}
|
||||
}
|
||||
|
||||
_nvmf_rdma_request_free(rdma_req, rtransport);
|
||||
return 0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user