aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames Smart <james.smart@broadcom.com>2016-08-02 03:42:10 -0400
committerSagi Grimberg <sagi@grimberg.me>2016-09-23 18:37:37 -0400
commit478bcb9388f2c3eedba34ed5811793400047f95d (patch)
tree4b1bc8ad66d638927d6ce70bc3364259fcad613e
parent4a9f05c57f98e794763650056731a0023ebfab5f (diff)
nvme-fabrics: Add host_traddr options field to host infrastructure
Add the host_traddr field to allow specification of the host-port connection info for the transport. Will be used by FC transport. Signed-off-by: James Smart <james.smart@broadcom.com> Acked-by: Johannes Thumshirn <jth@kernel.org> Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
-rw-r--r--drivers/nvme/host/fabrics.c13
-rw-r--r--drivers/nvme/host/fabrics.h4
2 files changed, 17 insertions, 0 deletions
diff --git a/drivers/nvme/host/fabrics.c b/drivers/nvme/host/fabrics.c
index 2867b92cbdfb..1c07b76cbdeb 100644
--- a/drivers/nvme/host/fabrics.c
+++ b/drivers/nvme/host/fabrics.c
@@ -116,6 +116,9 @@ int nvmf_get_address(struct nvme_ctrl *ctrl, char *buf, int size)
116 if (ctrl->opts->mask & NVMF_OPT_TRSVCID) 116 if (ctrl->opts->mask & NVMF_OPT_TRSVCID)
117 len += snprintf(buf + len, size - len, "%strsvcid=%s", 117 len += snprintf(buf + len, size - len, "%strsvcid=%s",
118 (len) ? "," : "", ctrl->opts->trsvcid); 118 (len) ? "," : "", ctrl->opts->trsvcid);
119 if (ctrl->opts->mask & NVMF_OPT_HOST_TRADDR)
120 len += snprintf(buf + len, size - len, "%shost_traddr=%s",
121 (len) ? "," : "", ctrl->opts->host_traddr);
119 len += snprintf(buf + len, size - len, "\n"); 122 len += snprintf(buf + len, size - len, "\n");
120 123
121 return len; 124 return len;
@@ -518,6 +521,7 @@ static const match_table_t opt_tokens = {
518 { NVMF_OPT_RECONNECT_DELAY, "reconnect_delay=%d" }, 521 { NVMF_OPT_RECONNECT_DELAY, "reconnect_delay=%d" },
519 { NVMF_OPT_KATO, "keep_alive_tmo=%d" }, 522 { NVMF_OPT_KATO, "keep_alive_tmo=%d" },
520 { NVMF_OPT_HOSTNQN, "hostnqn=%s" }, 523 { NVMF_OPT_HOSTNQN, "hostnqn=%s" },
524 { NVMF_OPT_HOST_TRADDR, "host_traddr=%s" },
521 { NVMF_OPT_ERR, NULL } 525 { NVMF_OPT_ERR, NULL }
522}; 526};
523 527
@@ -674,6 +678,14 @@ static int nvmf_parse_options(struct nvmf_ctrl_options *opts,
674 } 678 }
675 opts->reconnect_delay = token; 679 opts->reconnect_delay = token;
676 break; 680 break;
681 case NVMF_OPT_HOST_TRADDR:
682 p = match_strdup(args);
683 if (!p) {
684 ret = -ENOMEM;
685 goto out;
686 }
687 opts->host_traddr = p;
688 break;
677 default: 689 default:
678 pr_warn("unknown parameter or missing value '%s' in ctrl creation request\n", 690 pr_warn("unknown parameter or missing value '%s' in ctrl creation request\n",
679 p); 691 p);
@@ -740,6 +752,7 @@ void nvmf_free_options(struct nvmf_ctrl_options *opts)
740 kfree(opts->traddr); 752 kfree(opts->traddr);
741 kfree(opts->trsvcid); 753 kfree(opts->trsvcid);
742 kfree(opts->subsysnqn); 754 kfree(opts->subsysnqn);
755 kfree(opts->host_traddr);
743 kfree(opts); 756 kfree(opts);
744} 757}
745EXPORT_SYMBOL_GPL(nvmf_free_options); 758EXPORT_SYMBOL_GPL(nvmf_free_options);
diff --git a/drivers/nvme/host/fabrics.h b/drivers/nvme/host/fabrics.h
index 2755efde16ac..8f08c3a3406b 100644
--- a/drivers/nvme/host/fabrics.h
+++ b/drivers/nvme/host/fabrics.h
@@ -52,6 +52,7 @@ enum {
52 NVMF_OPT_KATO = 1 << 7, 52 NVMF_OPT_KATO = 1 << 7,
53 NVMF_OPT_HOSTNQN = 1 << 8, 53 NVMF_OPT_HOSTNQN = 1 << 8,
54 NVMF_OPT_RECONNECT_DELAY = 1 << 9, 54 NVMF_OPT_RECONNECT_DELAY = 1 << 9,
55 NVMF_OPT_HOST_TRADDR = 1 << 10,
55}; 56};
56 57
57/** 58/**
@@ -68,6 +69,8 @@ enum {
68 * subsystem which is adding a controller. 69 * subsystem which is adding a controller.
69 * @trsvcid: The transport-specific TRSVCID field for a port on the 70 * @trsvcid: The transport-specific TRSVCID field for a port on the
70 * subsystem which is adding a controller. 71 * subsystem which is adding a controller.
72 * @host_traddr: A transport-specific field identifying the NVME host port
73 * to use for the connection to the controller.
71 * @queue_size: Number of IO queue elements. 74 * @queue_size: Number of IO queue elements.
72 * @nr_io_queues: Number of controller IO queues that will be established. 75 * @nr_io_queues: Number of controller IO queues that will be established.
73 * @reconnect_delay: Time between two consecutive reconnect attempts. 76 * @reconnect_delay: Time between two consecutive reconnect attempts.
@@ -81,6 +84,7 @@ struct nvmf_ctrl_options {
81 char *subsysnqn; 84 char *subsysnqn;
82 char *traddr; 85 char *traddr;
83 char *trsvcid; 86 char *trsvcid;
87 char *host_traddr;
84 size_t queue_size; 88 size_t queue_size;
85 unsigned int nr_io_queues; 89 unsigned int nr_io_queues;
86 unsigned int reconnect_delay; 90 unsigned int reconnect_delay;