bdev/ocf: Create common structures and functions
Use common structures, decoders and free functions in RPC methods that use only bdev name as a parameter. Signed-off-by: Rafal Stefanowski <rafal.stefanowski@intel.com> Change-Id: I49668d744dcb7ba901df42cb5279c9e425f71041 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/15457 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Community-CI: Mellanox Build Bot Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
This commit is contained in:
parent
c6ffad06fa
commit
6ee3921083
@ -10,6 +10,24 @@
|
||||
#include "spdk/rpc.h"
|
||||
#include "spdk/string.h"
|
||||
|
||||
/* Common structure to hold the name parameter for RPC methods using bdev name only. */
|
||||
struct rpc_bdev_ocf_name {
|
||||
char *name; /* main vbdev name */
|
||||
};
|
||||
|
||||
/* Common free function for RPC methods using bdev name only. */
|
||||
static void
|
||||
free_rpc_bdev_ocf_name(struct rpc_bdev_ocf_name *r)
|
||||
{
|
||||
free(r->name);
|
||||
}
|
||||
|
||||
/* Common function to decode the name input parameter for RPC methods using bdev name only. */
|
||||
static const struct spdk_json_object_decoder rpc_bdev_ocf_name_decoders[] = {
|
||||
{"name", offsetof(struct rpc_bdev_ocf_name, name), spdk_json_decode_string},
|
||||
};
|
||||
|
||||
|
||||
/* Structure to hold the parameters for this RPC method. */
|
||||
struct rpc_bdev_ocf_create {
|
||||
char *name; /* main vbdev */
|
||||
@ -77,22 +95,6 @@ rpc_bdev_ocf_create(struct spdk_jsonrpc_request *request,
|
||||
}
|
||||
SPDK_RPC_REGISTER("bdev_ocf_create", rpc_bdev_ocf_create, SPDK_RPC_RUNTIME)
|
||||
|
||||
/* Structure to hold the parameters for this RPC method. */
|
||||
struct rpc_bdev_ocf_delete {
|
||||
char *name; /* main vbdev name */
|
||||
};
|
||||
|
||||
static void
|
||||
free_rpc_bdev_ocf_delete(struct rpc_bdev_ocf_delete *r)
|
||||
{
|
||||
free(r->name);
|
||||
}
|
||||
|
||||
/* Structure to decode the input parameters for this RPC method. */
|
||||
static const struct spdk_json_object_decoder rpc_bdev_ocf_delete_decoders[] = {
|
||||
{"name", offsetof(struct rpc_bdev_ocf_delete, name), spdk_json_decode_string},
|
||||
};
|
||||
|
||||
static void
|
||||
delete_cb(void *cb_arg, int status)
|
||||
{
|
||||
@ -111,12 +113,12 @@ static void
|
||||
rpc_bdev_ocf_delete(struct spdk_jsonrpc_request *request,
|
||||
const struct spdk_json_val *params)
|
||||
{
|
||||
struct rpc_bdev_ocf_delete req = {NULL};
|
||||
struct rpc_bdev_ocf_name req = {NULL};
|
||||
struct vbdev_ocf *vbdev;
|
||||
int status;
|
||||
|
||||
status = spdk_json_decode_object(params, rpc_bdev_ocf_delete_decoders,
|
||||
SPDK_COUNTOF(rpc_bdev_ocf_delete_decoders),
|
||||
status = spdk_json_decode_object(params, rpc_bdev_ocf_name_decoders,
|
||||
SPDK_COUNTOF(rpc_bdev_ocf_name_decoders),
|
||||
&req);
|
||||
if (status) {
|
||||
spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INVALID_PARAMS,
|
||||
@ -140,26 +142,10 @@ rpc_bdev_ocf_delete(struct spdk_jsonrpc_request *request,
|
||||
}
|
||||
|
||||
end:
|
||||
free_rpc_bdev_ocf_delete(&req);
|
||||
free_rpc_bdev_ocf_name(&req);
|
||||
}
|
||||
SPDK_RPC_REGISTER("bdev_ocf_delete", rpc_bdev_ocf_delete, SPDK_RPC_RUNTIME)
|
||||
|
||||
/* Structure to hold the parameters for this RPC method. */
|
||||
struct rpc_bdev_ocf_get_stats {
|
||||
char *name; /* main vbdev name */
|
||||
};
|
||||
|
||||
static void
|
||||
free_rpc_bdev_ocf_get_stats(struct rpc_bdev_ocf_get_stats *r)
|
||||
{
|
||||
free(r->name);
|
||||
}
|
||||
|
||||
/* Structure to decode the input parameters for this RPC method. */
|
||||
static const struct spdk_json_object_decoder rpc_bdev_ocf_get_stats_decoders[] = {
|
||||
{"name", offsetof(struct rpc_bdev_ocf_get_stats, name), spdk_json_decode_string},
|
||||
};
|
||||
|
||||
struct get_ocf_stats_ctx {
|
||||
struct spdk_jsonrpc_request *request;
|
||||
char *core_name;
|
||||
@ -201,7 +187,7 @@ static void
|
||||
rpc_bdev_ocf_get_stats(struct spdk_jsonrpc_request *request,
|
||||
const struct spdk_json_val *params)
|
||||
{
|
||||
struct rpc_bdev_ocf_get_stats req = {NULL};
|
||||
struct rpc_bdev_ocf_name req = {NULL};
|
||||
struct vbdev_ocf *vbdev;
|
||||
struct get_ocf_stats_ctx *ctx;
|
||||
|
||||
@ -212,8 +198,8 @@ rpc_bdev_ocf_get_stats(struct spdk_jsonrpc_request *request,
|
||||
goto end;
|
||||
}
|
||||
|
||||
if (spdk_json_decode_object(params, rpc_bdev_ocf_get_stats_decoders,
|
||||
SPDK_COUNTOF(rpc_bdev_ocf_get_stats_decoders),
|
||||
if (spdk_json_decode_object(params, rpc_bdev_ocf_name_decoders,
|
||||
SPDK_COUNTOF(rpc_bdev_ocf_name_decoders),
|
||||
&req)) {
|
||||
spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INVALID_PARAMS,
|
||||
"Invalid parameters");
|
||||
@ -234,24 +220,13 @@ rpc_bdev_ocf_get_stats(struct spdk_jsonrpc_request *request,
|
||||
ocf_mngt_cache_read_lock(vbdev->ocf_cache, rpc_bdev_ocf_get_stats_cmpl, ctx);
|
||||
|
||||
end:
|
||||
free_rpc_bdev_ocf_get_stats(&req);
|
||||
free_rpc_bdev_ocf_name(&req);
|
||||
}
|
||||
SPDK_RPC_REGISTER("bdev_ocf_get_stats", rpc_bdev_ocf_get_stats, SPDK_RPC_RUNTIME)
|
||||
|
||||
/* Structure to hold the parameters for this RPC method. */
|
||||
struct rpc_bdev_ocf_get_bdevs {
|
||||
char *name;
|
||||
};
|
||||
|
||||
static void
|
||||
free_rpc_bdev_ocf_get_bdevs(struct rpc_bdev_ocf_get_bdevs *r)
|
||||
{
|
||||
free(r->name);
|
||||
}
|
||||
|
||||
/* Structure to decode the input parameters for this RPC method. */
|
||||
static const struct spdk_json_object_decoder rpc_bdev_ocf_get_bdevs_decoders[] = {
|
||||
{"name", offsetof(struct rpc_bdev_ocf_get_bdevs, name), spdk_json_decode_string, true},
|
||||
{"name", offsetof(struct rpc_bdev_ocf_name, name), spdk_json_decode_string, true},
|
||||
};
|
||||
|
||||
struct bdev_get_bdevs_ctx {
|
||||
@ -294,7 +269,7 @@ rpc_bdev_ocf_get_bdevs(struct spdk_jsonrpc_request *request,
|
||||
const struct spdk_json_val *params)
|
||||
{
|
||||
struct spdk_json_write_ctx *w;
|
||||
struct rpc_bdev_ocf_get_bdevs req = {NULL};
|
||||
struct rpc_bdev_ocf_name req = {NULL};
|
||||
struct bdev_get_bdevs_ctx cctx;
|
||||
|
||||
if (params && spdk_json_decode_object(params, rpc_bdev_ocf_get_bdevs_decoders,
|
||||
@ -325,7 +300,7 @@ rpc_bdev_ocf_get_bdevs(struct spdk_jsonrpc_request *request,
|
||||
spdk_jsonrpc_end_result(request, w);
|
||||
|
||||
end:
|
||||
free_rpc_bdev_ocf_get_bdevs(&req);
|
||||
free_rpc_bdev_ocf_name(&req);
|
||||
}
|
||||
SPDK_RPC_REGISTER("bdev_ocf_get_bdevs", rpc_bdev_ocf_get_bdevs, SPDK_RPC_RUNTIME)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user