diff --git a/lib/nvme/nvme_ctrlr.c b/lib/nvme/nvme_ctrlr.c index 05891280f..524fbb8a7 100644 --- a/lib/nvme/nvme_ctrlr.c +++ b/lib/nvme/nvme_ctrlr.c @@ -996,7 +996,6 @@ nvme_ctrlr_reset(struct spdk_nvme_ctrlr *ctrlr) nvme_transport_ctrlr_disconnect_qpair(ctrlr, ctrlr->adminq); if (nvme_transport_ctrlr_connect_qpair(ctrlr, ctrlr->adminq) != 0) { SPDK_ERRLOG("Controller reinitialization failed.\n"); - nvme_ctrlr_fail(ctrlr, false); rc = -1; goto out; } @@ -1010,17 +1009,15 @@ nvme_ctrlr_reset(struct spdk_nvme_ctrlr *ctrlr) while (ctrlr->state != NVME_CTRLR_STATE_READY) { if (nvme_ctrlr_process_init(ctrlr) != 0) { SPDK_ERRLOG("controller reinitialization failed\n"); - nvme_ctrlr_fail(ctrlr, false); rc = -1; break; } } - if (!ctrlr->is_failed) { + if (rc == 0) { /* Reinitialize qpairs */ TAILQ_FOREACH(qpair, &ctrlr->active_io_qpairs, tailq) { if (nvme_transport_ctrlr_connect_qpair(ctrlr, qpair) != 0) { - nvme_ctrlr_fail(ctrlr, false); rc = -1; } } @@ -1037,7 +1034,12 @@ out: int spdk_nvme_ctrlr_reset(struct spdk_nvme_ctrlr *ctrlr) { - return nvme_ctrlr_reset(ctrlr); + if (nvme_ctrlr_reset(ctrlr) != 0) { + nvme_ctrlr_fail(ctrlr, false); + return -1; + } + + return 0; } static void