From 47f1db1344c04d47f9abe06d0bcd0de4c9d2701a Mon Sep 17 00:00:00 2001 From: Dariusz Stojaczyk Date: Thu, 26 Jul 2018 20:34:30 +0200 Subject: [PATCH] bdev/null: free global resources on module finish Also, don't try to remove any bdevs. The bdev layer does that before module fini is even started. Change-Id: I869f4b9e6d8590bfae2504a96d971c4f8866aeb9 Signed-off-by: Dariusz Stojaczyk Reviewed-on: https://review.gerrithub.io/420577 Tested-by: SPDK CI Jenkins Chandler-Test-Pool: SPDK Automated Test System Reviewed-by: Changpeng Liu Reviewed-by: Jim Harris --- lib/bdev/null/bdev_null.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/lib/bdev/null/bdev_null.c b/lib/bdev/null/bdev_null.c index f6cf49284..40e0987ae 100644 --- a/lib/bdev/null/bdev_null.c +++ b/lib/bdev/null/bdev_null.c @@ -66,6 +66,7 @@ static struct spdk_bdev_module null_if = { .module_init = bdev_null_initialize, .module_fini = bdev_null_finish, .config_text = bdev_null_get_spdk_running_config, + .async_fini = true, }; SPDK_BDEV_MODULE_REGISTER(&null_if) @@ -350,14 +351,17 @@ end: return rc; } +static void +_bdev_null_finish_cb(void *arg) +{ + spdk_dma_free(g_null_read_buf); + spdk_bdev_module_finish_done(); +} + static void bdev_null_finish(void) { - struct null_bdev *bdev, *tmp; - - TAILQ_FOREACH_SAFE(bdev, &g_null_bdev_head, tailq, tmp) { - spdk_bdev_unregister(&bdev->bdev, NULL, NULL); - } + spdk_io_device_unregister(&g_null_bdev_head, _bdev_null_finish_cb); } static void