From 1f19be651573539b0188a0fe5b125743d285b9f5 Mon Sep 17 00:00:00 2001 From: Daniel Verkamp Date: Fri, 8 Apr 2016 15:22:46 -0700 Subject: [PATCH] nvme: destroy I/O queues before shutdown The NVMe specification recommends destroying all I/O submission and completion queues before setting CC.SHN. Change-Id: Iad71dd3fe03d897858034f3ca6ee02e0c55cc2b0 Signed-off-by: Daniel Verkamp --- lib/nvme/nvme_ctrlr.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/nvme/nvme_ctrlr.c b/lib/nvme/nvme_ctrlr.c index 6dcf71543..9fcb9ec3e 100644 --- a/lib/nvme/nvme_ctrlr.c +++ b/lib/nvme/nvme_ctrlr.c @@ -993,6 +993,12 @@ nvme_ctrlr_destruct(struct spdk_nvme_ctrlr *ctrlr) { uint32_t i; + while (!TAILQ_EMPTY(&ctrlr->active_io_qpairs)) { + struct spdk_nvme_qpair *qpair = TAILQ_FIRST(&ctrlr->active_io_qpairs); + + spdk_nvme_ctrlr_free_io_qpair(qpair); + } + nvme_ctrlr_shutdown(ctrlr); nvme_ctrlr_destruct_namespaces(ctrlr);