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: Ben Walker <benjamin.walker@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/446988
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
This commit is contained in:
Ben Walker 2019-02-28 16:56:14 -07:00 committed by Darek Stojaczyk
parent c3ab46a14c
commit f96b8293e6
4 changed files with 16 additions and 15 deletions

View File

@ -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);

View File

@ -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;

View File

@ -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 */

View File

@ -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