From 2dbdb9945c0e50e49272347bd3338769cb503b04 Mon Sep 17 00:00:00 2001 From: Ben Walker Date: Mon, 1 Nov 2021 13:14:53 -0700 Subject: [PATCH] test/nvme: Only test non-contiguous namespaces for NVMe 1.2 or higher This wasn't supported before NVMe 1.2 Signed-off-by: Ben Walker Change-Id: Ibf19cd77e522eb11c2091a9f4956f5616876986b Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/10097 Tested-by: SPDK CI Jenkins Community-CI: Mellanox Build Bot Community-CI: Broadcom CI Reviewed-by: Changpeng Liu Reviewed-by: Shuhei Matsumoto Reviewed-by: Aleksey Marchuk Reviewed-by: Jim Harris --- .../lib/nvme/nvme_ctrlr.c/nvme_ctrlr_ut.c | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/test/unit/lib/nvme/nvme_ctrlr.c/nvme_ctrlr_ut.c b/test/unit/lib/nvme/nvme_ctrlr.c/nvme_ctrlr_ut.c index 89fcdee30..479ba4388 100644 --- a/test/unit/lib/nvme/nvme_ctrlr.c/nvme_ctrlr_ut.c +++ b/test/unit/lib/nvme/nvme_ctrlr.c/nvme_ctrlr_ut.c @@ -2118,14 +2118,18 @@ test_nvme_ctrlr_test_active_ns(void) nsid = spdk_nvme_ctrlr_get_first_active_ns(&ctrlr); CU_ASSERT(nsid == 1); - ctrlr.active_ns_list[1] = 3; - CU_ASSERT(spdk_nvme_ctrlr_is_active_ns(&ctrlr, 1) == true); - CU_ASSERT(spdk_nvme_ctrlr_is_active_ns(&ctrlr, 2) == false); - CU_ASSERT(spdk_nvme_ctrlr_is_active_ns(&ctrlr, 3) == true); - nsid = spdk_nvme_ctrlr_get_next_active_ns(&ctrlr, nsid); - CU_ASSERT(nsid == 3); - nsid = spdk_nvme_ctrlr_get_next_active_ns(&ctrlr, nsid); - CU_ASSERT(nsid == 0); + if (minor >= 2) { + /* For NVMe 1.2 and newer, the namespace list can have "holes" where + * some namespaces are not active. Test this. */ + ctrlr.active_ns_list[1] = 3; + CU_ASSERT(spdk_nvme_ctrlr_is_active_ns(&ctrlr, 1) == true); + CU_ASSERT(spdk_nvme_ctrlr_is_active_ns(&ctrlr, 2) == false); + CU_ASSERT(spdk_nvme_ctrlr_is_active_ns(&ctrlr, 3) == true); + nsid = spdk_nvme_ctrlr_get_next_active_ns(&ctrlr, nsid); + CU_ASSERT(nsid == 3); + nsid = spdk_nvme_ctrlr_get_next_active_ns(&ctrlr, nsid); + CU_ASSERT(nsid == 0); + } memset(ctrlr.active_ns_list, 0, sizeof(uint32_t) * ctrlr.num_ns); for (nsid = 0; nsid < ctrlr.num_ns; nsid++) {