diff --git a/examples/nvme/identify/identify.c b/examples/nvme/identify/identify.c index 68a6b5533..a725952bc 100644 --- a/examples/nvme/identify/identify.c +++ b/examples/nvme/identify/identify.c @@ -873,9 +873,15 @@ usage(const char *program_name) printf("%s [options]", program_name); printf("\n"); printf("options:\n"); - printf(" -a addr address of NVMe over Fabrics discovery service\n"); - printf(" -s service service ID for NVMe over Fabrics discovery service\n"); - printf(" -n nqn NQN of NVMe over Fabrics discovery service\n"); + printf(" -r trid remote NVMe over Fabrics target address\n"); + printf(" Format: 'key:value [key:value] ...'\n"); + printf(" Keys:\n"); + printf(" trtype Transport type (e.g. RDMA)\n"); + printf(" adrfam Address family (e.g. IPv4, IPv6)\n"); + printf(" traddr Transport address (e.g. 192.168.100.8)\n"); + printf(" trsvcid Transport service identifier (e.g. 4420)\n"); + printf(" subnqn Subsystem NQN (default: %s)\n", SPDK_NVMF_DISCOVERY_NQN); + printf(" Example: -r 'trtype:RDMA adrfam:IPv4 traddr:192.168.100.8 trsvcid:4420'\n"); spdk_tracelog_usage(stdout, "-t"); @@ -892,7 +898,7 @@ parse_args(int argc, char **argv) g_trid.trtype = SPDK_NVME_TRANSPORT_PCIE; snprintf(g_trid.subnqn, sizeof(g_trid.subnqn), "%s", SPDK_NVMF_DISCOVERY_NQN); - while ((op = getopt(argc, argv, "a:n:s:t:xH")) != -1) { + while ((op = getopt(argc, argv, "r:t:xH")) != -1) { switch (op) { case 'x': g_hex_dump = true; @@ -911,14 +917,11 @@ parse_args(int argc, char **argv) return 0; #endif break; - case 'a': - snprintf(g_trid.traddr, sizeof(g_trid.traddr), "%s", optarg); - break; - case 's': - snprintf(g_trid.trsvcid, sizeof(g_trid.trsvcid), "%s", optarg); - break; - case 'n': - snprintf(g_trid.subnqn, sizeof(g_trid.subnqn), "%s", optarg); + case 'r': + if (spdk_nvme_transport_id_parse(&g_trid, optarg) != 0) { + fprintf(stderr, "Error parsing transport address\n"); + return 1; + } break; case 'H': default: @@ -927,14 +930,6 @@ parse_args(int argc, char **argv) } } - if ((strlen(g_trid.traddr) == 0) || (strlen(g_trid.trsvcid) == 0) || - (strlen(g_trid.subnqn) == 0)) { - return 0; - } - - g_trid.trtype = SPDK_NVME_TRANSPORT_RDMA; - g_trid.adrfam = SPDK_NVMF_ADRFAM_IPV4; - optind = 1; return 0; @@ -966,7 +961,6 @@ static const char *ealargs[] = { int main(int argc, char **argv) { int rc; - struct spdk_nvme_transport_id *tr_id = NULL; rc = parse_args(argc, argv); if (rc != 0) { @@ -982,17 +976,7 @@ int main(int argc, char **argv) } rc = 0; - if (g_trid.trtype == SPDK_NVME_TRANSPORT_RDMA) { - if (spdk_nvme_probe(&g_trid, NULL, probe_cb, attach_cb, NULL) != 0) { - fprintf(stderr, "spdk_nvme_probe() failed\n"); - } - } - - if ((g_trid.trtype == SPDK_NVME_TRANSPORT_PCIE) && (strlen(g_trid.traddr) != 0)) { - tr_id = &g_trid; - } - - if (spdk_nvme_probe(tr_id, NULL, probe_cb, attach_cb, NULL) != 0) { + if (spdk_nvme_probe(&g_trid, NULL, probe_cb, attach_cb, NULL) != 0) { fprintf(stderr, "spdk_nvme_probe() failed\n"); rc = 1; } diff --git a/test/lib/nvme/nvme.sh b/test/lib/nvme/nvme.sh index 5566c47da..f2b1a56ef 100755 --- a/test/lib/nvme/nvme.sh +++ b/test/lib/nvme/nvme.sh @@ -21,7 +21,7 @@ fi timing_enter identify $rootdir/examples/nvme/identify/identify for bdf in $(linux_iter_pci 0108); do - $rootdir/examples/nvme/identify/identify -a ${bdf} + $rootdir/examples/nvme/identify/identify -r "trtype:PCIe traddr:${bdf}" done timing_exit identify diff --git a/test/nvmf/host/identify.sh b/test/nvmf/host/identify.sh index 59229f294..13ebc091e 100755 --- a/test/nvmf/host/identify.sh +++ b/test/nvmf/host/identify.sh @@ -31,8 +31,18 @@ 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/identify/identify -a "$NVMF_FIRST_TARGET_IP" -s "$NVMF_PORT" -n nqn.2014-08.org.nvmexpress.discovery -t all -$rootdir/examples/nvme/identify/identify -a "$NVMF_FIRST_TARGET_IP" -s "$NVMF_PORT" -n nqn.2016-06.io.spdk:cnode1 -t all +$rootdir/examples/nvme/identify/identify -r "\ + trtype:RDMA \ + adrfam:IPv4 \ + traddr:$NVMF_FIRST_TARGET_IP \ + trsvcid:$NVMF_PORT \ + subnqn:nqn.2014-08.org.nvmexpress.discovery" -t all +$rootdir/examples/nvme/identify/identify -r "\ + trtype:RDMA \ + adrfam:IPv4 \ + traddr:$NVMF_FIRST_TARGET_IP \ + trsvcid:$NVMF_PORT \ + subnqn:nqn.2016-06.io.spdk:cnode1" -t all sync $rpc_py delete_nvmf_subsystem nqn.2016-06.io.spdk:cnode1 diff --git a/test/nvmf/host/identify_kernel_nvmf.sh b/test/nvmf/host/identify_kernel_nvmf.sh index ba75a8404..207f62f48 100755 --- a/test/nvmf/host/identify_kernel_nvmf.sh +++ b/test/nvmf/host/identify_kernel_nvmf.sh @@ -43,7 +43,12 @@ echo -n $NVMF_PORT > /sys/kernel/config/nvmet/ports/1/addr_trsvcid ln -s /sys/kernel/config/nvmet/subsystems/$subsystemname /sys/kernel/config/nvmet/ports/1/subsystems/$subsystemname -$rootdir/examples/nvme/identify/identify -a "$NVMF_FIRST_TARGET_IP" -s "$NVMF_PORT" -n nqn.2014-08.org.nvmexpress.discovery -t all +$rootdir/examples/nvme/identify/identify -r "\ + trtype:RDMA \ + adrfam:IPv4 \ + traddr:$NVMF_FIRST_TARGET_IP \ + trsvcid:$NVMF_PORT \ + subnqn:nqn.2014-08.org.nvmexpress.discovery" -t all rm -rf /sys/kernel/config/nvmet/ports/1/subsystems/$subsystemname