From 042452af55fcb7bc8a6b4514c6d7ddaac9df007e Mon Sep 17 00:00:00 2001 From: Daniel Verkamp Date: Fri, 13 Jan 2017 14:50:29 -0700 Subject: [PATCH] nvme/perf: convert -r argument to TRID format Change-Id: Ib0568ace157c19c9a86741b7d46fcf5cdb8cdb69 Signed-off-by: Daniel Verkamp --- examples/nvme/perf/perf.c | 54 ++++++++++----------------------------- test/nvmf/host/perf.sh | 2 +- 2 files changed, 14 insertions(+), 42 deletions(-) diff --git a/examples/nvme/perf/perf.c b/examples/nvme/perf/perf.c index 8a04fec31..4464e8eab 100644 --- a/examples/nvme/perf/perf.c +++ b/examples/nvme/perf/perf.c @@ -642,8 +642,15 @@ static void usage(char *program_name) printf("\t[-t time in seconds]\n"); printf("\t[-c core mask for I/O submission/completion.]\n"); printf("\t\t(default: 1)]\n"); - printf("\t[-r discover info of remote NVMe over Fabrics target:\n"); - printf("\t Format: TRTYPE:TRADDR:TRVCSID e.g., rdma:192.168.100.8:4420]\n"); + printf("\t[-r discover info of remote NVMe over Fabrics target]\n"); + printf("\t Format: 'key:value [key:value] ...'\n"); + printf("\t Keys:\n"); + printf("\t trtype Transport type (e.g. RDMA)\n"); + printf("\t adrfam Address family (e.g. IPv4, IPv6)\n"); + printf("\t traddr Transport address (e.g. 192.168.100.8)\n"); + printf("\t trsvcid Transport service identifier (e.g. 4420)\n"); + printf("\t subnqn Subsystem NQN (default: %s)\n", SPDK_NVMF_DISCOVERY_NQN); + printf("\t Example: -r 'trtype:RDMA adrfam:IPv4 traddr:192.168.100.8 trsvcid:4420'\n"); printf("\t[-d DPDK huge memory size in MB.]\n"); printf("\t[-m max completions per poll]\n"); printf("\t\t(default: 0 - unlimited)\n"); @@ -1040,8 +1047,6 @@ static int register_controllers(void) { struct spdk_nvme_transport_id trid; - char *p, *p1; - int n; printf("Initializing NVMe Controllers\n"); @@ -1049,48 +1054,15 @@ register_controllers(void) fprintf(stderr, "spdk_nvme_probe() failed\n"); } - /* The format of g_nvmf_discover_info should be: TRTYPE:TRADDR:TRVCSID */ if (g_nvmf_discover_info) { + memset(&trid, 0, sizeof(trid)); snprintf(trid.subnqn, sizeof(trid.subnqn), "%s", SPDK_NVMF_DISCOVERY_NQN); - p = (char *)g_nvmf_discover_info; - p1 = strchr(p, ':'); - if (p1 == NULL) { - fprintf(stderr, "wrong format of discover info\n"); - return 0; + if (spdk_nvme_transport_id_parse(&trid, g_nvmf_discover_info) != 0) { + fprintf(stderr, "Invalid transport ID format\n"); + return 1; } - n = p1 - p; - if (n == 0) { - fprintf(stderr, "wrong format of discover info\n"); - return 0; - } - p[n] = '\0'; - - if (strncmp(p, "rdma", 4) != 0) { - fprintf(stderr, "wrong transport type \n"); - return 0; - } - trid.trtype = SPDK_NVME_TRANSPORT_RDMA; - trid.adrfam = SPDK_NVMF_ADRFAM_IPV4; - - p = (char *)p1 + 1; - p1 = strchr(p, ':'); - if (p1 == NULL) { - fprintf(stderr, "wrong format of discover info\n"); - return 0; - } - - n = p1 - p; - if ((n == 0) || (n > SPDK_NVMF_TRADDR_MAX_LEN)) { - fprintf(stderr, "wrong format of discover info\n"); - return 0; - } - p[n] = '\0'; - snprintf(trid.traddr, sizeof(trid.traddr), "%s", p); - - p = (char *)p1 + 1; - snprintf(trid.trsvcid, sizeof(trid.trsvcid), "%s", p); if (spdk_nvme_probe(&trid, NULL, probe_cb, attach_cb, NULL) != 0) { fprintf(stderr, "spdk_nvme_probe() failed\n"); } diff --git a/test/nvmf/host/perf.sh b/test/nvmf/host/perf.sh index 18ef17bf8..c23185c91 100755 --- a/test/nvmf/host/perf.sh +++ b/test/nvmf/host/perf.sh @@ -31,7 +31,7 @@ bdevs="$bdevs $($rpc_py construct_malloc_bdev $MALLOC_BDEV_SIZE $MALLOC_BLOCK_SI $rpc_py construct_nvmf_subsystem Virtual nqn.2016-06.io.spdk:cnode1 'transport:RDMA traddr:192.168.100.8 trsvcid:4420' '' -s SPDK00000000000001 -n "$bdevs" -$rootdir/examples/nvme/perf/perf -q 32 -s 4096 -w randrw -M 50 -t 1 -r "rdma:192.168.100.8:4420" +$rootdir/examples/nvme/perf/perf -q 32 -s 4096 -w randrw -M 50 -t 1 -r "trtype:RDMA adrfam:IPv4 traddr:192.168.100.8 trsvcid:4420" sync $rpc_py delete_nvmf_subsystem nqn.2016-06.io.spdk:cnode1