From ea02571d0f36912b72bd79f5fa1180f5a933ec2b Mon Sep 17 00:00:00 2001 From: Ben Walker Date: Tue, 16 Jun 2020 09:30:33 -0700 Subject: [PATCH] nvmf/fc: Fix issue with multiple AERs and aborts Recently support for multiple AERs was added to lib/nvmf, but the fc transport was not updated. Signed-off-by: Ben Walker Change-Id: I1755fdc4a6db2c6ce751c34fe5ad1d43e30298f8 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/2912 Tested-by: SPDK CI Jenkins Community-CI: Broadcom CI Community-CI: Mellanox Build Bot Reviewed-by: Anil Veerabhadrappa Reviewed-by: Shuhei Matsumoto Reviewed-by: Tomasz Zawadzki --- lib/nvmf/fc.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/nvmf/fc.c b/lib/nvmf/fc.c index b375ed343..5b5b5f452 100644 --- a/lib/nvmf/fc.c +++ b/lib/nvmf/fc.c @@ -1146,6 +1146,7 @@ nvmf_fc_req_bdev_abort(void *arg1) { struct spdk_nvmf_fc_request *fc_req = arg1; struct spdk_nvmf_ctrlr *ctrlr = fc_req->req.qpair->ctrlr; + int i; /* Initial release - we don't have to abort Admin Queue or * Fabric commands. The AQ commands supported at this time are @@ -1164,9 +1165,11 @@ nvmf_fc_req_bdev_abort(void *arg1) * Connect -> Special case (async. handling). Not sure how to * handle at this point. Let it run to completion. */ - if (ctrlr->aer_req == &fc_req->req) { - SPDK_NOTICELOG("Abort AER request\n"); - nvmf_qpair_free_aer(fc_req->req.qpair); + for (i = 0; i < NVMF_MAX_ASYNC_EVENTS; i++) { + if (ctrlr->aer_req[i] == &fc_req->req) { + SPDK_NOTICELOG("Abort AER request\n"); + nvmf_qpair_free_aer(fc_req->req.qpair); + } } }