Commit d73077b8 authored by yidong0635's avatar yidong0635 Committed by Jim Harris
Browse files

lib/jsonrpc: Add a new API to send response for writing bool result.



There are many duplicated codes about sending response for writing bool result.
That we need a function to do this.
Then we can reduce many codes.

Signed-off-by: default avataryidong0635 <dongx.yi@intel.com>
Change-Id: Ic439111b1e9ca1013f8c657ab925f0c27a7be699
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/5033


Community-CI: Broadcom CI
Community-CI: Mellanox Build Bot
Reviewed-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: default avatarChangpeng Liu <changpeng.liu@intel.com>
Reviewed-by: default avatarAleksey Marchuk <alexeymar@mellanox.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
parent fd798f8f
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -8,6 +8,11 @@ The SPDK nvmf target now supports async event notification for discovery log cha
This allows the initiator to create persistent connection to discovery controller and
be notified of any discovery log changes.

### json

A new API `spdk_jsonrpc_send_bool_response` was added to allow sending response for
writing json bool results into one function.

## v20.10:

### accel
+8 −0
Original line number Diff line number Diff line
@@ -198,6 +198,14 @@ struct spdk_json_write_ctx *spdk_jsonrpc_begin_result(struct spdk_jsonrpc_reques
 */
void spdk_jsonrpc_end_result(struct spdk_jsonrpc_request *request, struct spdk_json_write_ctx *w);

/**
 * Complete a JSON-RPC response and write bool result.
 *
 * \param request Request to complete the response for.
 * \param value Write bool result value.
 */
void spdk_jsonrpc_send_bool_response(struct spdk_jsonrpc_request *request, bool value);

/**
 * Send an error response to a JSON-RPC request.
 *
+6 −20
Original line number Diff line number Diff line
@@ -59,7 +59,6 @@ rpc_bdev_set_options(struct spdk_jsonrpc_request *request, const struct spdk_jso
{
	struct spdk_rpc_set_bdev_opts rpc_opts;
	struct spdk_bdev_opts bdev_opts;
	struct spdk_json_write_ctx *w;
	int rc;

	rpc_opts.bdev_io_pool_size = UINT32_MAX;
@@ -93,9 +92,7 @@ rpc_bdev_set_options(struct spdk_jsonrpc_request *request, const struct spdk_jso
		return;
	}

	w = spdk_jsonrpc_begin_result(request);
	spdk_json_write_bool(w, true);
	spdk_jsonrpc_end_result(request, w);
	spdk_jsonrpc_send_bool_response(request, true);
}
SPDK_RPC_REGISTER("bdev_set_options", rpc_bdev_set_options, SPDK_RPC_STARTUP)
SPDK_RPC_REGISTER_ALIAS_DEPRECATED(bdev_set_options, set_bdev_options)
@@ -119,7 +116,6 @@ rpc_bdev_examine_bdev(struct spdk_jsonrpc_request *request,
		      const struct spdk_json_val *params)
{
	struct rpc_bdev_examine req = {NULL};
	struct spdk_json_write_ctx *w;
	int rc;

	if (spdk_json_decode_object(params, rpc_examine_bdev_decoders,
@@ -136,9 +132,8 @@ rpc_bdev_examine_bdev(struct spdk_jsonrpc_request *request,
		spdk_jsonrpc_send_error_response(request, rc, spdk_strerror(-rc));
		goto cleanup;
	}
	w = spdk_jsonrpc_begin_result(request);
	spdk_json_write_bool(w, true);
	spdk_jsonrpc_end_result(request, w);

	spdk_jsonrpc_send_bool_response(request, true);

cleanup:
	free_rpc_bdev_examine(&req);
@@ -489,7 +484,6 @@ rpc_bdev_set_qd_sampling_period(struct spdk_jsonrpc_request *request,
{
	struct rpc_bdev_set_qd_sampling_period req = {0};
	struct spdk_bdev *bdev;
	struct spdk_json_write_ctx *w;

	if (spdk_json_decode_object(params, rpc_bdev_set_qd_sampling_period_decoders,
				    SPDK_COUNTOF(rpc_bdev_set_qd_sampling_period_decoders),
@@ -507,11 +501,8 @@ rpc_bdev_set_qd_sampling_period(struct spdk_jsonrpc_request *request,
		goto cleanup;
	}

	w = spdk_jsonrpc_begin_result(request);
	spdk_bdev_set_qd_sampling_period(bdev, req.period);

	spdk_json_write_bool(w, true);
	spdk_jsonrpc_end_result(request, w);
	spdk_jsonrpc_send_bool_response(request, true);

cleanup:
	free_rpc_bdev_set_qd_sampling_period(&req);
@@ -561,7 +552,6 @@ static void
rpc_bdev_set_qos_limit_complete(void *cb_arg, int status)
{
	struct spdk_jsonrpc_request *request = cb_arg;
	struct spdk_json_write_ctx *w;

	if (status != 0) {
		spdk_jsonrpc_send_error_response_fmt(request, SPDK_JSONRPC_ERROR_INVALID_PARAMS,
@@ -570,9 +560,7 @@ rpc_bdev_set_qos_limit_complete(void *cb_arg, int status)
		return;
	}

	w = spdk_jsonrpc_begin_result(request);
	spdk_json_write_bool(w, true);
	spdk_jsonrpc_end_result(request, w);
	spdk_jsonrpc_send_bool_response(request, true);
}

static void
@@ -641,10 +629,8 @@ static void
bdev_histogram_status_cb(void *cb_arg, int status)
{
	struct spdk_jsonrpc_request *request = cb_arg;
	struct spdk_json_write_ctx *w = spdk_jsonrpc_begin_result(request);

	spdk_json_write_bool(w, status == 0);
	spdk_jsonrpc_end_result(request, w);
	spdk_jsonrpc_send_bool_response(request, status == 0);
}

static void
+3 −12
Original line number Diff line number Diff line
@@ -866,7 +866,6 @@ static void
rpc_framework_start_init_cpl(int rc, void *arg1)
{
	struct spdk_jsonrpc_request *request = arg1;
	struct spdk_json_write_ctx *w;

	assert(spdk_get_thread() == g_app_thread);

@@ -879,9 +878,7 @@ rpc_framework_start_init_cpl(int rc, void *arg1)
	spdk_rpc_set_state(SPDK_RPC_RUNTIME);
	app_start_application();

	w = spdk_jsonrpc_begin_result(request);
	spdk_json_write_bool(w, true);
	spdk_jsonrpc_end_result(request, w);
	spdk_jsonrpc_send_bool_response(request, true);
}

static void
@@ -907,13 +904,10 @@ struct subsystem_init_poller_ctx {
static int
rpc_subsystem_init_poller_ctx(void *ctx)
{
	struct spdk_json_write_ctx *w;
	struct subsystem_init_poller_ctx *poller_ctx = ctx;

	if (spdk_rpc_get_state() == SPDK_RPC_RUNTIME) {
		w = spdk_jsonrpc_begin_result(poller_ctx->request);
		spdk_json_write_bool(w, true);
		spdk_jsonrpc_end_result(poller_ctx->request, w);
		spdk_jsonrpc_send_bool_response(poller_ctx->request, true);
		spdk_poller_unregister(&poller_ctx->init_poller);
		free(poller_ctx);
	}
@@ -925,13 +919,10 @@ static void
rpc_framework_wait_init(struct spdk_jsonrpc_request *request,
			const struct spdk_json_val *params)
{
	struct spdk_json_write_ctx *w;
	struct subsystem_init_poller_ctx *ctx;

	if (spdk_rpc_get_state() == SPDK_RPC_RUNTIME) {
		w = spdk_jsonrpc_begin_result(request);
		spdk_json_write_bool(w, true);
		spdk_jsonrpc_end_result(request, w);
		spdk_jsonrpc_send_bool_response(request, true);
	} else {
		ctx = malloc(sizeof(struct subsystem_init_poller_ctx));
		if (ctx == NULL) {
+3 −12
Original line number Diff line number Diff line
@@ -76,7 +76,6 @@ rpc_spdk_kill_instance(struct spdk_jsonrpc_request *request,
	size_t i, sig_count;
	int signal;
	struct rpc_spdk_kill_instance req = {};
	struct spdk_json_write_ctx *w;

	if (spdk_json_decode_object(params, rpc_spdk_kill_instance_decoders,
				    SPDK_COUNTOF(rpc_spdk_kill_instance_decoders),
@@ -102,9 +101,7 @@ rpc_spdk_kill_instance(struct spdk_jsonrpc_request *request,
	free_rpc_spdk_kill_instance(&req);
	kill(getpid(), signals[i].signal);

	w = spdk_jsonrpc_begin_result(request);
	spdk_json_write_bool(w, true);
	spdk_jsonrpc_end_result(request, w);
	spdk_jsonrpc_send_bool_response(request, true);
	return;

invalid:
@@ -452,7 +449,6 @@ rpc_framework_set_scheduler(struct spdk_jsonrpc_request *request,
			    const struct spdk_json_val *params)
{
	struct rpc_set_scheduler_ctx req = {NULL};
	struct spdk_json_write_ctx *w;
	int ret;

	ret = spdk_json_decode_object(params, rpc_set_scheduler_decoders,
@@ -471,9 +467,7 @@ rpc_framework_set_scheduler(struct spdk_jsonrpc_request *request,
		goto end;
	}

	w = spdk_jsonrpc_begin_result(request);
	spdk_json_write_bool(w, true);
	spdk_jsonrpc_end_result(request, w);
	spdk_jsonrpc_send_bool_response(request, true);

end:
	free_rpc_framework_set_scheduler(&req);
@@ -491,12 +485,9 @@ static void
rpc_thread_set_cpumask_done(void *_ctx)
{
	struct rpc_thread_set_cpumask_ctx *ctx = _ctx;
	struct spdk_json_write_ctx *w;

	if (ctx->status == 0) {
		w = spdk_jsonrpc_begin_result(ctx->request);
		spdk_json_write_bool(w, true);
		spdk_jsonrpc_end_result(ctx->request, w);
		spdk_jsonrpc_send_bool_response(ctx->request, true);
	} else {
		spdk_jsonrpc_send_error_response(ctx->request, SPDK_JSONRPC_ERROR_INTERNAL_ERROR,
						 spdk_strerror(-ctx->status));
Loading