From 75ddfd6511f4acd71a916d4cbc2689f0b6d7dda1 Mon Sep 17 00:00:00 2001 From: Evgeniy Kochetov Date: Tue, 13 Apr 2021 13:32:25 +0300 Subject: [PATCH] nvme/ctrlr: Handle namespaces construction failure Signed-off-by: Evgeniy Kochetov Change-Id: I3b14e2dce3bd4b2ce42e3946592cfde9d4300f28 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/7361 Community-CI: Broadcom CI Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins Reviewed-by: Ben Walker Reviewed-by: Shuhei Matsumoto Reviewed-by: Jim Harris --- lib/nvme/nvme_ctrlr.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/nvme/nvme_ctrlr.c b/lib/nvme/nvme_ctrlr.c index 5a9a3a3ab..44c8bebae 100644 --- a/lib/nvme/nvme_ctrlr.c +++ b/lib/nvme/nvme_ctrlr.c @@ -2605,6 +2605,8 @@ nvme_ctrlr_construct_namespaces(struct spdk_nvme_ctrlr *ctrlr) fail: nvme_ctrlr_destruct_namespaces(ctrlr); + NVME_CTRLR_ERRLOG(ctrlr, "Failed to construct namespaces, err %d\n", rc); + nvme_ctrlr_set_state(ctrlr, NVME_CTRLR_STATE_ERROR, NVME_TIMEOUT_INFINITE); return rc; } @@ -3240,8 +3242,10 @@ nvme_ctrlr_process_init(struct spdk_nvme_ctrlr *ctrlr) case NVME_CTRLR_STATE_CONSTRUCT_NS: rc = nvme_ctrlr_construct_namespaces(ctrlr); - nvme_ctrlr_set_state(ctrlr, NVME_CTRLR_STATE_IDENTIFY_ACTIVE_NS, - ctrlr->opts.admin_timeout_ms); + if (!rc) { + nvme_ctrlr_set_state(ctrlr, NVME_CTRLR_STATE_IDENTIFY_ACTIVE_NS, + ctrlr->opts.admin_timeout_ms); + } break; case NVME_CTRLR_STATE_IDENTIFY_ACTIVE_NS: