diff --git a/include/spdk/nvme.h b/include/spdk/nvme.h index 2b956c59c..936efc17b 100644 --- a/include/spdk/nvme.h +++ b/include/spdk/nvme.h @@ -100,6 +100,13 @@ struct spdk_nvme_ctrlr_opts { * The queue depth of each NVMe I/O queue. */ uint32_t queue_size; + + /** + * The host NQN to use when connecting to NVMe over Fabrics controllers. + * + * Unused for local PCIe-attached NVMe devices. + */ + char hostnqn[SPDK_NVMF_NQN_MAX_LEN + 1]; }; /** diff --git a/lib/nvme/nvme_ctrlr.c b/lib/nvme/nvme_ctrlr.c index 2a05d3f8e..e7e96f498 100644 --- a/lib/nvme/nvme_ctrlr.c +++ b/lib/nvme/nvme_ctrlr.c @@ -81,6 +81,7 @@ spdk_nvme_ctrlr_opts_set_defaults(struct spdk_nvme_ctrlr_opts *opts) opts->arb_mechanism = SPDK_NVME_CC_AMS_RR; opts->keep_alive_timeout_ms = 10 * 1000; opts->queue_size = DEFAULT_MAX_QUEUE_SIZE; + strncpy(opts->hostnqn, DEFAULT_HOSTNQN, sizeof(opts->hostnqn)); } struct spdk_nvme_qpair * diff --git a/lib/nvme/nvme_internal.h b/lib/nvme/nvme_internal.h index 59ce5ec3c..b1dde21d4 100644 --- a/lib/nvme/nvme_internal.h +++ b/lib/nvme/nvme_internal.h @@ -94,6 +94,8 @@ #define DEFAULT_MAX_IO_QUEUES (1024) #define DEFAULT_MAX_QUEUE_SIZE (256) +#define DEFAULT_HOSTNQN "nqn.2016-06.io.spdk:host" + enum nvme_payload_type { NVME_PAYLOAD_TYPE_INVALID = 0, diff --git a/lib/nvme/nvme_rdma.c b/lib/nvme/nvme_rdma.c index cd7b1fc63..f1749d002 100644 --- a/lib/nvme/nvme_rdma.c +++ b/lib/nvme/nvme_rdma.c @@ -61,7 +61,6 @@ #define NVME_RDMA_TIME_OUT_IN_MS 2000 #define NVME_RDMA_RW_BUFFER_SIZE 131072 #define NVME_HOST_ID_DEFAULT "12345679890" -#define NVME_HOST_NQN "nqn.2016-06.io.spdk:host" #define NVME_HOST_MAX_ENTRIES_PER_QUEUE (127) @@ -765,7 +764,7 @@ nvme_rdma_qpair_fabric_connect(struct nvme_rdma_qpair *rqpair) strncpy((char *)&nvmf_data->hostid, (char *)NVME_HOST_ID_DEFAULT, strlen((char *)NVME_HOST_ID_DEFAULT)); - strncpy((char *)nvmf_data->hostnqn, NVME_HOST_NQN, sizeof(nvmf_data->hostnqn)); + strncpy((char *)nvmf_data->hostnqn, ctrlr->opts.hostnqn, sizeof(nvmf_data->hostnqn)); strncpy((char *)nvmf_data->subnqn, ctrlr->probe_info.nqn, sizeof(nvmf_data->subnqn)); if (nvme_qpair_is_admin_queue(&rqpair->qpair)) {