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 *
|
static struct nvme_rdma_poller *
|
||||||
nvme_rdma_poller_create(struct nvme_rdma_poll_group *group, struct ibv_context *ctx)
|
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) {
|
if (poller->cq == NULL) {
|
||||||
SPDK_ERRLOG("Unable to create CQ, errno %d.\n", errno);
|
SPDK_ERRLOG("Unable to create CQ, errno %d.\n", errno);
|
||||||
free(poller);
|
goto fail;
|
||||||
return NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
STAILQ_INSERT_HEAD(&group->pollers, poller, link);
|
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->current_num_wc = DEFAULT_NVME_RDMA_CQ_SIZE;
|
||||||
poller->required_num_wc = 0;
|
poller->required_num_wc = 0;
|
||||||
return poller;
|
return poller;
|
||||||
|
|
||||||
|
fail:
|
||||||
|
nvme_rdma_poller_destroy(poller);
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -2772,11 +2784,8 @@ nvme_rdma_poll_group_free_pollers(struct nvme_rdma_poll_group *group)
|
|||||||
poller, poller->refcnt);
|
poller, poller->refcnt);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (poller->cq) {
|
|
||||||
ibv_destroy_cq(poller->cq);
|
|
||||||
}
|
|
||||||
STAILQ_REMOVE(&group->pollers, poller, nvme_rdma_poller, link);
|
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);
|
assert(poller->refcnt > 0);
|
||||||
if (--poller->refcnt == 0) {
|
if (--poller->refcnt == 0) {
|
||||||
if (poller->cq) {
|
|
||||||
ibv_destroy_cq(poller->cq);
|
|
||||||
}
|
|
||||||
STAILQ_REMOVE(&group->pollers, poller, nvme_rdma_poller, link);
|
STAILQ_REMOVE(&group->pollers, poller, nvme_rdma_poller, link);
|
||||||
free(poller);
|
|
||||||
group->num_pollers--;
|
group->num_pollers--;
|
||||||
|
nvme_rdma_poller_destroy(poller);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user