nvmf: track num_poll_groups in spdk_nvmf_tgt

This will be useful in upcoming patch, where we
use the number of poll groups to dynamically pick
the buf_cache_size for each transport poll group.

Signed-off-by: Jim Harris <james.r.harris@intel.com>
Change-Id: Id166098244287c56f12cdd88ba27a17fa34a4348
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/17331
Reviewed-by: Aleksey Marchuk <alexeymar@nvidia.com>
Community-CI: Mellanox Build Bot
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
This commit is contained in:
Jim Harris 2023-03-24 21:53:08 +00:00
parent 680ed635b3
commit f9424ae73d
3 changed files with 7 additions and 0 deletions

View File

@ -131,6 +131,7 @@ nvmf_tgt_destroy_poll_group(void *io_device, void *ctx_buf)
pthread_mutex_lock(&tgt->mutex);
TAILQ_REMOVE(&tgt->poll_groups, group, link);
tgt->num_poll_groups--;
pthread_mutex_unlock(&tgt->mutex);
assert(!(tgt->state == NVMF_TGT_PAUSING || tgt->state == NVMF_TGT_RESUMING));
@ -212,6 +213,7 @@ nvmf_tgt_create_poll_group(void *io_device, void *ctx_buf)
}
pthread_mutex_lock(&tgt->mutex);
tgt->num_poll_groups++;
TAILQ_INSERT_TAIL(&tgt->poll_groups, group, link);
pthread_mutex_unlock(&tgt->mutex);
@ -307,6 +309,7 @@ spdk_nvmf_tgt_create(struct spdk_nvmf_target_opts *opts)
tgt->discovery_genctr = 0;
TAILQ_INIT(&tgt->transports);
TAILQ_INIT(&tgt->poll_groups);
tgt->num_poll_groups = 0;
tgt->subsystems = calloc(tgt->max_subsystems, sizeof(struct spdk_nvmf_subsystem *));
if (!tgt->subsystems) {

View File

@ -69,6 +69,7 @@ struct spdk_nvmf_tgt {
void *destroy_cb_arg;
uint16_t crdt[3];
uint16_t num_poll_groups;
TAILQ_ENTRY(spdk_nvmf_tgt) link;
};

View File

@ -174,6 +174,7 @@ test_nvmf_tgt_create_poll_group(void)
TAILQ_INIT(&tgt.transports);
TAILQ_INIT(&tgt.poll_groups);
tgt.num_poll_groups = 0;
pthread_mutex_init(&tgt.mutex, NULL);
transport.tgt = &tgt;
TAILQ_INSERT_TAIL(&tgt.transports, &transport, link);
@ -191,11 +192,13 @@ test_nvmf_tgt_create_poll_group(void)
CU_ASSERT(group.sgroups[0].ns_info[0].crkey == 0xaa);
CU_ASSERT(group.sgroups[0].ns_info[0].rtype == 0xbb);
CU_ASSERT(TAILQ_FIRST(&tgt.poll_groups) == &group);
CU_ASSERT(tgt.num_poll_groups == 1);
CU_ASSERT(group.thread == thread);
CU_ASSERT(group.poller != NULL);
nvmf_tgt_destroy_poll_group((void *)&tgt, (void *)&group);
CU_ASSERT(TAILQ_EMPTY(&tgt.poll_groups));
CU_ASSERT(tgt.num_poll_groups == 0);
free(tgt.subsystems[0]->ns);
free(tgt.subsystems);