From a2d4ddb3b113b7115420649b9dc5162b879ecfd2 Mon Sep 17 00:00:00 2001 From: Evgeniy Kochetov Date: Tue, 21 Sep 2021 16:34:06 +0300 Subject: [PATCH] nvme: Prioritize user provided trstring for transport lookup This patch fixes the issue with custom nvme transport. It is possible to register custom nvme transport with arbitrary name but it is not usable because 'spdk_nvme_trid_populate_transport' call in probe function will always set trstring to 'CUSTOM' and transport lookup will fail. Signed-off-by: Evgeniy Kochetov Change-Id: I83fd24dd8732ac0a21e22435e0acff20ab0e7521 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/9557 Tested-by: SPDK CI Jenkins Reviewed-by: Shuhei Matsumoto Reviewed-by: Jim Harris --- examples/nvme/perf/perf.c | 3 --- lib/nvme/nvme.c | 9 +++++++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/examples/nvme/perf/perf.c b/examples/nvme/perf/perf.c index 2155acb8a..8a951c03d 100644 --- a/examples/nvme/perf/perf.c +++ b/examples/nvme/perf/perf.c @@ -2054,9 +2054,6 @@ add_trid(const char *trid_str) return 1; } - spdk_nvme_transport_id_populate_trstring(trid, - spdk_nvme_transport_id_trtype_str(trid->trtype)); - ns = strcasestr(trid_str, "ns:"); if (ns) { char nsid_str[6]; /* 5 digits maximum in an nsid */ diff --git a/lib/nvme/nvme.c b/lib/nvme/nvme.c index bdc3db23e..d081a89cf 100644 --- a/lib/nvme/nvme.c +++ b/lib/nvme/nvme.c @@ -825,9 +825,14 @@ nvme_probe_internal(struct spdk_nvme_probe_ctx *probe_ctx, int rc; struct spdk_nvme_ctrlr *ctrlr, *ctrlr_tmp; - spdk_nvme_trid_populate_transport(&probe_ctx->trid, probe_ctx->trid.trtype); + if (strlen(probe_ctx->trid.trstring) == 0) { + /* If user didn't provide trstring, derive it from trtype */ + spdk_nvme_trid_populate_transport(&probe_ctx->trid, probe_ctx->trid.trtype); + } + if (!spdk_nvme_transport_available_by_name(probe_ctx->trid.trstring)) { - SPDK_ERRLOG("NVMe trtype %u not available\n", probe_ctx->trid.trtype); + SPDK_ERRLOG("NVMe trtype %u (%s) not available\n", + probe_ctx->trid.trtype, probe_ctx->trid.trstring); return -1; }