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: Daniel Verkamp <daniel.verkamp@intel.com> Reviewed-on: https://review.gerrithub.io/411740 Tested-by: SPDK Automated Test System <sys_sgsw@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com>
This commit is contained in:
parent
aac1f5f934
commit
75896c2510
@ -119,7 +119,7 @@ free_rpc_get_bdevs(struct rpc_get_bdevs *r)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static const struct spdk_json_object_decoder rpc_get_bdevs_decoders[] = {
|
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
|
static void
|
||||||
@ -130,28 +130,22 @@ spdk_rpc_get_bdevs(struct spdk_jsonrpc_request *request,
|
|||||||
struct spdk_json_write_ctx *w;
|
struct spdk_json_write_ctx *w;
|
||||||
struct spdk_bdev *bdev = NULL;
|
struct spdk_bdev *bdev = NULL;
|
||||||
|
|
||||||
if (params != NULL) {
|
if (params && spdk_json_decode_object(params, rpc_get_bdevs_decoders,
|
||||||
if (spdk_json_decode_object(params, rpc_get_bdevs_decoders,
|
SPDK_COUNTOF(rpc_get_bdevs_decoders),
|
||||||
SPDK_COUNTOF(rpc_get_bdevs_decoders),
|
&req)) {
|
||||||
&req)) {
|
SPDK_ERRLOG("spdk_json_decode_object failed\n");
|
||||||
SPDK_ERRLOG("spdk_json_decode_object failed\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;
|
goto invalid;
|
||||||
} else {
|
|
||||||
if (req.name == NULL) {
|
|
||||||
SPDK_ERRLOG("missing name param\n");
|
|
||||||
goto invalid;
|
|
||||||
}
|
|
||||||
|
|
||||||
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);
|
w = spdk_jsonrpc_begin_result(request);
|
||||||
if (w == NULL) {
|
if (w == NULL) {
|
||||||
return;
|
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[] = {
|
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
|
static void
|
||||||
|
Loading…
Reference in New Issue
Block a user