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/rpc.h"
|
||||||
#include "spdk/string.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. */
|
/* Structure to hold the parameters for this RPC method. */
|
||||||
struct rpc_bdev_ocf_create {
|
struct rpc_bdev_ocf_create {
|
||||||
char *name; /* main vbdev */
|
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)
|
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
|
static void
|
||||||
delete_cb(void *cb_arg, int status)
|
delete_cb(void *cb_arg, int status)
|
||||||
{
|
{
|
||||||
@ -111,12 +113,12 @@ static void
|
|||||||
rpc_bdev_ocf_delete(struct spdk_jsonrpc_request *request,
|
rpc_bdev_ocf_delete(struct spdk_jsonrpc_request *request,
|
||||||
const struct spdk_json_val *params)
|
const struct spdk_json_val *params)
|
||||||
{
|
{
|
||||||
struct rpc_bdev_ocf_delete req = {NULL};
|
struct rpc_bdev_ocf_name req = {NULL};
|
||||||
struct vbdev_ocf *vbdev;
|
struct vbdev_ocf *vbdev;
|
||||||
int status;
|
int status;
|
||||||
|
|
||||||
status = spdk_json_decode_object(params, rpc_bdev_ocf_delete_decoders,
|
status = spdk_json_decode_object(params, rpc_bdev_ocf_name_decoders,
|
||||||
SPDK_COUNTOF(rpc_bdev_ocf_delete_decoders),
|
SPDK_COUNTOF(rpc_bdev_ocf_name_decoders),
|
||||||
&req);
|
&req);
|
||||||
if (status) {
|
if (status) {
|
||||||
spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INVALID_PARAMS,
|
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:
|
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)
|
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 get_ocf_stats_ctx {
|
||||||
struct spdk_jsonrpc_request *request;
|
struct spdk_jsonrpc_request *request;
|
||||||
char *core_name;
|
char *core_name;
|
||||||
@ -201,7 +187,7 @@ static void
|
|||||||
rpc_bdev_ocf_get_stats(struct spdk_jsonrpc_request *request,
|
rpc_bdev_ocf_get_stats(struct spdk_jsonrpc_request *request,
|
||||||
const struct spdk_json_val *params)
|
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 vbdev_ocf *vbdev;
|
||||||
struct get_ocf_stats_ctx *ctx;
|
struct get_ocf_stats_ctx *ctx;
|
||||||
|
|
||||||
@ -212,8 +198,8 @@ rpc_bdev_ocf_get_stats(struct spdk_jsonrpc_request *request,
|
|||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (spdk_json_decode_object(params, rpc_bdev_ocf_get_stats_decoders,
|
if (spdk_json_decode_object(params, rpc_bdev_ocf_name_decoders,
|
||||||
SPDK_COUNTOF(rpc_bdev_ocf_get_stats_decoders),
|
SPDK_COUNTOF(rpc_bdev_ocf_name_decoders),
|
||||||
&req)) {
|
&req)) {
|
||||||
spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INVALID_PARAMS,
|
spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INVALID_PARAMS,
|
||||||
"Invalid parameters");
|
"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);
|
ocf_mngt_cache_read_lock(vbdev->ocf_cache, rpc_bdev_ocf_get_stats_cmpl, ctx);
|
||||||
|
|
||||||
end:
|
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)
|
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. */
|
/* Structure to decode the input parameters for this RPC method. */
|
||||||
static const struct spdk_json_object_decoder rpc_bdev_ocf_get_bdevs_decoders[] = {
|
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 {
|
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)
|
const struct spdk_json_val *params)
|
||||||
{
|
{
|
||||||
struct spdk_json_write_ctx *w;
|
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;
|
struct bdev_get_bdevs_ctx cctx;
|
||||||
|
|
||||||
if (params && spdk_json_decode_object(params, rpc_bdev_ocf_get_bdevs_decoders,
|
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);
|
spdk_jsonrpc_end_result(request, w);
|
||||||
|
|
||||||
end:
|
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)
|
SPDK_RPC_REGISTER("bdev_ocf_get_bdevs", rpc_bdev_ocf_get_bdevs, SPDK_RPC_RUNTIME)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user