diff --git a/lib/nvme/nvme_pcie.c b/lib/nvme/nvme_pcie.c index 15945cb2c..7d495c69f 100644 --- a/lib/nvme/nvme_pcie.c +++ b/lib/nvme/nvme_pcie.c @@ -1692,14 +1692,6 @@ nvme_pcie_ctrlr_delete_io_qpair(struct spdk_nvme_ctrlr *ctrlr, struct spdk_nvme_ return -1; } - if (qpair->no_deletion_notification_needed == 0) { - /* Complete any I/O in the completion queue */ - nvme_pcie_qpair_process_completions(qpair, 0); - - /* Abort the rest of the I/O */ - nvme_pcie_qpair_abort_trackers(qpair, 1); - } - /* Delete the completion queue */ rc = nvme_pcie_ctrlr_cmd_delete_io_cq(ctrlr, qpair, nvme_completion_poll_cb, &status); if (rc != 0) { @@ -1711,6 +1703,14 @@ nvme_pcie_ctrlr_delete_io_qpair(struct spdk_nvme_ctrlr *ctrlr, struct spdk_nvme_ } free: + if (qpair->no_deletion_notification_needed == 0) { + /* Complete any I/O in the completion queue */ + nvme_pcie_qpair_process_completions(qpair, 0); + + /* Abort the rest of the I/O */ + nvme_pcie_qpair_abort_trackers(qpair, 1); + } + nvme_pcie_qpair_destroy(qpair); return 0; }