From: Ming Lin Date: Tue, 7 Jun 2016 15:19:25 +0000 (+0200) Subject: Implement connect command X-Git-Tag: v0.8~31 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=fbf8609b701db608abe7c3bf61e152c9209451db;p=users%2Fsagi%2Fnvme-cli.git Implement connect command Example usage: root@host: nvme connect -t rdma -a 192.168.2.2 -p 1023 -n nqn.testiqn Signed-off-by: Ming Lin Tested-by: Armen Baloyan Tested-by: Sagi Grimberg Reviewed-by: Jay Freyensee --- diff --git a/fabrics.c b/fabrics.c index 50dfcd80..84dde2b2 100644 --- 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; +} diff --git a/fabrics.h b/fabrics.h index c80b0166..43072a15 100644 --- 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 2dd2f3a9..902d84b0 100644 --- 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 [] []\n");