* [PATCH v2 1/2] fabrics: add fabrics_ prefix to fabrics operations
@ 2020-04-01 21:53 Sagi Grimberg
2020-04-01 21:53 ` [PATCH v2 2/2] fabrics: allow traddr to be host name for ip based transports Sagi Grimberg
2020-04-02 0:34 ` [PATCH v2 1/2] fabrics: add fabrics_ prefix to fabrics operations Chaitanya Kulkarni
0 siblings, 2 replies; 6+ messages in thread
From: Sagi Grimberg @ 2020-04-01 21:53 UTC (permalink / raw)
To: Keith Busch, linux-nvme
discover/connect/disconnect are generic names which might
clash with other external included libraries.
Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
---
fabrics.c | 8 ++++----
fabrics.h | 8 ++++----
nvme.c | 10 +++++-----
3 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/fabrics.c b/fabrics.c
index e2c9bfb37177..a7d628b1f0c9 100644
--- a/fabrics.c
+++ b/fabrics.c
@@ -1251,7 +1251,7 @@ out:
return ret;
}
-int discover(const char *desc, int argc, char **argv, bool connect)
+int fabrics_discover(const char *desc, int argc, char **argv, bool connect)
{
char argstr[BUF_SIZE];
int ret;
@@ -1306,7 +1306,7 @@ out:
return nvme_status_to_errno(ret, true);
}
-int connect(const char *desc, int argc, char **argv)
+int fabrics_connect(const char *desc, int argc, char **argv)
{
char argstr[BUF_SIZE];
int instance, ret;
@@ -1439,7 +1439,7 @@ static int disconnect_by_device(char *device)
return remove_ctrl(instance);
}
-int disconnect(const char *desc, int argc, char **argv)
+int fabrics_disconnect(const char *desc, int argc, char **argv)
{
const char *nqn = "nqn name";
const char *device = "nvme device";
@@ -1484,7 +1484,7 @@ out:
return nvme_status_to_errno(ret, true);
}
-int disconnect_all(const char *desc, int argc, char **argv)
+int fabrics_disconnect_all(const char *desc, int argc, char **argv)
{
struct nvme_topology t = { };
int i, j, err;
diff --git a/fabrics.h b/fabrics.h
index b8e53f492b53..f5b8eaf6bba0 100644
--- a/fabrics.h
+++ b/fabrics.h
@@ -5,9 +5,9 @@
extern char *hostnqn_read(void);
-extern int discover(const char *desc, int argc, char **argv, bool connect);
-extern int connect(const char *desc, int argc, char **argv);
-extern int disconnect(const char *desc, int argc, char **argv);
-extern int disconnect_all(const char *desc, int argc, char **argv);
+extern int fabrics_discover(const char *desc, int argc, char **argv, bool connect);
+extern int fabrics_connect(const char *desc, int argc, char **argv);
+extern int fabrics_disconnect(const char *desc, int argc, char **argv);
+extern int fabrics_disconnect_all(const char *desc, int argc, char **argv);
#endif
diff --git a/nvme.c b/nvme.c
index dd3ab5870e62..7e6713a1c8c7 100644
--- a/nvme.c
+++ b/nvme.c
@@ -4779,31 +4779,31 @@ static int show_hostnqn_cmd(int argc, char **argv, struct command *command, stru
static int discover_cmd(int argc, char **argv, struct command *command, struct plugin *plugin)
{
const char *desc = "Send Get Log Page request to Discovery Controller.";
- return discover(desc, argc, argv, false);
+ return fabrics_discover(desc, argc, argv, false);
}
static int connect_all_cmd(int argc, char **argv, struct command *command, struct plugin *plugin)
{
const char *desc = "Discover NVMeoF subsystems and connect to them";
- return discover(desc, argc, argv, true);
+ return fabrics_discover(desc, argc, argv, true);
}
static int connect_cmd(int argc, char **argv, struct command *command, struct plugin *plugin)
{
const char *desc = "Connect to NVMeoF subsystem";
- return connect(desc, argc, argv);
+ return fabrics_connect(desc, argc, argv);
}
static int disconnect_cmd(int argc, char **argv, struct command *command, struct plugin *plugin)
{
const char *desc = "Disconnect from NVMeoF subsystem";
- return disconnect(desc, argc, argv);
+ return fabrics_disconnect(desc, argc, argv);
}
static int disconnect_all_cmd(int argc, char **argv, struct command *command, struct plugin *plugin)
{
const char *desc = "Disconnect from all connected NVMeoF subsystems";
- return disconnect_all(desc, argc, argv);
+ return fabrics_disconnect_all(desc, argc, argv);
}
void register_extension(struct plugin *plugin)
--
2.20.1
_______________________________________________
linux-nvme mailing list
linux-nvme@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-nvme
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v2 2/2] fabrics: allow traddr to be host name for ip based transports
2020-04-01 21:53 [PATCH v2 1/2] fabrics: add fabrics_ prefix to fabrics operations Sagi Grimberg
@ 2020-04-01 21:53 ` Sagi Grimberg
2020-04-02 0:35 ` Chaitanya Kulkarni
2020-04-23 8:22 ` Sagi Grimberg
2020-04-02 0:34 ` [PATCH v2 1/2] fabrics: add fabrics_ prefix to fabrics operations Chaitanya Kulkarni
1 sibling, 2 replies; 6+ messages in thread
From: Sagi Grimberg @ 2020-04-01 21:53 UTC (permalink / raw)
To: Keith Busch, linux-nvme
Some users would like to use well known hostnames instead of remembering
ip addresses. So, allow users to set traddr to be a host name and we will
attempt to resolve against a DNS.
This applies for IP based transports only (e.g. tcp, rdma) while fc and
loop will ignore this distinction.
Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
---
Changes from v1:
- have traddr be either ip address or hostname for ip based transports
(tcp, rdma).
fabrics.c | 80 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 80 insertions(+)
diff --git a/fabrics.c b/fabrics.c
index a7d628b1f0c9..7027a19103a5 100644
--- a/fabrics.c
+++ b/fabrics.c
@@ -33,6 +33,10 @@
#include <sys/stat.h>
#include <stddef.h>
+#include <sys/types.h>
+#include <arpa/inet.h>
+#include <netdb.h>
+
#include "util/parser.h"
#include "nvme-ioctl.h"
#include "nvme-status.h"
@@ -857,6 +861,63 @@ static int build_options(char *argstr, int max_len, bool discover)
return 0;
}
+static bool traddr_is_hostname(struct config *cfg)
+{
+ char addrstr[NVMF_TRADDR_SIZE];
+
+ if (!cfg->traddr)
+ return false;
+ if (strcmp(cfg->transport, "tcp") && strcmp(cfg->transport, "rdma"))
+ return false;
+ if (inet_pton(AF_INET, cfg->traddr, addrstr) > 0 ||
+ inet_pton(AF_INET6, cfg->traddr, addrstr) > 0)
+ return false;
+ return true;
+}
+
+static int hostname2traddr(struct config *cfg)
+{
+ struct addrinfo *host_info, hints = {.ai_family = AF_UNSPEC};
+ char addrstr[NVMF_TRADDR_SIZE];
+ const char *p;
+ int ret;
+
+ ret = getaddrinfo(cfg->traddr, NULL, &hints, &host_info);
+ if (ret) {
+ fprintf(stderr, "failed to resolve host %s info\n", cfg->traddr);
+ return ret;
+ }
+
+ switch (host_info->ai_family) {
+ case AF_INET:
+ p = inet_ntop(host_info->ai_family,
+ &(((struct sockaddr_in *)host_info->ai_addr)->sin_addr),
+ addrstr, NVMF_TRADDR_SIZE);
+ break;
+ case AF_INET6:
+ p = inet_ntop(host_info->ai_family,
+ &(((struct sockaddr_in6 *)host_info->ai_addr)->sin6_addr),
+ addrstr, NVMF_TRADDR_SIZE);
+ break;
+ default:
+ fprintf(stderr, "unrecognized address family (%d) %s\n",
+ host_info->ai_family, cfg->traddr);
+ ret = -EINVAL;
+ goto free_addrinfo;
+ }
+
+ if (!p) {
+ fprintf(stderr, "failed to get traddr for %s\n", cfg->traddr);
+ ret = -errno;
+ goto free_addrinfo;
+ }
+ cfg->traddr = strdup(addrstr);
+
+free_addrinfo:
+ freeaddrinfo(host_info);
+ return ret;
+}
+
static int connect_ctrl(struct nvmf_disc_rsp_page_entry *e)
{
char argstr[BUF_SIZE], *p;
@@ -1230,6 +1291,12 @@ static int discover_from_conf_file(const char *desc, char *argstr,
if (cfg.persistent && !cfg.keep_alive_tmo)
cfg.keep_alive_tmo = NVMF_DEF_DISC_TMO;
+ if (traddr_is_hostname(&cfg)) {
+ ret = hostname2traddr(&cfg);
+ if (ret)
+ goto out;
+ }
+
err = build_options(argstr, BUF_SIZE, true);
if (err) {
ret = err;
@@ -1295,6 +1362,13 @@ int fabrics_discover(const char *desc, int argc, char **argv, bool connect)
} else {
if (cfg.persistent && !cfg.keep_alive_tmo)
cfg.keep_alive_tmo = NVMF_DEF_DISC_TMO;
+
+ if (traddr_is_hostname(&cfg)) {
+ ret = hostname2traddr(&cfg);
+ if (ret)
+ goto out;
+ }
+
ret = build_options(argstr, BUF_SIZE, true);
if (ret)
goto out;
@@ -1339,6 +1413,12 @@ int fabrics_connect(const char *desc, int argc, char **argv)
if (ret)
goto out;
+ if (traddr_is_hostname(&cfg)) {
+ ret = hostname2traddr(&cfg);
+ if (ret)
+ goto out;
+ }
+
ret = build_options(argstr, BUF_SIZE, false);
if (ret)
goto out;
--
2.20.1
_______________________________________________
linux-nvme mailing list
linux-nvme@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-nvme
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v2 1/2] fabrics: add fabrics_ prefix to fabrics operations
2020-04-01 21:53 [PATCH v2 1/2] fabrics: add fabrics_ prefix to fabrics operations Sagi Grimberg
2020-04-01 21:53 ` [PATCH v2 2/2] fabrics: allow traddr to be host name for ip based transports Sagi Grimberg
@ 2020-04-02 0:34 ` Chaitanya Kulkarni
1 sibling, 0 replies; 6+ messages in thread
From: Chaitanya Kulkarni @ 2020-04-02 0:34 UTC (permalink / raw)
To: Sagi Grimberg, Keith Busch, linux-nvme
On 04/01/2020 02:54 PM, Sagi Grimberg wrote:
> discover/connect/disconnect are generic names which might
> clash with other external included libraries.
>
> Signed-off-by: Sagi Grimberg<sagi@grimberg.me>
> ---
Reviewed-by: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
_______________________________________________
linux-nvme mailing list
linux-nvme@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-nvme
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2 2/2] fabrics: allow traddr to be host name for ip based transports
2020-04-01 21:53 ` [PATCH v2 2/2] fabrics: allow traddr to be host name for ip based transports Sagi Grimberg
@ 2020-04-02 0:35 ` Chaitanya Kulkarni
2020-04-23 8:22 ` Sagi Grimberg
1 sibling, 0 replies; 6+ messages in thread
From: Chaitanya Kulkarni @ 2020-04-02 0:35 UTC (permalink / raw)
To: Sagi Grimberg, Keith Busch, linux-nvme
On 04/01/2020 02:54 PM, Sagi Grimberg wrote:
> Some users would like to use well known hostnames instead of remembering
> ip addresses. So, allow users to set traddr to be a host name and we will
> attempt to resolve against a DNS.
>
> This applies for IP based transports only (e.g. tcp, rdma) while fc and
> loop will ignore this distinction.
>
> Signed-off-by: Sagi Grimberg<sagi@grimberg.me>
Reviewed-by: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
_______________________________________________
linux-nvme mailing list
linux-nvme@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-nvme
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2 2/2] fabrics: allow traddr to be host name for ip based transports
2020-04-01 21:53 ` [PATCH v2 2/2] fabrics: allow traddr to be host name for ip based transports Sagi Grimberg
2020-04-02 0:35 ` Chaitanya Kulkarni
@ 2020-04-23 8:22 ` Sagi Grimberg
2020-04-23 20:30 ` Keith Busch
1 sibling, 1 reply; 6+ messages in thread
From: Sagi Grimberg @ 2020-04-23 8:22 UTC (permalink / raw)
To: Keith Busch, linux-nvme
Any objections with this spin? Keith? Others?
_______________________________________________
linux-nvme mailing list
linux-nvme@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-nvme
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2 2/2] fabrics: allow traddr to be host name for ip based transports
2020-04-23 8:22 ` Sagi Grimberg
@ 2020-04-23 20:30 ` Keith Busch
0 siblings, 0 replies; 6+ messages in thread
From: Keith Busch @ 2020-04-23 20:30 UTC (permalink / raw)
To: Sagi Grimberg; +Cc: linux-nvme
On Thu, Apr 23, 2020 at 01:22:23AM -0700, Sagi Grimberg wrote:
> Any objections with this spin? Keith? Others?
No objections, looks good and applied.
_______________________________________________
linux-nvme mailing list
linux-nvme@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-nvme
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2020-04-23 20:30 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-01 21:53 [PATCH v2 1/2] fabrics: add fabrics_ prefix to fabrics operations Sagi Grimberg
2020-04-01 21:53 ` [PATCH v2 2/2] fabrics: allow traddr to be host name for ip based transports Sagi Grimberg
2020-04-02 0:35 ` Chaitanya Kulkarni
2020-04-23 8:22 ` Sagi Grimberg
2020-04-23 20:30 ` Keith Busch
2020-04-02 0:34 ` [PATCH v2 1/2] fabrics: add fabrics_ prefix to fabrics operations Chaitanya Kulkarni
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).