From c9c80e6932ecd1876cf34eaedaea1db80437e67c Mon Sep 17 00:00:00 2001 From: Evgeniy Kochetov Date: Sun, 28 Jul 2019 11:36:30 +0000 Subject: [PATCH] nvmf/rpc: Fix io channel reference counting in NVMf statistics NVMf statistics functions use spdk_get_io_channel function to get a poll group. It increases reference counter in io channel and causes problems on application exit. spdk_put_io_channel calls were added to release the channel. Signed-off-by: Evgeniy Kochetov Change-Id: I832d1eae346c3bc3858ed0ed063ff7a7a897a2f5 Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/463389 Reviewed-by: Jim Harris Reviewed-by: Ben Walker Tested-by: SPDK CI Jenkins --- lib/nvmf/nvmf.c | 1 + lib/nvmf/rdma.c | 1 + 2 files changed, 2 insertions(+) diff --git a/lib/nvmf/nvmf.c b/lib/nvmf/nvmf.c index 657d21775..1399eb187 100644 --- a/lib/nvmf/nvmf.c +++ b/lib/nvmf/nvmf.c @@ -1242,5 +1242,6 @@ spdk_nvmf_poll_group_get_stat(struct spdk_nvmf_tgt *tgt, ch = spdk_get_io_channel(tgt); group = spdk_io_channel_get_ctx(ch); *stat = group->stat; + spdk_put_io_channel(ch); return 0; } diff --git a/lib/nvmf/rdma.c b/lib/nvmf/rdma.c index 101cc4251..904dcf5f7 100644 --- a/lib/nvmf/rdma.c +++ b/lib/nvmf/rdma.c @@ -3698,6 +3698,7 @@ spdk_nvmf_rdma_poll_group_get_stat(struct spdk_nvmf_tgt *tgt, ch = spdk_get_io_channel(tgt); group = spdk_io_channel_get_ctx(ch);; + spdk_put_io_channel(ch); TAILQ_FOREACH(tgroup, &group->tgroups, link) { if (SPDK_NVME_TRANSPORT_RDMA == tgroup->transport->ops->type) { *stat = calloc(1, sizeof(struct spdk_nvmf_transport_poll_group_stat));