diff --git a/lib/nvmf/conf.c b/lib/nvmf/conf.c index b5b2c688d..d1861655b 100644 --- a/lib/nvmf/conf.c +++ b/lib/nvmf/conf.c @@ -64,6 +64,10 @@ struct spdk_nvmf_probe_ctx { #define SPDK_NVMF_CONFIG_QUEUES_PER_SESSION_MIN 2 #define SPDK_NVMF_CONFIG_QUEUES_PER_SESSION_MAX 1024 +#define SPDK_NVMF_CONFIG_QUEUE_DEPTH_DEFAULT 128 +#define SPDK_NVMF_CONFIG_QUEUE_DEPTH_MIN 16 +#define SPDK_NVMF_CONFIG_QUEUE_DEPTH_MAX 1024 + static int spdk_nvmf_parse_nvmf_tgt(void) { @@ -80,10 +84,15 @@ spdk_nvmf_parse_nvmf_tgt(void) max_queue_depth = spdk_conf_section_get_intval(sp, "MaxQueueDepth"); if (max_queue_depth < 0) { - max_queue_depth = SPDK_NVMF_DEFAULT_MAX_QUEUE_DEPTH; + max_queue_depth = SPDK_NVMF_CONFIG_QUEUE_DEPTH_DEFAULT; } + max_queue_depth = nvmf_max(max_queue_depth, SPDK_NVMF_CONFIG_QUEUE_DEPTH_MIN); + max_queue_depth = nvmf_min(max_queue_depth, SPDK_NVMF_CONFIG_QUEUE_DEPTH_MAX); max_queues_per_sess = spdk_conf_section_get_intval(sp, "MaxQueuesPerSession"); + if (max_queues_per_sess < 0) { + max_queues_per_sess = SPDK_NVMF_CONFIG_QUEUES_PER_SESSION_DEFAULT; + } max_queues_per_sess = nvmf_max(max_queues_per_sess, SPDK_NVMF_CONFIG_QUEUES_PER_SESSION_MIN); max_queues_per_sess = nvmf_min(max_queues_per_sess, SPDK_NVMF_CONFIG_QUEUES_PER_SESSION_MAX); diff --git a/lib/nvmf/nvmf.c b/lib/nvmf/nvmf.c index 427645f45..4ed7e75af 100644 --- a/lib/nvmf/nvmf.c +++ b/lib/nvmf/nvmf.c @@ -58,7 +58,7 @@ spdk_nvmf_initialize_pools(void) { SPDK_NOTICELOG("\n*** NVMf Pool Creation ***\n"); - g_num_requests = MAX_SUBSYSTEMS * g_nvmf_tgt.max_queues_per_session * g_nvmf_tgt.MaxQueueDepth; + g_num_requests = MAX_SUBSYSTEMS * g_nvmf_tgt.max_queues_per_session * g_nvmf_tgt.max_queue_depth; /* create NVMe backend request pool */ request_mempool = rte_mempool_create("NVMe_Pool", @@ -120,17 +120,8 @@ nvmf_tgt_init(int max_queue_depth, int max_queues_per_sess) { int rc; - if (max_queue_depth >= 1 && - max_queue_depth <= SPDK_NVMF_DEFAULT_MAX_QUEUE_DEPTH) { - g_nvmf_tgt.MaxQueueDepth = max_queue_depth; - SPDK_TRACELOG(SPDK_TRACE_DEBUG, "MaxQueueDepth: %d\n", - g_nvmf_tgt.MaxQueueDepth); - } else { - SPDK_ERRLOG("Invalid MaxQueueDepth: %d\n", max_queue_depth); - return -EINVAL; - } - g_nvmf_tgt.max_queues_per_session = max_queues_per_sess; + g_nvmf_tgt.max_queue_depth = max_queue_depth; rc = pthread_mutex_init(&g_nvmf_tgt.mutex, NULL); if (rc != 0) { diff --git a/lib/nvmf/nvmf_internal.h b/lib/nvmf/nvmf_internal.h index 62ae84ea0..d6d64e684 100644 --- a/lib/nvmf/nvmf_internal.h +++ b/lib/nvmf/nvmf_internal.h @@ -56,7 +56,6 @@ #define SPDK_NVMF_MAX_RECV_DATA_TRANSFER_SIZE DEFAULT_BB_SIZE #define SPDK_NVMF_DEFAULT_NUM_SESSIONS_PER_LCORE 1 -#define SPDK_NVMF_DEFAULT_MAX_QUEUE_DEPTH 128 #define SPDK_NVMF_DEFAULT_SIN_PORT ((uint16_t)4420) #define OBJECT_NVMF_IO 0x30 @@ -99,7 +98,7 @@ struct __attribute__((packed)) nvme_read_cdw13 { struct spdk_nvmf_globals { pthread_mutex_t mutex; - int MaxQueueDepth; + int max_queue_depth; int max_queues_per_session; uint16_t sin_port; diff --git a/lib/nvmf/rdma.c b/lib/nvmf/rdma.c index 112c0b9b4..883313821 100644 --- a/lib/nvmf/rdma.c +++ b/lib/nvmf/rdma.c @@ -628,8 +628,8 @@ nvmf_rdma_connect(struct rdma_cm_event *event) if (host_event_data->private_data == NULL || host_event_data->private_data_len < sizeof(struct spdk_nvmf_rdma_request_private_data)) { /* No private data, so use defaults. */ - qp_depth = SPDK_NVMF_DEFAULT_MAX_QUEUE_DEPTH; - rw_depth = SPDK_NVMF_DEFAULT_MAX_QUEUE_DEPTH; + qp_depth = g_nvmf_tgt.max_queue_depth; + rw_depth = g_nvmf_tgt.max_queue_depth; } else { const struct spdk_nvmf_rdma_request_private_data *private_data = host_event_data->private_data; qp_depth = nvmf_min(private_data->hrqsize, private_data->hsqsize); diff --git a/lib/nvmf/session.c b/lib/nvmf/session.c index 67547895f..3ab6c6451 100644 --- a/lib/nvmf/session.c +++ b/lib/nvmf/session.c @@ -47,7 +47,7 @@ nvmf_init_discovery_session_properties(struct nvmf_session *session) { struct spdk_nvmf_extended_identify_ctrlr_data *nvmfdata; - session->vcdata.maxcmd = SPDK_NVMF_DEFAULT_MAX_QUEUE_DEPTH; + session->vcdata.maxcmd = g_nvmf_tgt.max_queue_depth; /* extended data for get log page supportted */ session->vcdata.lpa.edlp = 1; session->vcdata.cntlid = 0; /* There is one controller per subsystem, so its id is 0 */ @@ -100,7 +100,7 @@ nvmf_init_nvme_session_properties(struct nvmf_session *session) session->vcdata.aerl = 0; session->vcdata.cntlid = 0; session->vcdata.kas = 10; - session->vcdata.maxcmd = SPDK_NVMF_DEFAULT_MAX_QUEUE_DEPTH; + session->vcdata.maxcmd = g_nvmf_tgt.max_queue_depth; session->vcdata.mdts = SPDK_NVMF_MAX_RECV_DATA_TRANSFER_SIZE / 4096; session->vcdata.sgls.keyed_sgl = 1; session->vcdata.sgls.sgl_offset = 1;