nvmf: drop pool size macros

Just calculate the required number of requests once and store it in a
global variable.

Change-Id: Iffeb637a3ac5f69ec89989b84f03699bac483b6e
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
This commit is contained in:
Daniel Verkamp 2016-07-11 16:17:42 -07:00
parent 6d49820adc
commit 353533e229

View File

@ -51,42 +51,21 @@ SPDK_LOG_REGISTER_TRACE_FLAG("nvmf", SPDK_TRACE_NVMF)
#define MAX_SUBSYSTEMS 4
/*
* Define the global pool sizes for the maximum possible
* requests across all target connection queues.
*
* SPDK_NVMF_ADMINQ_POOL_SIZE: There is a single admin queue
* for each subsystem session.
*
* SPDK_NVMF_IOQ_POOL_SIZE: MaxConnectionsPerSession is config
* option that defines the total connection queues per session,
* so we -1 here to not account for the admin queue.
*
* SPDK_NVMF_DESC_POOL_SIZE: The total number of RDMA descriptors
* needed for all possible admin and I/O queue requests.
*/
#define SPDK_NVMF_ADMINQ_POOL_SIZE(spdk) (MAX_SUBSYSTEMS * \
spdk->MaxQueueDepth)
#define SPDK_NVMF_IOQ_POOL_SIZE(spdk) (MAX_SUBSYSTEMS * \
(spdk->MaxConnectionsPerSession - 1) * \
spdk->MaxQueueDepth)
#define SPDK_NVMF_DESC_POOL_SIZE(spdk) (SPDK_NVMF_ADMINQ_POOL_SIZE(spdk) + \
SPDK_NVMF_IOQ_POOL_SIZE(spdk))
struct spdk_nvmf_globals g_nvmf_tgt;
extern struct rte_mempool *request_mempool;
static unsigned g_num_requests;
static int
spdk_nvmf_initialize_pools(struct spdk_nvmf_globals *spdk_nvmf)
spdk_nvmf_initialize_pools(void)
{
SPDK_NOTICELOG("\n*** NVMf Pool Creation ***\n");
g_num_requests = MAX_SUBSYSTEMS * g_nvmf_tgt.MaxConnectionsPerSession * g_nvmf_tgt.MaxQueueDepth;
/* create NVMe backend request pool */
request_mempool = rte_mempool_create("NVMe_Pool",
SPDK_NVMF_DESC_POOL_SIZE(spdk_nvmf),
g_num_requests,
spdk_nvme_request_size(),
128, 0,
NULL, NULL, NULL, NULL,
@ -96,9 +75,9 @@ spdk_nvmf_initialize_pools(struct spdk_nvmf_globals *spdk_nvmf)
return -1;
}
SPDK_TRACELOG(SPDK_TRACE_DEBUG, "NVMe request_mempool %p, size 0x%u bytes\n",
SPDK_TRACELOG(SPDK_TRACE_DEBUG, "NVMe request_mempool %p, size %" PRIu64 " bytes\n",
request_mempool,
(unsigned int)(SPDK_NVMF_DESC_POOL_SIZE(spdk_nvmf) * spdk_nvme_request_size()));
(uint64_t)g_num_requests * spdk_nvme_request_size());
return 0;
}
@ -117,10 +96,9 @@ static int spdk_nvmf_check_pool(struct rte_mempool *pool, uint32_t count)
static int
spdk_nvmf_check_pools(void)
{
struct spdk_nvmf_globals *spdk_nvmf = &g_nvmf_tgt;
int rc = 0;
rc += spdk_nvmf_check_pool(request_mempool, SPDK_NVMF_DESC_POOL_SIZE(spdk_nvmf));
rc += spdk_nvmf_check_pool(request_mempool, g_num_requests);
if (rc == 0) {
return 0;
@ -173,7 +151,7 @@ nvmf_tgt_init(char *nodebase,
g_nvmf_tgt.sin_port = htons(SPDK_NVMF_DEFAULT_SIN_PORT);
}
rc = spdk_nvmf_initialize_pools(&g_nvmf_tgt);
rc = spdk_nvmf_initialize_pools();
if (rc != 0) {
SPDK_ERRLOG("spdk_nvmf_initialize_pools() failed\n");
return rc;