Commit b928d37c authored by Shuhei Matsumoto's avatar Shuhei Matsumoto Committed by Tomasz Zawadzki
Browse files

event: Add rpc_log_level and rpc_log_file to spdk_app_opts



This enables SPDK application to use JSON RPC logging.

Signed-off-by: default avatarShuhei Matsumoto <smatsumoto@nvidia.com>
Change-Id: Idb9c9a91b3d0d9f1967be82e45b0a1b2c2bee97d
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/18831


Community-CI: Mellanox Build Bot
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarTomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: default avatarKonrad Sztyber <konrad.sztyber@intel.com>
parent 91c64673
Loading
Loading
Loading
Loading
+11 −1
Original line number Diff line number Diff line
/*   SPDX-License-Identifier: BSD-3-Clause
 *   Copyright (C) 2016 Intel Corporation.  All rights reserved.
 *   Copyright (c) 2019 Mellanox Technologies LTD. All rights reserved.
 *   Copyright (c) 2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
 */

/**
@@ -168,8 +169,17 @@ struct spdk_app_opts {
	 */
	const char *lcore_map; /* lcore mapping */

	/**
	 * Log level for JSON RPC.
	 */
	enum spdk_log_level rpc_log_level;

	/**
	 * If non-NULL, a pointer to JSON RPC log file.
	 */
	FILE *rpc_log_file;
} __attribute__((packed));
SPDK_STATIC_ASSERT(sizeof(struct spdk_app_opts) == 224, "Incorrect size");
SPDK_STATIC_ASSERT(sizeof(struct spdk_app_opts) == 236, "Incorrect size");

/**
 * Initialize the default value of opts
+22 −3
Original line number Diff line number Diff line
@@ -47,6 +47,8 @@ struct spdk_app {
	bool				stopped;
	const char			*rpc_addr;
	const char			**rpc_allowlist;
	FILE				*rpc_log_file;
	enum spdk_log_level		rpc_log_level;
	int				shm_id;
	spdk_app_shutdown_cb		shutdown_cb;
	int				rc;
@@ -238,6 +240,8 @@ spdk_app_opts_init(struct spdk_app_opts *opts, size_t opts_size)
	SET_FIELD(disable_signal_handlers, false);
	/* Don't set msg_mempool_size here, it is set or calculated later */
	SET_FIELD(rpc_allowlist, NULL);
	SET_FIELD(rpc_log_file, NULL);
	SET_FIELD(rpc_log_level, SPDK_LOG_DISABLED);
#undef SET_FIELD
}

@@ -292,6 +296,8 @@ app_start_application(void)
static void
app_start_rpc(int rc, void *arg1)
{
	struct spdk_rpc_opts opts;

	if (rc) {
		spdk_app_stop(rc);
		return;
@@ -299,7 +305,11 @@ app_start_rpc(int rc, void *arg1)

	spdk_rpc_set_allowlist(g_spdk_app.rpc_allowlist);

	rc = spdk_rpc_initialize(g_spdk_app.rpc_addr, NULL);
	opts.size = SPDK_SIZEOF(&opts, log_level);
	opts.log_file = g_spdk_app.rpc_log_file;
	opts.log_level = g_spdk_app.rpc_log_level;

	rc = spdk_rpc_initialize(g_spdk_app.rpc_addr, &opts);
	if (rc) {
		spdk_app_stop(rc);
		return;
@@ -486,6 +496,7 @@ app_setup_trace(struct spdk_app_opts *opts)
static void
bootstrap_fn(void *arg1)
{
	struct spdk_rpc_opts opts;
	int rc;

	if (g_spdk_app.json_config_file) {
@@ -499,7 +510,11 @@ bootstrap_fn(void *arg1)
		} else {
			spdk_rpc_set_allowlist(g_spdk_app.rpc_allowlist);

			rc = spdk_rpc_initialize(g_spdk_app.rpc_addr, NULL);
			opts.size = SPDK_SIZEOF(&opts, log_level);
			opts.log_file = g_spdk_app.rpc_log_file;
			opts.log_level = g_spdk_app.rpc_log_level;

			rc = spdk_rpc_initialize(g_spdk_app.rpc_addr, &opts);
			if (rc) {
				spdk_app_stop(rc);
				return;
@@ -550,10 +565,12 @@ app_copy_opts(struct spdk_app_opts *opts, struct spdk_app_opts *opts_user, size_
	SET_FIELD(msg_mempool_size);
	SET_FIELD(rpc_allowlist);
	SET_FIELD(vf_token);
	SET_FIELD(rpc_log_file);
	SET_FIELD(rpc_log_level);

	/* You should not remove this statement, but need to update the assert statement
	 * if you add a new field, and also add a corresponding SET_FIELD statement */
	SPDK_STATIC_ASSERT(sizeof(struct spdk_app_opts) == 224, "Incorrect size");
	SPDK_STATIC_ASSERT(sizeof(struct spdk_app_opts) == 236, "Incorrect size");

#undef SET_FIELD
}
@@ -730,6 +747,8 @@ spdk_app_start(struct spdk_app_opts *opts_user, spdk_msg_fn start_fn,
	g_spdk_app.json_config_ignore_errors = opts->json_config_ignore_errors;
	g_spdk_app.rpc_addr = opts->rpc_addr;
	g_spdk_app.rpc_allowlist = opts->rpc_allowlist;
	g_spdk_app.rpc_log_file = opts->rpc_log_file;
	g_spdk_app.rpc_log_level = opts->rpc_log_level;
	g_spdk_app.shm_id = opts->shm_id;
	g_spdk_app.shutdown_cb = opts->shutdown_cb;
	g_spdk_app.rc = 0;