diff --git a/lib/event/app.c b/lib/event/app.c index 0d309fa6c..6254248c1 100644 --- a/lib/event/app.c +++ b/lib/event/app.c @@ -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); diff --git a/lib/event/json_config.c b/lib/event/json_config.c index f1b86a2f5..b56ce9baa 100644 --- a/lib/event/json_config.c +++ b/lib/event/json_config.c @@ -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; diff --git a/lib/event/json_config.h b/lib/event/json_config.h index 4ebd75307..f25c6a268 100644 --- a/lib/event/json_config.h +++ b/lib/event/json_config.h @@ -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 */ diff --git a/test/unit/lib/event/app.c/app_ut.c b/test/unit/lib/event/app.c/app_ut.c index 35380ea28..3b84068f3 100644 --- a/test/unit/lib/event/app.c/app_ut.c +++ b/test/unit/lib/event/app.c/app_ut.c @@ -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