Commit 75896c25 authored by Daniel Verkamp's avatar Daniel Verkamp
Browse files

bdev/rpc: make get_bdevs/config "name" params optional



The whole params object is already optional, but making the parameter
optional as well allows the specification of an empty object for params
to work.

Some JSON-RPC clients make it more difficult to omit the params object
entirely; see issue #303.

Change-Id: If0ac4ebfba33fd2c85f729d2f1109e4d0e47aa3b
Signed-off-by: default avatarDaniel Verkamp <daniel.verkamp@intel.com>
Reviewed-on: https://review.gerrithub.io/411740


Tested-by: default avatarSPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
parent aac1f5f9
Loading
Loading
Loading
Loading
+14 −20
Original line number Diff line number Diff line
@@ -119,7 +119,7 @@ free_rpc_get_bdevs(struct rpc_get_bdevs *r)
}

static const struct spdk_json_object_decoder rpc_get_bdevs_decoders[] = {
	{"name", offsetof(struct rpc_get_bdevs, name), spdk_json_decode_string},
	{"name", offsetof(struct rpc_get_bdevs, name), spdk_json_decode_string, true},
};

static void
@@ -130,28 +130,22 @@ spdk_rpc_get_bdevs(struct spdk_jsonrpc_request *request,
	struct spdk_json_write_ctx *w;
	struct spdk_bdev *bdev = NULL;

	if (params != NULL) {
		if (spdk_json_decode_object(params, rpc_get_bdevs_decoders,
	if (params && spdk_json_decode_object(params, rpc_get_bdevs_decoders,
					      SPDK_COUNTOF(rpc_get_bdevs_decoders),
					      &req)) {
		SPDK_ERRLOG("spdk_json_decode_object failed\n");
		goto invalid;
		} else {
			if (req.name == NULL) {
				SPDK_ERRLOG("missing name param\n");
				goto invalid;
	}

	if (req.name) {
		bdev = spdk_bdev_get_by_name(req.name);
		if (bdev == NULL) {
			SPDK_ERRLOG("bdev '%s' does not exist\n", req.name);
			goto invalid;
		}

			free_rpc_get_bdevs(&req);
		}
	}

	free_rpc_get_bdevs(&req);
	w = spdk_jsonrpc_begin_result(request);
	if (w == NULL) {
		return;
@@ -191,7 +185,7 @@ free_rpc_get_bdevs_config(struct rpc_get_bdevs_config *r)
}

static const struct spdk_json_object_decoder rpc_dump_bdevs_config_decoders[] = {
	{"name", offsetof(struct rpc_get_bdevs_config, name), spdk_json_decode_string},
	{"name", offsetof(struct rpc_get_bdevs_config, name), spdk_json_decode_string, true},
};

static void