nvme_rdma: Factor out poller destroy operation
Poller will have more shared resources when SRQ is supported. This is a preparation. Signed-off-by: Shuhei Matsumoto <smatsumoto@nvidia.com> Signed-off-by: Denis Nagorny <denisn@nvidia.com> Signed-off-by: Evgeniy Kochetov <evgeniik@nvidia.com> Change-Id: Ic3d1cb93dde3f53653a9536a103e5518cebd58e1 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/14173 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Community-CI: Mellanox Build Bot Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Aleksey Marchuk <alexeymar@nvidia.com>
This commit is contained in:
parent
6a59daad2b
commit
6ea9de5fc8
@ -2733,6 +2733,15 @@ nvme_rdma_admin_qpair_abort_aers(struct spdk_nvme_qpair *qpair)
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
nvme_rdma_poller_destroy(struct nvme_rdma_poller *poller)
|
||||
{
|
||||
if (poller->cq) {
|
||||
ibv_destroy_cq(poller->cq);
|
||||
}
|
||||
free(poller);
|
||||
}
|
||||
|
||||
static struct nvme_rdma_poller *
|
||||
nvme_rdma_poller_create(struct nvme_rdma_poll_group *group, struct ibv_context *ctx)
|
||||
{
|
||||
@ -2749,8 +2758,7 @@ nvme_rdma_poller_create(struct nvme_rdma_poll_group *group, struct ibv_context *
|
||||
|
||||
if (poller->cq == NULL) {
|
||||
SPDK_ERRLOG("Unable to create CQ, errno %d.\n", errno);
|
||||
free(poller);
|
||||
return NULL;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
STAILQ_INSERT_HEAD(&group->pollers, poller, link);
|
||||
@ -2758,6 +2766,10 @@ nvme_rdma_poller_create(struct nvme_rdma_poll_group *group, struct ibv_context *
|
||||
poller->current_num_wc = DEFAULT_NVME_RDMA_CQ_SIZE;
|
||||
poller->required_num_wc = 0;
|
||||
return poller;
|
||||
|
||||
fail:
|
||||
nvme_rdma_poller_destroy(poller);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
@ -2772,11 +2784,8 @@ nvme_rdma_poll_group_free_pollers(struct nvme_rdma_poll_group *group)
|
||||
poller, poller->refcnt);
|
||||
}
|
||||
|
||||
if (poller->cq) {
|
||||
ibv_destroy_cq(poller->cq);
|
||||
}
|
||||
STAILQ_REMOVE(&group->pollers, poller, nvme_rdma_poller, link);
|
||||
free(poller);
|
||||
nvme_rdma_poller_destroy(poller);
|
||||
}
|
||||
}
|
||||
|
||||
@ -2808,12 +2817,9 @@ nvme_rdma_poll_group_put_poller(struct nvme_rdma_poll_group *group, struct nvme_
|
||||
{
|
||||
assert(poller->refcnt > 0);
|
||||
if (--poller->refcnt == 0) {
|
||||
if (poller->cq) {
|
||||
ibv_destroy_cq(poller->cq);
|
||||
}
|
||||
STAILQ_REMOVE(&group->pollers, poller, nvme_rdma_poller, link);
|
||||
free(poller);
|
||||
group->num_pollers--;
|
||||
nvme_rdma_poller_destroy(poller);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user