diff --git a/lib/nvmf/ctrlr.c b/lib/nvmf/ctrlr.c index 6c41c5073..0aa8193c1 100644 --- a/lib/nvmf/ctrlr.c +++ b/lib/nvmf/ctrlr.c @@ -281,6 +281,12 @@ ctrlr_delete_qpair(void *ctx) struct spdk_nvmf_ctrlr *ctrlr = qpair->ctrlr; assert(ctrlr != NULL); + assert(ctrlr->num_qpairs > 0); + /* Defer the admin qpair deletion since there are still io qpairs */ + if ((ctrlr->num_qpairs > 1) && (qpair == ctrlr->admin_qpair)) { + spdk_thread_send_msg(qpair->group->thread, ctrlr_delete_qpair, qpair); + return; + } ctrlr->num_qpairs--; TAILQ_REMOVE(&ctrlr->qpairs, qpair, link);