From cb2a73304b64486aaf38d12a9594c2af41a1acc5 Mon Sep 17 00:00:00 2001 From: Shuhei Matsumoto Date: Wed, 1 Mar 2023 21:23:59 +0900 Subject: [PATCH] nvme_pcie: Fix nvme_qpair_abort_all_queued_reqs() to be called for adminq By the patch https://github.com/spdk/spdk/commit/736b9da0342d10acdb8deebf6f93fb799275a5a3 nvme_qpair_abort_all_queued_reqs() was changed to be called after the adminq is actually disconnected. However, the patch https://github.com/spdk/spdk/commit/ac31590b37a9d0861a5e9cdc1d0623c91fc1553a unexpectedly disabled to call nvme_qpair_abort_all_queued_reqs() for adminq because qpair->active_proc is NULL for adminq. Add one more condition to nvme_transport_ctrlr_disconnect_qpair_done(). Fixes issue #2928 Signed-off-by: Shuhei Matsumoto Change-Id: Ic65f4cd952e6e89275788ff4b86ceca050f624d5 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/17001 Reviewed-by: Michael Haeuptle Reviewed-by: Ben Walker Reviewed-by: Aleksey Marchuk Reviewed-by: Jim Harris Tested-by: SPDK CI Jenkins --- lib/nvme/nvme_transport.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/nvme/nvme_transport.c b/lib/nvme/nvme_transport.c index 85a48bb13..89f3116d0 100644 --- a/lib/nvme/nvme_transport.c +++ b/lib/nvme/nvme_transport.c @@ -537,7 +537,8 @@ nvme_transport_ctrlr_disconnect_qpair(struct spdk_nvme_ctrlr *ctrlr, struct spdk void nvme_transport_ctrlr_disconnect_qpair_done(struct spdk_nvme_qpair *qpair) { - if (qpair->active_proc == nvme_ctrlr_get_current_process(qpair->ctrlr)) { + if (qpair->active_proc == nvme_ctrlr_get_current_process(qpair->ctrlr) || + nvme_qpair_is_admin_queue(qpair)) { nvme_qpair_abort_all_queued_reqs(qpair, 0); } nvme_qpair_set_state(qpair, NVME_QPAIR_DISCONNECTED);