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:
parent
c3ab46a14c
commit
f96b8293e6
@ -59,6 +59,8 @@
|
|||||||
|
|
||||||
struct spdk_app {
|
struct spdk_app {
|
||||||
struct spdk_conf *config;
|
struct spdk_conf *config;
|
||||||
|
const char *json_config_file;
|
||||||
|
const char *rpc_addr;
|
||||||
int shm_id;
|
int shm_id;
|
||||||
spdk_app_shutdown_cb shutdown_cb;
|
spdk_app_shutdown_cb shutdown_cb;
|
||||||
int rc;
|
int rc;
|
||||||
@ -354,21 +356,18 @@ spdk_app_start_application(void)
|
|||||||
static void
|
static void
|
||||||
spdk_app_start_rpc(void *arg1, void *arg2)
|
spdk_app_start_rpc(void *arg1, void *arg2)
|
||||||
{
|
{
|
||||||
const char *rpc_addr = arg1;
|
spdk_rpc_initialize(g_spdk_app.rpc_addr);
|
||||||
|
|
||||||
spdk_rpc_initialize(rpc_addr);
|
|
||||||
if (!g_delay_subsystem_init) {
|
if (!g_delay_subsystem_init) {
|
||||||
spdk_app_start_application();
|
spdk_app_start_application();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
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 = arg1;
|
||||||
struct spdk_event *event_done = _event_done;
|
|
||||||
|
|
||||||
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 *
|
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));
|
memset(&g_spdk_app, 0, sizeof(g_spdk_app));
|
||||||
g_spdk_app.config = config;
|
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.shm_id = opts->shm_id;
|
||||||
g_spdk_app.shutdown_cb = opts->shutdown_cb;
|
g_spdk_app.shutdown_cb = opts->shutdown_cb;
|
||||||
g_spdk_app.rc = 0;
|
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);
|
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_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,
|
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) {
|
if (opts->json_config_file) {
|
||||||
g_delay_subsystem_init = false;
|
g_delay_subsystem_init = false;
|
||||||
g_config_load_event = spdk_event_allocate(g_init_lcore, _spdk_app_json_config_load,
|
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);
|
spdk_event_call(event);
|
||||||
|
@ -562,10 +562,10 @@ err:
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
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));
|
struct load_json_config_ctx *ctx = calloc(1, sizeof(*ctx));
|
||||||
const char *rpc_addr;
|
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
assert(done_event);
|
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->done_event = done_event;
|
||||||
ctx->thread = spdk_get_thread();
|
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) {
|
if (rc) {
|
||||||
goto fail;
|
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 is not an Unix socket use default address as prefix. */
|
||||||
if (rpc_addr == NULL || rpc_addr[0] != '/') {
|
if (rpc_addr == NULL || rpc_addr[0] != '/') {
|
||||||
rpc_addr = SPDK_DEFAULT_RPC_ADDR;
|
rpc_addr = SPDK_DEFAULT_RPC_ADDR;
|
||||||
|
@ -36,6 +36,7 @@
|
|||||||
|
|
||||||
#include "spdk/event.h"
|
#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 */
|
#endif /* SPDK_JSON_CONFIG_H */
|
||||||
|
@ -48,7 +48,7 @@ DEFINE_STUB_V(spdk_rpc_register_method, (const char *method, spdk_rpc_method_han
|
|||||||
uint32_t state_mask));
|
uint32_t state_mask));
|
||||||
DEFINE_STUB_V(spdk_rpc_set_state, (uint32_t state));
|
DEFINE_STUB_V(spdk_rpc_set_state, (uint32_t state));
|
||||||
DEFINE_STUB(spdk_rpc_get_state, uint32_t, (void), SPDK_RPC_RUNTIME);
|
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));
|
struct spdk_event *done_event));
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
Loading…
Reference in New Issue
Block a user