From a050dcf21d5cd073e081e9a457abe3a1d58578bc Mon Sep 17 00:00:00 2001 From: Seth Howell Date: Mon, 23 Dec 2019 14:29:50 -0700 Subject: [PATCH] lib/nvmf: add a default value to trtype enum. For custom transports, we should use a range outside the spec value to identify them. Signed-off-by: Seth Howell Change-Id: I82b29c349e143b8906f79ce2de818def116a3fe4 Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/478747 Tested-by: SPDK CI Jenkins Reviewed-by: Alexey Marchuk Reviewed-by: Ben Walker Reviewed-by: Shuhei Matsumoto Reviewed-by: Jim Harris --- include/spdk/nvme.h | 5 +++++ lib/nvme/nvme.c | 3 ++- lib/nvme/nvme_transport.c | 8 ++++++-- test/unit/lib/nvme/nvme.c/nvme_ut.c | 3 ++- 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/include/spdk/nvme.h b/include/spdk/nvme.h index a253a120a..0bb0f28c3 100644 --- a/include/spdk/nvme.h +++ b/include/spdk/nvme.h @@ -284,6 +284,11 @@ enum spdk_nvme_transport_type { * TCP Transport */ SPDK_NVME_TRANSPORT_TCP = SPDK_NVMF_TRTYPE_TCP, + + /** + * Custom Transport (Not spec defined) + */ + SPDK_NVME_TRANSPORT_CUSTOM = 4096, }; /* typedef added for coding style reasons */ diff --git a/lib/nvme/nvme.c b/lib/nvme/nvme.c index c7cf1eb32..822eb1046 100644 --- a/lib/nvme/nvme.c +++ b/lib/nvme/nvme.c @@ -721,6 +721,7 @@ spdk_nvme_trid_populate_transport(struct spdk_nvme_transport_id *trid, case SPDK_NVME_TRANSPORT_TCP: trstring = SPDK_NVME_TRANSPORT_NAME_TCP; break; + case SPDK_NVME_TRANSPORT_CUSTOM: default: SPDK_ERRLOG("don't use this for custom transports\n"); break; @@ -770,7 +771,7 @@ spdk_nvme_transport_id_parse_trtype(enum spdk_nvme_transport_type *trtype, const } else if (strcasecmp(str, "TCP") == 0) { *trtype = SPDK_NVME_TRANSPORT_TCP; } else { - return -ENOENT; + *trtype = SPDK_NVME_TRANSPORT_CUSTOM; } return 0; } diff --git a/lib/nvme/nvme_transport.c b/lib/nvme/nvme_transport.c index aec4a0866..f1766736c 100644 --- a/lib/nvme/nvme_transport.c +++ b/lib/nvme/nvme_transport.c @@ -61,6 +61,7 @@ nvme_transport_unknown(enum spdk_nvme_transport_type trtype) #define TRANSPORT_RDMA_AVAILABLE false #endif #define TRANSPORT_FABRICS_FC(func_name, args) case SPDK_NVME_TRANSPORT_FC: SPDK_UNREACHABLE(); +#define TRANSPORT_FABRICS_CUSTOM(func_name, args) case SPDK_NVME_TRANSPORT_CUSTOM: SPDK_UNREACHABLE(); #define NVME_TRANSPORT_CALL(trtype, func_name, args) \ do { \ @@ -69,6 +70,7 @@ nvme_transport_unknown(enum spdk_nvme_transport_type trtype) TRANSPORT_FABRICS_RDMA(func_name, args) \ TRANSPORT_FABRICS_FC(func_name, args) \ TRANSPORT_FABRICS_TCP(func_name, args) \ + TRANSPORT_FABRICS_CUSTOM(func_name, args) \ TRANSPORT_DEFAULT(trtype) \ } \ SPDK_UNREACHABLE(); \ @@ -81,12 +83,14 @@ spdk_nvme_transport_available(enum spdk_nvme_transport_type trtype) case SPDK_NVME_TRANSPORT_PCIE: case SPDK_NVME_TRANSPORT_TCP: return true; - case SPDK_NVME_TRANSPORT_RDMA: return TRANSPORT_RDMA_AVAILABLE; - case SPDK_NVME_TRANSPORT_FC: return false; + case SPDK_NVME_TRANSPORT_CUSTOM: + return false; + default: + return false; } return false; diff --git a/test/unit/lib/nvme/nvme.c/nvme_ut.c b/test/unit/lib/nvme/nvme.c/nvme_ut.c index 00934afba..17e6f4057 100644 --- a/test/unit/lib/nvme/nvme.c/nvme_ut.c +++ b/test/unit/lib/nvme/nvme.c/nvme_ut.c @@ -988,7 +988,8 @@ test_spdk_nvme_transport_id_parse_trtype(void) /* test function returned value when str and strtype not NULL, but str value * not "PCIe" or "RDMA" */ str = "unit_test"; - CU_ASSERT(spdk_nvme_transport_id_parse_trtype(trtype, str) == (-ENOENT)); + CU_ASSERT(spdk_nvme_transport_id_parse_trtype(trtype, str) == 0); + CU_ASSERT((*trtype) == SPDK_NVME_TRANSPORT_CUSTOM); /* test trtype value when use function "strcasecmp" to compare str and "PCIe",not case-sensitive */ str = "PCIe";