diff --git a/lib/nvme/nvme_ctrlr.c b/lib/nvme/nvme_ctrlr.c index 290a372258..9c54d1fbde 100644 --- a/lib/nvme/nvme_ctrlr.c +++ b/lib/nvme/nvme_ctrlr.c @@ -638,6 +638,8 @@ nvme_ctrlr_state_string(enum nvme_ctrlr_state state) return "set host ID"; case NVME_CTRLR_STATE_READY: return "ready"; + case NVME_CTRLR_STATE_ERROR: + return "error"; } return "unknown"; }; @@ -1772,6 +1774,10 @@ nvme_ctrlr_process_init(struct spdk_nvme_ctrlr *ctrlr) SPDK_DEBUGLOG(SPDK_LOG_NVME, "Ctrlr already in ready state\n"); return 0; + case NVME_CTRLR_STATE_ERROR: + SPDK_ERRLOG("Ctrlr %s is in error state\n", ctrlr->trid.traddr); + return -1; + default: assert(0); nvme_ctrlr_fail(ctrlr, false); diff --git a/lib/nvme/nvme_internal.h b/lib/nvme/nvme_internal.h index eba34ffa17..419f4a8a5f 100644 --- a/lib/nvme/nvme_internal.h +++ b/lib/nvme/nvme_internal.h @@ -465,7 +465,12 @@ enum nvme_ctrlr_state { /** * Controller initialization has completed and the controller is ready. */ - NVME_CTRLR_STATE_READY + NVME_CTRLR_STATE_READY, + + /** + * Controller inilialization has an error. + */ + NVME_CTRLR_STATE_ERROR }; #define NVME_TIMEOUT_INFINITE UINT64_MAX