diff --git a/lib/bdev/bdev.c b/lib/bdev/bdev.c index 1c0871da0..44a25d515 100644 --- a/lib/bdev/bdev.c +++ b/lib/bdev/bdev.c @@ -628,9 +628,11 @@ spdk_bdev_init_complete(int rc) * For modules that need to know when subsystem init is complete, * inform them now. */ - TAILQ_FOREACH(m, &g_bdev_mgr.bdev_modules, internal.tailq) { - if (m->init_complete) { - m->init_complete(); + if (rc == 0) { + TAILQ_FOREACH(m, &g_bdev_mgr.bdev_modules, internal.tailq) { + if (m->init_complete) { + m->init_complete(); + } } } @@ -707,6 +709,13 @@ spdk_bdev_modules_init(void) return rc; } +static void +spdk_bdev_init_failed(void *cb_arg) +{ + spdk_bdev_init_complete(-1); + return; +} + void spdk_bdev_initialize(spdk_bdev_init_cb cb_fn, void *cb_arg) { @@ -811,7 +820,7 @@ spdk_bdev_initialize(spdk_bdev_init_cb cb_fn, void *cb_arg) rc = spdk_bdev_modules_init(); if (rc != 0) { SPDK_ERRLOG("bdev modules init failed\n"); - spdk_bdev_init_complete(-1); + spdk_bdev_finish(spdk_bdev_init_failed, NULL); return; }