From 597a7d08b595ba96175e3221fbd9ebb94f222afa Mon Sep 17 00:00:00 2001 From: Changpeng Liu Date: Sat, 25 Apr 2020 20:38:30 -0400 Subject: [PATCH] bdev/nvme: use g_nvme_bdev_ctrlrs as the poll group io device IO device "bdev_nvme_poll_groups" is not unregistered in the finish module, so we need to unregister this io device, since the "nvme_if" is staic variable in bdev_nvme.c, it's can't be accessed in common.c so we use "g_nvme_bdev_ctrlrs" instead. Change-Id: Id4675f5acc8f386609903497da5ca84bf8af3a15 Signed-off-by: Changpeng Liu Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/2035 Community-CI: Mellanox Build Bot Community-CI: Broadcom CI Tested-by: SPDK CI Jenkins Reviewed-by: Shuhei Matsumoto Reviewed-by: Seth Howell Reviewed-by: Aleksey Marchuk --- module/bdev/nvme/bdev_nvme.c | 6 ++++-- module/bdev/nvme/common.c | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/module/bdev/nvme/bdev_nvme.c b/module/bdev/nvme/bdev_nvme.c index 05ca22925..3002d832e 100644 --- a/module/bdev/nvme/bdev_nvme.c +++ b/module/bdev/nvme/bdev_nvme.c @@ -728,7 +728,7 @@ bdev_nvme_create_cb(void *io_device, void *ctx_buf) } } - pg_ch = spdk_get_io_channel(&nvme_if); + pg_ch = spdk_get_io_channel(&g_nvme_bdev_ctrlrs); if (!pg_ch) { goto err; } @@ -1817,7 +1817,8 @@ bdev_nvme_library_init(void) g_bdev_nvme_init_thread = spdk_get_thread(); - spdk_io_device_register(&nvme_if, bdev_nvme_poll_group_create_cb, bdev_nvme_poll_group_destroy_cb, + spdk_io_device_register(&g_nvme_bdev_ctrlrs, bdev_nvme_poll_group_create_cb, + bdev_nvme_poll_group_destroy_cb, sizeof(struct nvme_bdev_poll_group), "bdev_nvme_poll_groups"); sp = spdk_conf_find_section(NULL, "Nvme"); @@ -2063,6 +2064,7 @@ bdev_nvme_library_fini(void) g_bdev_nvme_module_finish = true; if (TAILQ_EMPTY(&g_nvme_bdev_ctrlrs)) { pthread_mutex_unlock(&g_bdev_nvme_mutex); + spdk_io_device_unregister(&g_nvme_bdev_ctrlrs, NULL); spdk_bdev_module_finish_done(); return; } diff --git a/module/bdev/nvme/common.c b/module/bdev/nvme/common.c index 120884904..67ee495f0 100644 --- a/module/bdev/nvme/common.c +++ b/module/bdev/nvme/common.c @@ -133,6 +133,7 @@ nvme_bdev_unregister_cb(void *io_device) pthread_mutex_lock(&g_bdev_nvme_mutex); if (g_bdev_nvme_module_finish && TAILQ_EMPTY(&g_nvme_bdev_ctrlrs)) { pthread_mutex_unlock(&g_bdev_nvme_mutex); + spdk_io_device_unregister(&g_nvme_bdev_ctrlrs, NULL); spdk_bdev_module_finish_done(); return; }