From 2bbd1eb4449d584f6f5a7eb8df389d8c771d02d2 Mon Sep 17 00:00:00 2001 From: Tomasz Zawadzki Date: Wed, 15 May 2019 08:29:37 -0400 Subject: [PATCH] bdev: move marking bdev module as async to init path Previously whenever bdev module went through init>fini>init, the async modules would trigger assert in spdk_bdev_module_action_done(). This was because starting value for action_in_progress was being set only once - during registration of the modules. With this change, modules are set as async just before their init start. Change-Id: If177a8dc97812b1b264cb61d5ad202ce47fca3b5 Signed-off-by: Tomasz Zawadzki Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/454614 Tested-by: SPDK CI Jenkins Reviewed-by: Shuhei Matsumoto Reviewed-by: Darek Stojaczyk --- lib/bdev/bdev.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/lib/bdev/bdev.c b/lib/bdev/bdev.c index 1524ed37d..33d5fe7c2 100644 --- a/lib/bdev/bdev.c +++ b/lib/bdev/bdev.c @@ -876,6 +876,9 @@ spdk_bdev_modules_init(void) TAILQ_FOREACH(module, &g_bdev_mgr.bdev_modules, internal.tailq) { g_resume_bdev_module = module; + if (module->async_init) { + module->internal.action_in_progress = 1; + } rc = module->module_init(); if (rc != 0) { return rc; @@ -4174,10 +4177,6 @@ spdk_bdev_module_list_add(struct spdk_bdev_module *bdev_module) assert(false); } - if (bdev_module->async_init) { - bdev_module->internal.action_in_progress = 1; - } - /* * Modules with examine callbacks must be initialized first, so they are * ready to handle examine callbacks from later modules that will