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:
Rafal Stefanowski 2022-11-15 13:26:38 +01:00 committed by Tomasz Zawadzki
parent c6ffad06fa
commit 6ee3921083

View File

@ -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)