From 6ee39210830add8442b14a5118bfb5d925816776 Mon Sep 17 00:00:00 2001 From: Rafal Stefanowski Date: Tue, 15 Nov 2022 13:26:38 +0100 Subject: [PATCH] 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 Change-Id: I49668d744dcb7ba901df42cb5279c9e425f71041 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/15457 Tested-by: SPDK CI Jenkins Community-CI: Mellanox Build Bot Reviewed-by: Jim Harris Reviewed-by: Tomasz Zawadzki --- module/bdev/ocf/vbdev_ocf_rpc.c | 83 ++++++++++++--------------------- 1 file changed, 29 insertions(+), 54 deletions(-) diff --git a/module/bdev/ocf/vbdev_ocf_rpc.c b/module/bdev/ocf/vbdev_ocf_rpc.c index ab5a9ffc5..0fea4dd3c 100644 --- a/module/bdev/ocf/vbdev_ocf_rpc.c +++ b/module/bdev/ocf/vbdev_ocf_rpc.c @@ -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)