nvme/perf: convert -r argument to TRID format

Change-Id: Ib0568ace157c19c9a86741b7d46fcf5cdb8cdb69
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
This commit is contained in:
Daniel Verkamp 2017-01-13 14:50:29 -07:00
parent be8a9d6966
commit 042452af55
2 changed files with 14 additions and 42 deletions

View File

@ -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");
}

View File

@ -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