Commit b095c515 authored by Konrad Sztyber's avatar Konrad Sztyber Committed by Tomasz Zawadzki
Browse files

keyring: allow modules to return ENODEV



It allows registered modules to be marked as unavailable, e.g. because
the module was disabled in configuration.

Signed-off-by: default avatarKonrad Sztyber <konrad.sztyber@intel.com>
Change-Id: Iff7e2cb9d85d515c2aa017baf2920525c43279fd
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/21759


Community-CI: Mellanox Build Bot
Reviewed-by: default avatarAleksey Marchuk <alexeymar@nvidia.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarJim Harris <jim.harris@samsung.com>
parent 290516a8
Loading
Loading
Loading
Loading
+10 −3
Original line number Diff line number Diff line
@@ -353,12 +353,19 @@ spdk_keyring_init(void)
	}

	pthread_mutexattr_destroy(&attr);
	TAILQ_FOREACH(module, &g_keyring.modules, tailq) {
	TAILQ_FOREACH_SAFE(module, &g_keyring.modules, tailq, tmp) {
		if (module->init != NULL) {
			rc = module->init();
			if (rc != 0) {
				SPDK_ERRLOG("Failed to initialize module %s: %s\n", module->name,
					    spdk_strerror(-rc));
				if (rc == -ENODEV) {
					SPDK_INFOLOG(keyring, "Skipping module %s\n", module->name);
					TAILQ_REMOVE(&g_keyring.modules, module, tailq);
					rc = 0;
					continue;
				}

				SPDK_ERRLOG("Failed to initialize module %s: %s\n",
					    module->name, spdk_strerror(-rc));
				break;
			}
		}