Commit e57bb1af authored by Tomasz Zawadzki's avatar Tomasz Zawadzki
Browse files

lib/bdev: build bdev_wait_for_examine into subsystem



Since user/orchestration has no chance to call
bdev_wait_for_examine when loading json configuration,
this RPC is now always built into bdev subsystem json.

This behaviour was already there for SPDK_RPC_STARTUP,
see bdev_module_action_complete().
Yet it did not apply to SPDK_RPC_RUNTIME RPCs, as the
bdev module initialization was already complete.

Making sure all SPDK applications finish their startup
when all bdevs are ready to be used. See issue below:

Fixes #1675

Signed-off-by: default avatarTomasz Zawadzki <tomasz.zawadzki@intel.com>
Change-Id: I0f60f56932da020a15deeef09a5a1544f3a1bae6
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/5481


Community-CI: Broadcom CI
Community-CI: Mellanox Build Bot
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatar <dongx.yi@intel.com>
Reviewed-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
parent c5c7de44
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -11,7 +11,9 @@ parameter in spdk_bdev_get_opts function. Two fields `small_buf_pool_size` and
the small and large buffer pool size of the whole bdev module.

A new API `spdk_bdev_wait_for_examine` was added to allow for checking state of
examine process. Along with corresponding `bdev_wait_for_examine` RPC.
examine process. Along with corresponding `bdev_wait_for_examine` RPC, which
is now always called during `spdk_bdev_subsystem_config_json` making sure
every bdev is ready to be used.

### blob

+5 −0
Original line number Diff line number Diff line
@@ -1152,6 +1152,11 @@ spdk_bdev_subsystem_config_json(struct spdk_json_write_ctx *w)

	pthread_mutex_unlock(&g_bdev_mgr.mutex);

	/* This has to be last RPC in array to make sure all bdevs finished examine */
	spdk_json_write_object_begin(w);
	spdk_json_write_named_string(w, "method", "bdev_wait_for_examine");
	spdk_json_write_object_end(w);

	spdk_json_write_array_end(w);
}

+1 −0
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@ def filter_methods(do_remove_global_rpcs):
        'nvmf_set_max_subsystems',
        'nvmf_create_transport',
        'bdev_set_options',
        'bdev_wait_for_examine',
        'bdev_nvme_set_options',
        'bdev_nvme_set_hotplug',
        'sock_impl_set_options',