]> www.infradead.org Git - users/hch/nvme-cli.git/commitdiff
Implement connect command
authorMing Lin <ming.l@ssi.samsung.com>
Tue, 7 Jun 2016 15:19:25 +0000 (17:19 +0200)
committerKeith Busch <keith.busch@intel.com>
Tue, 7 Jun 2016 19:08:01 +0000 (13:08 -0600)
Example usage:

root@host: nvme connect -t rdma -a 192.168.2.2 -p 1023 -n nqn.testiqn

Signed-off-by: Ming Lin <ming.l@ssi.samsung.com>
Tested-by: Armen Baloyan <armenx.baloyan@intel.com>
Tested-by: Sagi Grimberg <sagi@grimberg.me>
Reviewed-by: Jay Freyensee <james.p.freyensee@intel.com>
fabrics.c
fabrics.h
nvme.c

index 50dfcd8096661d5c6286b808b0611280d065fb30..84dde2b2f793f56d8446c3838b87add301826dcb 100644 (file)
--- a/fabrics.c
+++ b/fabrics.c
@@ -371,7 +371,7 @@ int discover(const char *desc, int argc, char **argv)
                {"trsvcid", 's', "LIST", CFG_STRING, &cfg.trsvcid, required_argument,
                        "transport service id (e.g. IP port)" },
                {"raw", 'r', "LIST", CFG_STRING, &cfg.raw, required_argument,
-                       "raw" },
+                       "raw output file" },
                {0},
        };
 
@@ -419,3 +419,36 @@ int discover(const char *desc, int argc, char **argv)
 
        return ret;
 }
+
+int connect(const char *desc, int argc, char **argv)
+{
+       char argstr[BUF_SIZE];
+       int instance, ret;
+       const struct argconfig_commandline_options command_line_options[] = {
+               {"transport", 't', "LIST", CFG_STRING, &cfg.transport, required_argument,
+                       "transport type" },
+               {"nqn", 'n', "LIST", CFG_STRING, &cfg.nqn, required_argument,
+                       "nqn name" },
+               {"traddr", 'a', "LIST", CFG_STRING, &cfg.traddr, required_argument,
+                       "transport address" },
+               {"trsvcid", 's', "LIST", CFG_STRING, &cfg.trsvcid, required_argument,
+                       "transport service id (e.g. IP port)" },
+               {0},
+       };
+
+       argconfig_parse(argc, argv, desc, command_line_options, &cfg, sizeof(cfg));
+
+       ret = build_options(argstr, BUF_SIZE);
+       if (ret)
+               return ret;
+
+       if (!cfg.nqn) {
+               fprintf(stderr, "need a -n argument\n");
+               return -EINVAL;
+       }
+
+       instance = add_ctrl(argstr);
+       if (instance < 0)
+               return instance;
+       return 0;
+}
index c80b01660999440d118ffd6cb605d95c52d21008..43072a1566493fd7adb9249212300513eb914de4 100644 (file)
--- a/fabrics.h
+++ b/fabrics.h
@@ -2,5 +2,6 @@
 #define _DISCOVER_H
 
 extern int discover(const char *desc, int argc, char **argv);
+extern int connect(const char *desc, int argc, char **argv);
 
 #endif
diff --git a/nvme.c b/nvme.c
index 2dd2f3a947cc802765867b9b067e1ff6f37fb880..902d84b06bf2ad600f1fc60d7a38a283b1ead64c 100644 (file)
--- a/nvme.c
+++ b/nvme.c
@@ -115,6 +115,7 @@ static const char nvme_version_string[] = NVME_VERSION;
        ENTRY(LNVM_BBTBL_GET, "lnvm-diag-bbtbl", "Diagnose bad block table", lnvm_get_bbtbl) \
        ENTRY(LNVM_BBTBL_SET, "lnvm-diag-set-bbtbl", "Update bad block table", lnvm_set_bbtbl) \
        ENTRY(DISCOVER, "discover", "Discover NVMeoF subsystems", discover_cmd) \
+       ENTRY(CONNECT, "connect", "Connect to NVMeoF subsystem", connect_cmd) \
        ENTRY(VERSION, "version", "Shows the program version", version) \
        ENTRY(HELP, "help", "Display this help", help)
 
@@ -2846,6 +2847,12 @@ static int discover_cmd(int argc, char **argv)
        return discover(desc, argc, argv);
 }
 
+static int connect_cmd(int argc, char **argv)
+{
+       const char *desc = "Connect to NVMeoF subsystem";
+       return connect(desc, argc, argv);
+}
+
 static void usage()
 {
        printf("usage: nvme <command> [<device>] [<args>]\n");