nvme-fabrics: Add host_traddr options field to host infrastructure
[cascardo/linux.git] / drivers / nvme / host / fabrics.c
index 2867b92..1c07b76 100644 (file)
@@ -116,6 +116,9 @@ int nvmf_get_address(struct nvme_ctrl *ctrl, char *buf, int size)
        if (ctrl->opts->mask & NVMF_OPT_TRSVCID)
                len += snprintf(buf + len, size - len, "%strsvcid=%s",
                                (len) ? "," : "", ctrl->opts->trsvcid);
+       if (ctrl->opts->mask & NVMF_OPT_HOST_TRADDR)
+               len += snprintf(buf + len, size - len, "%shost_traddr=%s",
+                               (len) ? "," : "", ctrl->opts->host_traddr);
        len += snprintf(buf + len, size - len, "\n");
 
        return len;
@@ -518,6 +521,7 @@ static const match_table_t opt_tokens = {
        { NVMF_OPT_RECONNECT_DELAY,     "reconnect_delay=%d"    },
        { NVMF_OPT_KATO,                "keep_alive_tmo=%d"     },
        { NVMF_OPT_HOSTNQN,             "hostnqn=%s"            },
+       { NVMF_OPT_HOST_TRADDR,         "host_traddr=%s"        },
        { NVMF_OPT_ERR,                 NULL                    }
 };
 
@@ -674,6 +678,14 @@ static int nvmf_parse_options(struct nvmf_ctrl_options *opts,
                        }
                        opts->reconnect_delay = token;
                        break;
+               case NVMF_OPT_HOST_TRADDR:
+                       p = match_strdup(args);
+                       if (!p) {
+                               ret = -ENOMEM;
+                               goto out;
+                       }
+                       opts->host_traddr = p;
+                       break;
                default:
                        pr_warn("unknown parameter or missing value '%s' in ctrl creation request\n",
                                p);
@@ -740,6 +752,7 @@ void nvmf_free_options(struct nvmf_ctrl_options *opts)
        kfree(opts->traddr);
        kfree(opts->trsvcid);
        kfree(opts->subsysnqn);
+       kfree(opts->host_traddr);
        kfree(opts);
 }
 EXPORT_SYMBOL_GPL(nvmf_free_options);