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

event: Add return code to spdk_rpc_initialize



This is an internal API used in several places. The call can fail, so
make sure it can report that correctly.

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


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatar <dongx.yi@intel.com>
Reviewed-by: default avatarAleksey Marchuk <alexeymar@mellanox.com>
Reviewed-by: default avatarTomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
parent 0731c227
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -711,7 +711,13 @@ static void
nvmf_subsystem_init_done(int rc, void *cb_arg)
{
	fprintf(stdout, "bdev subsystem init successfully\n");
	spdk_rpc_initialize(g_rpc_addr);

	rc = spdk_rpc_initialize(g_rpc_addr);
	if (rc) {
		spdk_app_stop(rc);
		return;
	}

	spdk_rpc_set_state(SPDK_RPC_RUNTIME);

	g_target_state = NVMF_INIT_TARGET;
+1 −1
Original line number Diff line number Diff line
@@ -214,7 +214,7 @@ void spdk_app_json_config_load(const char *json_config_file, const char *rpc_add
 */
void spdk_subsystem_config_json(struct spdk_json_write_ctx *w, struct spdk_subsystem *subsystem);

void spdk_rpc_initialize(const char *listen_addr);
int spdk_rpc_initialize(const char *listen_addr);
void spdk_rpc_finish(void);

struct spdk_governor_capabilities {
+13 −2
Original line number Diff line number Diff line
@@ -278,7 +278,12 @@ app_start_rpc(int rc, void *arg1)
		return;
	}

	spdk_rpc_initialize(g_spdk_app.rpc_addr);
	rc = spdk_rpc_initialize(g_spdk_app.rpc_addr);
	if (rc) {
		spdk_app_stop(rc);
		return;
	}

	if (!g_delay_subsystem_init) {
		spdk_rpc_set_state(SPDK_RPC_RUNTIME);
		app_start_application();
@@ -393,6 +398,8 @@ app_setup_trace(struct spdk_app_opts *opts)
static void
bootstrap_fn(void *arg1)
{
	int rc;

	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,
@@ -401,7 +408,11 @@ bootstrap_fn(void *arg1)
		if (!g_delay_subsystem_init) {
			spdk_subsystem_init(app_start_rpc, NULL);
		} else {
			spdk_rpc_initialize(g_spdk_app.rpc_addr);
			rc = spdk_rpc_initialize(g_spdk_app.rpc_addr);
			if (rc) {
				spdk_app_stop(rc);
				return;
			}
		}
	}
}
+5 −2
Original line number Diff line number Diff line
@@ -614,8 +614,11 @@ spdk_app_json_config_load(const char *json_config_file, const char *rpc_addr,
		goto fail;
	}

	/* FIXME: spdk_rpc_initialize() function should return error code. */
	spdk_rpc_initialize(ctx->rpc_socket_path_temp);
	rc = spdk_rpc_initialize(ctx->rpc_socket_path_temp);
	if (rc) {
		goto fail;
	}

	ctx->client_conn = spdk_jsonrpc_client_connect(ctx->rpc_socket_path_temp, AF_UNIX);
	if (ctx->client_conn == NULL) {
		SPDK_ERRLOG("Failed to connect to '%s'\n", ctx->rpc_socket_path_temp);
+9 −5
Original line number Diff line number Diff line
@@ -51,31 +51,35 @@ rpc_subsystem_poll(void *arg)
	return SPDK_POLLER_BUSY;
}

void
int
spdk_rpc_initialize(const char *listen_addr)
{
	int rc;

	if (listen_addr == NULL) {
		return;
		/* Not treated as an error */
		return 0;
	}

	if (!spdk_rpc_verify_methods()) {
		spdk_app_stop(-EINVAL);
		return;
		return -EINVAL;
	}

	/* Listen on the requested address */
	rc = spdk_rpc_listen(listen_addr);
	if (rc != 0) {
		SPDK_ERRLOG("Unable to start RPC service at %s\n", listen_addr);
		return;
		/* TODO: Eventually, treat this as an error. But it historically has not
		 * been and many tests rely on this gracefully failing. */
		return 0;
	}

	spdk_rpc_set_state(SPDK_RPC_STARTUP);

	/* Register a poller to periodically check for RPCs */
	g_rpc_poller = SPDK_POLLER_REGISTER(rpc_subsystem_poll, NULL, RPC_SELECT_INTERVAL);

	return 0;
}

void
Loading