Commit f96b8293 authored by Ben Walker's avatar Ben Walker Committed by Darek Stojaczyk
Browse files

event: Don't rely on events capturing arguments during bootstrap



This will make it easier to convert these operations to
spdk_thread_send_msg.

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


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: default avatarChangpeng Liu <changpeng.liu@intel.com>
Reviewed-by: default avatarDarek Stojaczyk <dariusz.stojaczyk@intel.com>
parent c3ab46a1
Loading
Loading
Loading
Loading
+10 −9
Original line number Diff line number Diff line
@@ -59,6 +59,8 @@

struct spdk_app {
	struct spdk_conf		*config;
	const char			*json_config_file;
	const char			*rpc_addr;
	int				shm_id;
	spdk_app_shutdown_cb		shutdown_cb;
	int				rc;
@@ -354,21 +356,18 @@ spdk_app_start_application(void)
static void
spdk_app_start_rpc(void *arg1, void *arg2)
{
	const char *rpc_addr = arg1;

	spdk_rpc_initialize(rpc_addr);
	spdk_rpc_initialize(g_spdk_app.rpc_addr);
	if (!g_delay_subsystem_init) {
		spdk_app_start_application();
	}
}

static void
_spdk_app_json_config_load(void *_app_opts, void *_event_done)
_spdk_app_json_config_load(void *arg1, void *arg2)
{
	struct spdk_app_opts *app_opts = _app_opts;
	struct spdk_event *event_done = _event_done;
	struct spdk_event *event_done = arg1;

	spdk_app_json_config_load(app_opts, event_done);
	spdk_app_json_config_load(g_spdk_app.json_config_file, g_spdk_app.rpc_addr, event_done);
}

static struct spdk_conf *
@@ -666,6 +665,8 @@ spdk_app_start(struct spdk_app_opts *opts, spdk_event_fn start_fn,

	memset(&g_spdk_app, 0, sizeof(g_spdk_app));
	g_spdk_app.config = config;
	g_spdk_app.json_config_file = opts->json_config_file;
	g_spdk_app.rpc_addr = opts->rpc_addr;
	g_spdk_app.shm_id = opts->shm_id;
	g_spdk_app.shutdown_cb = opts->shutdown_cb;
	g_spdk_app.rc = 0;
@@ -675,12 +676,12 @@ spdk_app_start(struct spdk_app_opts *opts, spdk_event_fn start_fn,
	event = spdk_event_allocate(g_init_lcore, bootstrap_fn, NULL, NULL);
	g_app_start_event = spdk_event_allocate(g_init_lcore, start_fn, arg1, NULL);
	g_rpc_start_event = spdk_event_allocate(g_init_lcore, spdk_app_start_rpc,
						(void *)opts->rpc_addr, NULL);
						NULL, NULL);

	if (opts->json_config_file) {
		g_delay_subsystem_init = false;
		g_config_load_event = spdk_event_allocate(g_init_lcore, _spdk_app_json_config_load,
				      opts, g_rpc_start_event);
				      g_rpc_start_event, NULL);
	}

	spdk_event_call(event);
+3 −4
Original line number Diff line number Diff line
@@ -562,10 +562,10 @@ err:
}

void
spdk_app_json_config_load(const struct spdk_app_opts *opts, struct spdk_event *done_event)
spdk_app_json_config_load(const char *json_config_file, const char *rpc_addr,
			  struct spdk_event *done_event)
{
	struct load_json_config_ctx *ctx = calloc(1, sizeof(*ctx));
	const char *rpc_addr;
	int rc;

	assert(done_event);
@@ -577,7 +577,7 @@ spdk_app_json_config_load(const struct spdk_app_opts *opts, struct spdk_event *d
	ctx->done_event = done_event;
	ctx->thread = spdk_get_thread();

	rc = spdk_app_json_config_read(opts->json_config_file, ctx);
	rc = spdk_app_json_config_read(json_config_file, ctx);
	if (rc) {
		goto fail;
	}
@@ -594,7 +594,6 @@ spdk_app_json_config_load(const struct spdk_app_opts *opts, struct spdk_event *d
		}
	}

	rpc_addr = opts->rpc_addr;
	/* If rpc_addr is not an Unix socket use default address as prefix. */
	if (rpc_addr == NULL || rpc_addr[0] != '/') {
		rpc_addr = SPDK_DEFAULT_RPC_ADDR;
+2 −1
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@

#include "spdk/event.h"

void spdk_app_json_config_load(const struct spdk_app_opts *opts, struct spdk_event *done_event);
void spdk_app_json_config_load(const char *json_config_file, const char *rpc_addr,
			       struct spdk_event *done_event);

#endif /* SPDK_JSON_CONFIG_H */
+1 −1
Original line number Diff line number Diff line
@@ -48,7 +48,7 @@ DEFINE_STUB_V(spdk_rpc_register_method, (const char *method, spdk_rpc_method_han
		uint32_t state_mask));
DEFINE_STUB_V(spdk_rpc_set_state, (uint32_t state));
DEFINE_STUB(spdk_rpc_get_state, uint32_t, (void), SPDK_RPC_RUNTIME);
DEFINE_STUB_V(spdk_app_json_config_load, (const struct spdk_app_opts *opts,
DEFINE_STUB_V(spdk_app_json_config_load, (const char *json_config_file, const char *rpc_addr,
		struct spdk_event *done_event));

static void