From 7474fd4bd07e81f2304b1acccbcc93b0bcbf3006 Mon Sep 17 00:00:00 2001 From: Konrad Sztyber Date: Tue, 21 Dec 2021 10:15:31 +0100 Subject: [PATCH] nvmf/tcp: process NEED_BUFFER requests after aborting When aborting a request in a NEED_BUFFER state, we set it's completion status and remove it from the pending_buf_queue. Since it's no longer on that queue and there's no completion it's waiting for, we need to manually kick. Signed-off-by: Konrad Sztyber Change-Id: I1272d441aec3b3090cd8c143a2112a8a6866fcf0 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/10769 Community-CI: Broadcom CI Community-CI: Mellanox Build Bot Reviewed-by: Aleksey Marchuk Reviewed-by: Jim Harris Tested-by: SPDK CI Jenkins --- lib/nvmf/tcp.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/nvmf/tcp.c b/lib/nvmf/tcp.c index b8ab3d414..e5a8b6f0d 100644 --- a/lib/nvmf/tcp.c +++ b/lib/nvmf/tcp.c @@ -2950,6 +2950,8 @@ _nvmf_tcp_qpair_abort_request(void *ctx) struct spdk_nvmf_tcp_req, req); struct spdk_nvmf_tcp_qpair *tqpair = SPDK_CONTAINEROF(req->req_to_abort->qpair, struct spdk_nvmf_tcp_qpair, qpair); + struct spdk_nvmf_tcp_transport *ttransport = SPDK_CONTAINEROF(tqpair->qpair.transport, + struct spdk_nvmf_tcp_transport, transport); int rc; spdk_poller_unregister(&req->poller); @@ -2967,6 +2969,7 @@ _nvmf_tcp_qpair_abort_request(void *ctx) &tcp_req_to_abort->req, spdk_nvmf_request, buf_link); nvmf_tcp_req_set_abort_status(req, tcp_req_to_abort); + nvmf_tcp_req_process(ttransport, tcp_req_to_abort); break; case TCP_REQUEST_STATE_AWAITING_R2T_ACK: