From 453c804d1b7153936b339def35b5d1b027fda6b0 Mon Sep 17 00:00:00 2001 From: Daniel Verkamp Date: Thu, 12 Apr 2018 11:23:02 -0700 Subject: [PATCH] nvme: continue initialization even if NN=0 Similar to the previous patch, some controllers may report 0 namespaces; we should still be able to send admin commands in this situation. Change-Id: Ia14e3ce773c63e645199e1c40ba5b37095da2473 Signed-off-by: Daniel Verkamp Reviewed-on: https://review.gerrithub.io/407497 Tested-by: SPDK Automated Test System Reviewed-by: Ben Walker Reviewed-by: Jim Harris --- lib/nvme/nvme_ctrlr.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/nvme/nvme_ctrlr.c b/lib/nvme/nvme_ctrlr.c index be76a761f..8f492ae85 100644 --- a/lib/nvme/nvme_ctrlr.c +++ b/lib/nvme/nvme_ctrlr.c @@ -1098,17 +1098,17 @@ nvme_ctrlr_construct_namespaces(struct spdk_nvme_ctrlr *ctrlr) uint32_t i, nn = ctrlr->cdata.nn; uint64_t phys_addr = 0; - if (nn == 0) { - SPDK_ERRLOG("controller has 0 namespaces\n"); - return -1; - } - /* ctrlr->num_ns may be 0 (startup) or a different number of namespaces (reset), * so check if we need to reallocate. */ if (nn != ctrlr->num_ns) { nvme_ctrlr_destruct_namespaces(ctrlr); + if (nn == 0) { + SPDK_WARNLOG("controller has 0 namespaces\n"); + return 0; + } + ctrlr->ns = spdk_dma_zmalloc(nn * sizeof(struct spdk_nvme_ns), 64, &phys_addr); if (ctrlr->ns == NULL) {