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 <dariuszx.stojaczyk@intel.com>
Reviewed-on: https://review.gerrithub.io/420577
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Chandler-Test-Pool: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
Dariusz Stojaczyk 2018-07-26 20:34:30 +02:00 committed by Jim Harris
parent ecb44872b6
commit 47f1db1344

View File

@ -66,6 +66,7 @@ static struct spdk_bdev_module null_if = {
.module_init = bdev_null_initialize, .module_init = bdev_null_initialize,
.module_fini = bdev_null_finish, .module_fini = bdev_null_finish,
.config_text = bdev_null_get_spdk_running_config, .config_text = bdev_null_get_spdk_running_config,
.async_fini = true,
}; };
SPDK_BDEV_MODULE_REGISTER(&null_if) SPDK_BDEV_MODULE_REGISTER(&null_if)
@ -350,14 +351,17 @@ end:
return rc; return rc;
} }
static void
_bdev_null_finish_cb(void *arg)
{
spdk_dma_free(g_null_read_buf);
spdk_bdev_module_finish_done();
}
static void static void
bdev_null_finish(void) bdev_null_finish(void)
{ {
struct null_bdev *bdev, *tmp; spdk_io_device_unregister(&g_null_bdev_head, _bdev_null_finish_cb);
TAILQ_FOREACH_SAFE(bdev, &g_null_bdev_head, tailq, tmp) {
spdk_bdev_unregister(&bdev->bdev, NULL, NULL);
}
} }
static void static void