From 557f8ff9ecbfbd8829e6001d1a9c887e1e0e39f2 Mon Sep 17 00:00:00 2001 From: Pawel Kaminski Date: Wed, 28 Aug 2019 04:30:48 -0400 Subject: [PATCH] rpc: Rename ocf create and delete related rpcs Rename construct_ocf_bdev to bdev_ocf_create. Rename delete_ocf_bdev to bdev_ocf_delete. Change-Id: Iec456c2004cc7e6c61d29439e1b7a9b5dfe7dfaa Signed-off-by: Pawel Kaminski Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/466518 Tested-by: SPDK CI Jenkins Reviewed-by: Jim Harris Reviewed-by: Broadcom SPDK FC-NVMe CI Reviewed-by: Shuhei Matsumoto --- doc/bdev.md | 4 +- doc/jsonrpc.md | 8 ++-- module/bdev/ocf/vbdev_ocf.c | 2 +- module/bdev/ocf/vbdev_ocf_rpc.c | 52 +++++++++++----------- scripts/rpc.py | 24 +++++----- scripts/rpc/bdev.py | 10 +++-- test/ocf/management/create-destruct.sh | 12 ++--- test/ocf/management/multicore.sh | 18 ++++---- test/ocf/management/persistent-metadata.sh | 8 ++-- 9 files changed, 71 insertions(+), 67 deletions(-) diff --git a/doc/bdev.md b/doc/bdev.md index ad6e0afe2..4f6155ab9 100644 --- a/doc/bdev.md +++ b/doc/bdev.md @@ -347,7 +347,7 @@ OCF bdev can be used to enable caching for any underlying bdev. Below is an example command for creating OCF bdev: -`rpc.py construct_ocf_bdev Cache1 wt Malloc0 Nvme0n1` +`rpc.py bdev_ocf_create Cache1 wt Malloc0 Nvme0n1` This command will create new OCF bdev `Cache1` having bdev `Malloc0` as caching-device and `Nvme0n1` as core-device and initial cache mode `Write-Through`. @@ -358,7 +358,7 @@ and non-volatile metadata will be disabled. To remove `Cache1`: -`rpc.py delete_ocf_bdev Cache1` +`rpc.py bdev_ocf_delete Cache1` During removal OCF-cache will be stopped and all cached data will be written to the core device. diff --git a/doc/jsonrpc.md b/doc/jsonrpc.md index f00acc600..864dd7333 100644 --- a/doc/jsonrpc.md +++ b/doc/jsonrpc.md @@ -816,7 +816,7 @@ Example response: } ~~~ -## construct_ocf_bdev {#rpc_construct_ocf_bdev} +## bdev_ocf_create {#rpc_bdev_ocf_create} Construct new OCF bdev. Command accepts cache mode that is going to be used. @@ -848,7 +848,7 @@ Example request: "core_bdev_name": "aio0" }, "jsonrpc": "2.0", - "method": "construct_ocf_bdev", + "method": "bdev_ocf_create", "id": 1 } ~~~ @@ -863,7 +863,7 @@ Example response: } ~~~ -## delete_ocf_bdev {#rpc_delete_ocf_bdev} +## bdev_ocf_delete {#rpc_bdev_ocf_delete} Delete the OCF bdev @@ -883,7 +883,7 @@ Example request: "name": "ocf0" }, "jsonrpc": "2.0", - "method": "delete_ocf_bdev", + "method": "bdev_ocf_delete", "id": 1 } ~~~ diff --git a/module/bdev/ocf/vbdev_ocf.c b/module/bdev/ocf/vbdev_ocf.c index 61926a3fc..95a94fbe3 100644 --- a/module/bdev/ocf/vbdev_ocf.c +++ b/module/bdev/ocf/vbdev_ocf.c @@ -668,7 +668,7 @@ vbdev_ocf_write_json_config(struct spdk_bdev *bdev, struct spdk_json_write_ctx * spdk_json_write_object_begin(w); - spdk_json_write_named_string(w, "method", "construct_ocf_bdev"); + spdk_json_write_named_string(w, "method", "bdev_ocf_create"); spdk_json_write_named_object_begin(w, "params"); spdk_json_write_named_string(w, "name", vbdev->name); diff --git a/module/bdev/ocf/vbdev_ocf_rpc.c b/module/bdev/ocf/vbdev_ocf_rpc.c index b45c4a800..dd65ec15d 100644 --- a/module/bdev/ocf/vbdev_ocf_rpc.c +++ b/module/bdev/ocf/vbdev_ocf_rpc.c @@ -38,7 +38,7 @@ #include "spdk/string.h" /* Structure to hold the parameters for this RPC method. */ -struct rpc_construct_ocf_bdev { +struct rpc_bdev_ocf_create { char *name; /* master vbdev */ char *mode; /* OCF mode (choose one) */ char *cache_bdev_name; /* sub bdev */ @@ -46,7 +46,7 @@ struct rpc_construct_ocf_bdev { }; static void -free_rpc_construct_ocf_bdev(struct rpc_construct_ocf_bdev *r) +free_rpc_bdev_ocf_create(struct rpc_bdev_ocf_create *r) { free(r->name); free(r->core_bdev_name); @@ -55,11 +55,11 @@ free_rpc_construct_ocf_bdev(struct rpc_construct_ocf_bdev *r) } /* Structure to decode the input parameters for this RPC method. */ -static const struct spdk_json_object_decoder rpc_construct_ocf_bdev_decoders[] = { - {"name", offsetof(struct rpc_construct_ocf_bdev, name), spdk_json_decode_string}, - {"mode", offsetof(struct rpc_construct_ocf_bdev, mode), spdk_json_decode_string}, - {"cache_bdev_name", offsetof(struct rpc_construct_ocf_bdev, cache_bdev_name), spdk_json_decode_string}, - {"core_bdev_name", offsetof(struct rpc_construct_ocf_bdev, core_bdev_name), spdk_json_decode_string}, +static const struct spdk_json_object_decoder rpc_bdev_ocf_create_decoders[] = { + {"name", offsetof(struct rpc_bdev_ocf_create, name), spdk_json_decode_string}, + {"mode", offsetof(struct rpc_bdev_ocf_create, mode), spdk_json_decode_string}, + {"cache_bdev_name", offsetof(struct rpc_bdev_ocf_create, cache_bdev_name), spdk_json_decode_string}, + {"core_bdev_name", offsetof(struct rpc_bdev_ocf_create, core_bdev_name), spdk_json_decode_string}, }; static void @@ -80,42 +80,43 @@ construct_cb(int status, struct vbdev_ocf *vbdev, void *cb_arg) } static void -spdk_rpc_construct_ocf_bdev(struct spdk_jsonrpc_request *request, - const struct spdk_json_val *params) +spdk_rpc_bdev_ocf_create(struct spdk_jsonrpc_request *request, + const struct spdk_json_val *params) { - struct rpc_construct_ocf_bdev req = {NULL}; + struct rpc_bdev_ocf_create req = {NULL}; int ret; - ret = spdk_json_decode_object(params, rpc_construct_ocf_bdev_decoders, - SPDK_COUNTOF(rpc_construct_ocf_bdev_decoders), + ret = spdk_json_decode_object(params, rpc_bdev_ocf_create_decoders, + SPDK_COUNTOF(rpc_bdev_ocf_create_decoders), &req); if (ret) { spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INVALID_PARAMS, "Invalid parameters"); - free_rpc_construct_ocf_bdev(&req); + free_rpc_bdev_ocf_create(&req); return; } vbdev_ocf_construct(req.name, req.mode, req.cache_bdev_name, req.core_bdev_name, false, construct_cb, request); - free_rpc_construct_ocf_bdev(&req); + free_rpc_bdev_ocf_create(&req); } -SPDK_RPC_REGISTER("construct_ocf_bdev", spdk_rpc_construct_ocf_bdev, SPDK_RPC_RUNTIME) +SPDK_RPC_REGISTER("bdev_ocf_create", spdk_rpc_bdev_ocf_create, SPDK_RPC_RUNTIME) +SPDK_RPC_REGISTER_ALIAS_DEPRECATED(bdev_ocf_create, construct_ocf_bdev) /* Structure to hold the parameters for this RPC method. */ -struct rpc_delete_ocf_bdev { +struct rpc_bdev_ocf_delete { char *name; /* master vbdev name */ }; static void -free_rpc_delete_ocf_bdev(struct rpc_delete_ocf_bdev *r) +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_delete_ocf_bdev_decoders[] = { - {"name", offsetof(struct rpc_delete_ocf_bdev, name), spdk_json_decode_string}, +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 @@ -136,15 +137,15 @@ delete_cb(void *cb_arg, int status) } static void -spdk_rpc_delete_ocf_bdev(struct spdk_jsonrpc_request *request, +spdk_rpc_bdev_ocf_delete(struct spdk_jsonrpc_request *request, const struct spdk_json_val *params) { - struct rpc_delete_ocf_bdev req = {NULL}; + struct rpc_bdev_ocf_delete req = {NULL}; struct vbdev_ocf *vbdev; int status; - status = spdk_json_decode_object(params, rpc_delete_ocf_bdev_decoders, - SPDK_COUNTOF(rpc_delete_ocf_bdev_decoders), + status = spdk_json_decode_object(params, rpc_bdev_ocf_delete_decoders, + SPDK_COUNTOF(rpc_bdev_ocf_delete_decoders), &req); if (status) { spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INVALID_PARAMS, @@ -168,9 +169,10 @@ spdk_rpc_delete_ocf_bdev(struct spdk_jsonrpc_request *request, } end: - free_rpc_delete_ocf_bdev(&req); + free_rpc_bdev_ocf_delete(&req); } -SPDK_RPC_REGISTER("delete_ocf_bdev", spdk_rpc_delete_ocf_bdev, SPDK_RPC_RUNTIME) +SPDK_RPC_REGISTER("bdev_ocf_delete", spdk_rpc_bdev_ocf_delete, SPDK_RPC_RUNTIME) +SPDK_RPC_REGISTER_ALIAS_DEPRECATED(bdev_ocf_delete, delete_ocf_bdev) /* Structure to hold the parameters for this RPC method. */ struct rpc_get_ocf_stats { diff --git a/scripts/rpc.py b/scripts/rpc.py index 6529116e1..fb6d14df0 100755 --- a/scripts/rpc.py +++ b/scripts/rpc.py @@ -198,28 +198,28 @@ if __name__ == "__main__": p.add_argument('name', help='crypto bdev name') p.set_defaults(func=bdev_crypto_delete) - def construct_ocf_bdev(args): - print_json(rpc.bdev.construct_ocf_bdev(args.client, - name=args.name, - mode=args.mode, - cache_bdev_name=args.cache_bdev_name, - core_bdev_name=args.core_bdev_name)) - p = subparsers.add_parser('construct_ocf_bdev', + def bdev_ocf_create(args): + print_json(rpc.bdev.bdev_ocf_create(args.client, + name=args.name, + mode=args.mode, + cache_bdev_name=args.cache_bdev_name, + core_bdev_name=args.core_bdev_name)) + p = subparsers.add_parser('bdev_ocf_create', aliases=['construct_ocf_bdev'], help='Add an OCF block device') p.add_argument('name', help='Name of resulting OCF bdev') p.add_argument('mode', help='OCF cache mode', choices=['wb', 'wt', 'pt']) p.add_argument('cache_bdev_name', help='Name of underlying cache bdev') p.add_argument('core_bdev_name', help='Name of unerlying core bdev') - p.set_defaults(func=construct_ocf_bdev) + p.set_defaults(func=bdev_ocf_create) - def delete_ocf_bdev(args): - rpc.bdev.delete_ocf_bdev(args.client, + def bdev_ocf_delete(args): + rpc.bdev.bdev_ocf_delete(args.client, name=args.name) - p = subparsers.add_parser('delete_ocf_bdev', + p = subparsers.add_parser('bdev_ocf_delete', aliases=['delete_ocf_bdev'], help='Delete an OCF block device') p.add_argument('name', help='Name of OCF bdev') - p.set_defaults(func=delete_ocf_bdev) + p.set_defaults(func=bdev_ocf_delete) def get_ocf_stats(args): print_dict(rpc.bdev.get_ocf_stats(args.client, diff --git a/scripts/rpc/bdev.py b/scripts/rpc/bdev.py index 197801ced..452d96c53 100644 --- a/scripts/rpc/bdev.py +++ b/scripts/rpc/bdev.py @@ -100,7 +100,8 @@ def bdev_crypto_delete(client, name): return client.call('bdev_crypto_delete', params) -def construct_ocf_bdev(client, name, mode, cache_bdev_name, core_bdev_name): +@deprecated_alias('construct_ocf_bdev') +def bdev_ocf_create(client, name, mode, cache_bdev_name, core_bdev_name): """Add an OCF block device Args: @@ -114,10 +115,11 @@ def construct_ocf_bdev(client, name, mode, cache_bdev_name, core_bdev_name): """ params = {'name': name, 'mode': mode, 'cache_bdev_name': cache_bdev_name, 'core_bdev_name': core_bdev_name} - return client.call('construct_ocf_bdev', params) + return client.call('bdev_ocf_create', params) -def delete_ocf_bdev(client, name): +@deprecated_alias('delete_ocf_bdev') +def bdev_ocf_delete(client, name): """Delete an OCF device Args: @@ -126,7 +128,7 @@ def delete_ocf_bdev(client, name): """ params = {'name': name} - return client.call('delete_ocf_bdev', params) + return client.call('bdev_ocf_delete', params) def get_ocf_stats(client, name): diff --git a/test/ocf/management/create-destruct.sh b/test/ocf/management/create-destruct.sh index 45346ca64..973261770 100755 --- a/test/ocf/management/create-destruct.sh +++ b/test/ocf/management/create-destruct.sh @@ -25,7 +25,7 @@ waitforlisten $spdk_pid $rpc_py bdev_malloc_create 101 512 -b Malloc0 $rpc_py bdev_malloc_create 101 512 -b Malloc1 -$rpc_py construct_ocf_bdev PartCache wt Malloc0 NonExisting +$rpc_py bdev_ocf_create PartCache wt Malloc0 NonExisting $rpc_py get_ocf_bdevs PartCache | jq -e \ '.[0] | .started == false and .cache.attached and .core.attached == false' @@ -38,13 +38,13 @@ if ! bdev_check_claimed Malloc0; then exit 1 fi -$rpc_py delete_ocf_bdev PartCache +$rpc_py bdev_ocf_delete PartCache if bdev_check_claimed Malloc0; then >&2 echo "Base device is not expected to be claimed now" exit 1 fi -$rpc_py construct_ocf_bdev FullCache wt Malloc0 Malloc1 +$rpc_py bdev_ocf_create FullCache wt Malloc0 Malloc1 $rpc_py get_ocf_bdevs FullCache | jq -e \ '.[0] | .started and .cache.attached and .core.attached' @@ -54,13 +54,13 @@ if ! (bdev_check_claimed Malloc0 && bdev_check_claimed Malloc1); then exit 1 fi -$rpc_py delete_ocf_bdev FullCache +$rpc_py bdev_ocf_delete FullCache if bdev_check_claimed Malloc0 && bdev_check_claimed Malloc1; then >&2 echo "Base devices are not expected to be claimed now" exit 1 fi -$rpc_py construct_ocf_bdev HotCache wt Malloc0 Malloc1 +$rpc_py bdev_ocf_create HotCache wt Malloc0 Malloc1 if ! (bdev_check_claimed Malloc0 && bdev_check_claimed Malloc1); then >&2 echo "Base devices expected to be claimed now" @@ -82,7 +82,7 @@ if [[ $gone == false ]]; then fi # check if shutdown of running CAS bdev is ok -$rpc_py construct_ocf_bdev PartCache wt NonExisting Malloc1 +$rpc_py bdev_ocf_create PartCache wt NonExisting Malloc1 trap - SIGINT SIGTERM EXIT diff --git a/test/ocf/management/multicore.sh b/test/ocf/management/multicore.sh index ffaaa661b..8aec9a1b9 100755 --- a/test/ocf/management/multicore.sh +++ b/test/ocf/management/multicore.sh @@ -27,8 +27,8 @@ start_spdk $rpc_py bdev_malloc_create 1 512 -b Core0 $rpc_py bdev_malloc_create 1 512 -b Core1 -$rpc_py construct_ocf_bdev C1 wt Cache Core0 -$rpc_py construct_ocf_bdev C2 wt Cache Core1 +$rpc_py bdev_ocf_create C1 wt Cache Core0 +$rpc_py bdev_ocf_create C2 wt Cache Core1 $rpc_py get_ocf_bdevs | jq -e \ 'any(select(.started)) == false' @@ -40,12 +40,12 @@ $rpc_py get_ocf_bdevs | jq -e \ # Detaching cores -$rpc_py delete_ocf_bdev C2 +$rpc_py bdev_ocf_delete C2 $rpc_py get_ocf_bdevs C1 | jq -e \ '.[0] | .started' -$rpc_py construct_ocf_bdev C2 wt Cache Core1 +$rpc_py bdev_ocf_create C2 wt Cache Core1 $rpc_py get_ocf_bdevs C2 | jq -e \ '.[0] | .started' @@ -61,8 +61,8 @@ $rpc_py bdev_malloc_create 101 512 -b Cache $rpc_py bdev_malloc_create 101 512 -b Malloc $rpc_py bdev_malloc_create 1 512 -b Core -$rpc_py construct_ocf_bdev C1 wt Cache Malloc -$rpc_py construct_ocf_bdev C2 wt Cache Core +$rpc_py bdev_ocf_create C1 wt Cache Malloc +$rpc_py bdev_ocf_create C2 wt Cache Core $rpc_py get_ocf_bdevs Cache | jq \ 'length == 2' @@ -74,8 +74,8 @@ $rpc_py get_ocf_bdevs | jq -e \ # Not fully initialized shutdown -$rpc_py construct_ocf_bdev C1 wt Malloc NonExisting -$rpc_py construct_ocf_bdev C2 wt Malloc NonExisting -$rpc_py construct_ocf_bdev C3 wt Malloc Core +$rpc_py bdev_ocf_create C1 wt Malloc NonExisting +$rpc_py bdev_ocf_create C2 wt Malloc NonExisting +$rpc_py bdev_ocf_create C3 wt Malloc Core stop_spdk diff --git a/test/ocf/management/persistent-metadata.sh b/test/ocf/management/persistent-metadata.sh index ea41974b9..7da1615b5 100755 --- a/test/ocf/management/persistent-metadata.sh +++ b/test/ocf/management/persistent-metadata.sh @@ -44,10 +44,10 @@ waitforlisten $spdk_pid # Create ocf on persistent storage -$rpc_py construct_ocf_bdev ocfWT wt Nvme0n1p0 Nvme0n1p1 -$rpc_py construct_ocf_bdev ocfPT pt Nvme0n1p2 Nvme0n1p3 -$rpc_py construct_ocf_bdev ocfWB0 wb Nvme0n1p4 Nvme0n1p5 -$rpc_py construct_ocf_bdev ocfWB1 wb Nvme0n1p4 Nvme0n1p6 +$rpc_py bdev_ocf_create ocfWT wt Nvme0n1p0 Nvme0n1p1 +$rpc_py bdev_ocf_create ocfPT pt Nvme0n1p2 Nvme0n1p3 +$rpc_py bdev_ocf_create ocfWB0 wb Nvme0n1p4 Nvme0n1p5 +$rpc_py bdev_ocf_create ocfWB1 wb Nvme0n1p4 Nvme0n1p6 # Sorting bdevs because we dont guarantee that they are going to be # in the same order after shutdown