From 4be6d30438d753b1e883d963e80ed1a3dba51930 Mon Sep 17 00:00:00 2001 From: Shuhei Matsumoto Date: Wed, 1 Jun 2022 13:42:20 +0900 Subject: [PATCH] nvme: Add ctrlr_abort_queued_aborts() into qpair_abort_all_queued_reqs() nvme_qpair_abort_all_queued_reqs() aborts error injections, queued requests, aborting queued requests, and outstanding requests. (Aborting outstanding requests depends on transports.) However, it did not abort queued aborts. Include nvme_ctrlr_abort_queued_aborts() into nvme_qpair_abort_all_queued_reqs() to do really the name of the function indicates. nvme_ctrlr_abort_queued_aborts() has been called in a few cases, but we do not care duplication. Signed-off-by: Shuhei Matsumoto Change-Id: I19102cc6603a72ce5c398a7947cb4d606b692991 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/12849 Tested-by: SPDK CI Jenkins Reviewed-by: Konrad Sztyber Reviewed-by: Jim Harris Reviewed-by: Vasuki Manikarnike Community-CI: Broadcom CI Community-CI: Mellanox Build Bot --- lib/nvme/nvme_ctrlr.c | 2 +- lib/nvme/nvme_internal.h | 1 + lib/nvme/nvme_qpair.c | 3 +++ test/unit/lib/nvme/nvme_qpair.c/nvme_qpair_ut.c | 1 + 4 files changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/nvme/nvme_ctrlr.c b/lib/nvme/nvme_ctrlr.c index a1acc53fd..9f268c96b 100644 --- a/lib/nvme/nvme_ctrlr.c +++ b/lib/nvme/nvme_ctrlr.c @@ -1585,7 +1585,7 @@ error: return rc; } -static void +void nvme_ctrlr_abort_queued_aborts(struct spdk_nvme_ctrlr *ctrlr) { struct nvme_request *req, *tmp; diff --git a/lib/nvme/nvme_internal.h b/lib/nvme/nvme_internal.h index 53b5e5e07..fe4657b89 100644 --- a/lib/nvme/nvme_internal.h +++ b/lib/nvme/nvme_internal.h @@ -1176,6 +1176,7 @@ void nvme_ctrlr_process_async_event(struct spdk_nvme_ctrlr *ctrlr, const struct spdk_nvme_cpl *cpl); void nvme_ctrlr_disconnect_qpair(struct spdk_nvme_qpair *qpair); void nvme_ctrlr_complete_queued_async_events(struct spdk_nvme_ctrlr *ctrlr); +void nvme_ctrlr_abort_queued_aborts(struct spdk_nvme_ctrlr *ctrlr); int nvme_qpair_init(struct spdk_nvme_qpair *qpair, uint16_t id, struct spdk_nvme_ctrlr *ctrlr, enum spdk_nvme_qprio qprio, diff --git a/lib/nvme/nvme_qpair.c b/lib/nvme/nvme_qpair.c index 0a351691c..4d39a11e6 100644 --- a/lib/nvme/nvme_qpair.c +++ b/lib/nvme/nvme_qpair.c @@ -1055,6 +1055,9 @@ nvme_qpair_abort_all_queued_reqs(struct spdk_nvme_qpair *qpair, uint32_t dnr) nvme_qpair_complete_error_reqs(qpair); nvme_qpair_abort_queued_reqs(qpair, dnr); _nvme_qpair_complete_abort_queued_reqs(qpair); + if (nvme_qpair_is_admin_queue(qpair)) { + nvme_ctrlr_abort_queued_aborts(qpair->ctrlr); + } } int diff --git a/test/unit/lib/nvme/nvme_qpair.c/nvme_qpair_ut.c b/test/unit/lib/nvme/nvme_qpair.c/nvme_qpair_ut.c index 3b0e409ce..6307af237 100644 --- a/test/unit/lib/nvme/nvme_qpair.c/nvme_qpair_ut.c +++ b/test/unit/lib/nvme/nvme_qpair.c/nvme_qpair_ut.c @@ -32,6 +32,7 @@ DEFINE_STUB_V(nvme_transport_ctrlr_disconnect_qpair, (struct spdk_nvme_ctrlr *ct DEFINE_STUB_V(nvme_ctrlr_disconnect_qpair, (struct spdk_nvme_qpair *qpair)); DEFINE_STUB_V(nvme_ctrlr_complete_queued_async_events, (struct spdk_nvme_ctrlr *ctrlr)); +DEFINE_STUB_V(nvme_ctrlr_abort_queued_aborts, (struct spdk_nvme_ctrlr *ctrlr)); void nvme_ctrlr_fail(struct spdk_nvme_ctrlr *ctrlr, bool hot_remove)