From 74aa552ef95c7df8214dca8b29b4715964cbb950 Mon Sep 17 00:00:00 2001 From: Jim Harris Date: Mon, 6 May 2019 15:50:55 -0700 Subject: [PATCH] nvme: make helper function to abort outstanding err reqs The nvme_qpair_disable functions will be going away in an upcoming patch, so move this one bit of functionality into a helper function in advance. Signed-off-by: Jim Harris Change-Id: I61c2de535c2230b988d56dea13b00f39cb59dcfa Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/453483 Tested-by: SPDK CI Jenkins Reviewed-by: Ben Walker Reviewed-by: Shuhei Matsumoto Reviewed-by: Changpeng Liu --- lib/nvme/nvme_ctrlr.c | 5 +++++ lib/nvme/nvme_internal.h | 1 + lib/nvme/nvme_qpair.c | 6 +++++- test/unit/lib/nvme/nvme_ctrlr.c/nvme_ctrlr_ut.c | 5 +++++ 4 files changed, 16 insertions(+), 1 deletion(-) diff --git a/lib/nvme/nvme_ctrlr.c b/lib/nvme/nvme_ctrlr.c index b6c204dd6..54e13e2c9 100644 --- a/lib/nvme/nvme_ctrlr.c +++ b/lib/nvme/nvme_ctrlr.c @@ -844,6 +844,11 @@ spdk_nvme_ctrlr_reset(struct spdk_nvme_ctrlr *ctrlr) nvme_transport_admin_qpair_abort_aers(ctrlr->adminq); + nvme_qpair_complete_error_reqs(ctrlr->adminq); + TAILQ_FOREACH(qpair, &ctrlr->active_io_qpairs, tailq) { + nvme_qpair_complete_error_reqs(qpair); + } + /* Disable all queues before disabling the controller hardware. */ nvme_qpair_disable(ctrlr->adminq); TAILQ_FOREACH(qpair, &ctrlr->active_io_qpairs, tailq) { diff --git a/lib/nvme/nvme_internal.h b/lib/nvme/nvme_internal.h index 9e3c75dc1..0db896f03 100644 --- a/lib/nvme/nvme_internal.h +++ b/lib/nvme/nvme_internal.h @@ -831,6 +831,7 @@ int nvme_qpair_init(struct spdk_nvme_qpair *qpair, uint16_t id, void nvme_qpair_deinit(struct spdk_nvme_qpair *qpair); void nvme_qpair_enable(struct spdk_nvme_qpair *qpair); void nvme_qpair_disable(struct spdk_nvme_qpair *qpair); +void nvme_qpair_complete_error_reqs(struct spdk_nvme_qpair *qpair); int nvme_qpair_submit_request(struct spdk_nvme_qpair *qpair, struct nvme_request *req); diff --git a/lib/nvme/nvme_qpair.c b/lib/nvme/nvme_qpair.c index c833e570d..3b37f01e8 100644 --- a/lib/nvme/nvme_qpair.c +++ b/lib/nvme/nvme_qpair.c @@ -580,7 +580,7 @@ nvme_qpair_enable(struct spdk_nvme_qpair *qpair) } void -nvme_qpair_disable(struct spdk_nvme_qpair *qpair) +nvme_qpair_complete_error_reqs(struct spdk_nvme_qpair *qpair) { struct nvme_request *req; @@ -591,7 +591,11 @@ nvme_qpair_disable(struct spdk_nvme_qpair *qpair) req->cpl.status.sct, req->cpl.status.sc, true); } +} +void +nvme_qpair_disable(struct spdk_nvme_qpair *qpair) +{ nvme_transport_qpair_disable(qpair); } diff --git a/test/unit/lib/nvme/nvme_ctrlr.c/nvme_ctrlr_ut.c b/test/unit/lib/nvme/nvme_ctrlr.c/nvme_ctrlr_ut.c index ef5e1d7b6..8a8ad28fb 100644 --- a/test/unit/lib/nvme/nvme_ctrlr.c/nvme_ctrlr_ut.c +++ b/test/unit/lib/nvme/nvme_ctrlr.c/nvme_ctrlr_ut.c @@ -262,6 +262,11 @@ nvme_qpair_disable(struct spdk_nvme_qpair *qpair) { } +void +nvme_qpair_complete_error_reqs(struct spdk_nvme_qpair *qpair) +{ +} + void nvme_qpair_enable(struct spdk_nvme_qpair *qpair) {