Commit dde41908 authored by Ben Walker's avatar Ben Walker Committed by Tomasz Zawadzki
Browse files

event: Move json config loading to init



Loading subsystems and restoring state from a JSON config file is useful
outside of the SPDK application framework, so move it to lib/init.

Change-Id: I7dd3ceace2e7b1b28eef83c91ce6a4eedc85740e
Signed-off-by: default avatarBen Walker <benjamin.walker@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/6645


Reviewed-by: default avatarTom Nabarro <tom.nabarro@outlook.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarChangpeng Liu <changpeng.liu@intel.com>
Reviewed-by: default avatarAleksey Marchuk <alexeymar@mellanox.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Mellanox Build Bot
parent 9f627961
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -219,7 +219,7 @@ spdk_fio_bdev_init_start(void *arg)
{
	bool *done = arg;

	spdk_app_json_config_load(g_json_config_file, SPDK_DEFAULT_RPC_ADDR,
	spdk_subsystem_init_from_json_config(g_json_config_file, SPDK_DEFAULT_RPC_ADDR,
					     spdk_fio_bdev_init_done, done, true);
}

+14 −0
Original line number Diff line number Diff line
@@ -76,6 +76,20 @@ typedef void (*spdk_subsystem_init_fn)(int rc, void *ctx);
 */
void spdk_subsystem_init(spdk_subsystem_init_fn cb_fn, void *cb_arg);

/**
 * Like spdk_subsystem_init, but additionally configure each subsystem using the provided JSON config
 * file. This will automatically start a JSON RPC server and then stop it.
 *
 * \param json_config_file Path to a JSON config file.
 * \param rpc_addr Path to a unix domain socket to send configuration RPCs to.
 * \param cb_fn Function called when the process is complete.
 * \param cb_arg User context passed to cb_fn.
 * \param stop_on_error Whether to stop initialization if one of the JSON RPCs fails.
 */
void spdk_subsystem_init_from_json_config(const char *json_config_file, const char *rpc_addr,
		spdk_subsystem_init_fn cb_fn, void *cb_arg,
		bool stop_on_error);

typedef void (*spdk_subsystem_fini_fn)(void *ctx);

/**
+0 −6
Original line number Diff line number Diff line
@@ -164,12 +164,6 @@ int spdk_reactor_set_interrupt_mode(uint32_t lcore, bool new_in_interrupt,
 */
struct spdk_thread *_spdk_get_app_thread(void);

typedef void (*spdk_app_init_fn)(int rc, void *ctx);

void spdk_app_json_config_load(const char *json_config_file, const char *rpc_addr,
			       spdk_app_init_fn cb_fn, void *cb_arg,
			       bool stop_on_error);

struct spdk_governor_capabilities {
	bool freq_change;
	bool freq_getset;
+1 −1
Original line number Diff line number Diff line
@@ -40,7 +40,7 @@ SO_MINOR := 0
CFLAGS += $(ENV_CFLAGS)

LIBNAME = event
C_SRCS = app.c reactor.c json_config.c log_rpc.c \
C_SRCS = app.c reactor.c log_rpc.c \
	 app_rpc.c scheduler_static.c

# Do not compile schedulers and governors based on DPDK env
+3 −2
Original line number Diff line number Diff line
@@ -403,7 +403,8 @@ bootstrap_fn(void *arg1)

	if (g_spdk_app.json_config_file) {
		g_delay_subsystem_init = false;
		spdk_app_json_config_load(g_spdk_app.json_config_file, g_spdk_app.rpc_addr, app_start_rpc,
		spdk_subsystem_init_from_json_config(g_spdk_app.json_config_file, g_spdk_app.rpc_addr,
						     app_start_rpc,
						     NULL, !g_spdk_app.json_config_ignore_errors);
	} else {
		if (!g_delay_subsystem_init) {
Loading