From cabb6a7d2fcc77aa3c6a16ff2569baaa0efdcc88 Mon Sep 17 00:00:00 2001 From: Maciej Wawryk Date: Fri, 16 Aug 2019 11:58:53 +0200 Subject: [PATCH] RPC: rename RPC bdev_error series Rename: construct_error_bdev to bdev_error_create, delete_error_bdev to bdev_error_delete, and bdev_inject_error to bdev_error_inject_error Change-Id: I8a585a722b8441974d7c2d4e8ef7170b8d977c71 Signed-off-by: Maciej Wawryk Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/465397 Reviewed-by: Pawel Kaminski Reviewed-by: Broadcom SPDK FC-NVMe CI Reviewed-by: Jim Harris Reviewed-by: Shuhei Matsumoto Tested-by: SPDK CI Jenkins --- doc/jsonrpc.md | 14 +++++----- module/bdev/error/vbdev_error.c | 4 +-- module/bdev/error/vbdev_error.h | 4 +-- module/bdev/error/vbdev_error_rpc.c | 41 ++++++++++++++++------------- scripts/rpc.py | 36 +++++++++++++------------ scripts/rpc/bdev.py | 15 ++++++----- scripts/spdkcli/ui_node.py | 2 +- scripts/spdkcli/ui_root.py | 6 ++--- test/iscsi_tgt/ext4test/ext4test.sh | 8 +++--- test/json_config/clear_config.py | 4 +-- 10 files changed, 71 insertions(+), 63 deletions(-) diff --git a/doc/jsonrpc.md b/doc/jsonrpc.md index 7501b77ce8..5d2447e86b 100644 --- a/doc/jsonrpc.md +++ b/doc/jsonrpc.md @@ -287,9 +287,9 @@ Example response: "bdev_aio_create", "destruct_split_vbdev", "construct_split_vbdev", - "bdev_inject_error", - "delete_error_bdev", - "construct_error_bdev", + "bdev_error_inject_error", + "bdev_error_delete", + "bdev_error_create", "construct_passthru_bdev", "apply_nvme_firmware", "delete_nvme_controller", @@ -1845,7 +1845,7 @@ Example response: } ~~~ -## construct_error_bdev {#rpc_construct_error_bdev} +## bdev_error_create {#rpc_bdev_error_create} Construct error bdev. @@ -1865,7 +1865,7 @@ Example request: "base_name": "Malloc0" }, "jsonrpc": "2.0", - "method": "construct_error_bdev", + "method": "bdev_error_create", "id": 1 } ~~~ @@ -1880,7 +1880,7 @@ Example response: } ~~~ -## delete_error_bdev {#rpc_delete_error_bdev} +## bdev_error_delete {#rpc_bdev_error_delete} Delete error bdev @@ -1904,7 +1904,7 @@ Example request: "name": "EE_Malloc0" }, "jsonrpc": "2.0", - "method": "delete_error_bdev", + "method": "bdev_error_delete", "id": 1 } ~~~ diff --git a/module/bdev/error/vbdev_error.c b/module/bdev/error/vbdev_error.c index 527439f77c..6845e56229 100644 --- a/module/bdev/error/vbdev_error.c +++ b/module/bdev/error/vbdev_error.c @@ -96,7 +96,7 @@ static struct spdk_bdev_module error_if = { SPDK_BDEV_MODULE_REGISTER(error, &error_if) int -spdk_vbdev_inject_error(char *name, uint32_t io_type, uint32_t error_type, uint32_t error_num) +spdk_vbdev_error_inject_error(char *name, uint32_t io_type, uint32_t error_type, uint32_t error_num) { struct spdk_bdev *bdev; struct spdk_bdev_part *part; @@ -496,7 +496,7 @@ vbdev_error_config_json(struct spdk_json_write_ctx *w) TAILQ_FOREACH(cfg, &g_error_config, tailq) { spdk_json_write_object_begin(w); - spdk_json_write_named_string(w, "method", "construct_error_bdev"); + spdk_json_write_named_string(w, "method", "bdev_error_create"); spdk_json_write_named_object_begin(w, "params"); spdk_json_write_named_string(w, "base_name", cfg->base_bdev); spdk_json_write_object_end(w); diff --git a/module/bdev/error/vbdev_error.h b/module/bdev/error/vbdev_error.h index b02d283eec..ba5f3f84b6 100644 --- a/module/bdev/error/vbdev_error.h +++ b/module/bdev/error/vbdev_error.h @@ -70,7 +70,7 @@ void spdk_vbdev_error_delete(struct spdk_bdev *vbdev, spdk_delete_error_complete * \param io_type IO type into which error is injected. * \param error_num Count of injected errors */ -int spdk_vbdev_inject_error(char *name, uint32_t io_type, uint32_t error_type, - uint32_t error_num); +int spdk_vbdev_error_inject_error(char *name, uint32_t io_type, uint32_t error_type, + uint32_t error_num); #endif /* SPDK_VBDEV_ERROR_H */ diff --git a/module/bdev/error/vbdev_error_rpc.c b/module/bdev/error/vbdev_error_rpc.c index c5580940ff..94558a894d 100644 --- a/module/bdev/error/vbdev_error_rpc.c +++ b/module/bdev/error/vbdev_error_rpc.c @@ -72,30 +72,30 @@ spdk_rpc_error_bdev_error_type_parse(char *name) return ERROR_BDEV_ERROR_TYPE_INVALID; } -struct rpc_construct_error_bdev { +struct rpc_bdev_error_create { char *base_name; }; static void -free_rpc_construct_error_bdev(struct rpc_construct_error_bdev *req) +free_rpc_bdev_error_create(struct rpc_bdev_error_create *req) { free(req->base_name); } -static const struct spdk_json_object_decoder rpc_construct_error_bdev_decoders[] = { - {"base_name", offsetof(struct rpc_construct_error_bdev, base_name), spdk_json_decode_string}, +static const struct spdk_json_object_decoder rpc_bdev_error_create_decoders[] = { + {"base_name", offsetof(struct rpc_bdev_error_create, base_name), spdk_json_decode_string}, }; static void -spdk_rpc_construct_error_bdev(struct spdk_jsonrpc_request *request, - const struct spdk_json_val *params) +spdk_rpc_bdev_error_create(struct spdk_jsonrpc_request *request, + const struct spdk_json_val *params) { - struct rpc_construct_error_bdev req = {}; + struct rpc_bdev_error_create req = {}; struct spdk_json_write_ctx *w; int rc = 0; - if (spdk_json_decode_object(params, rpc_construct_error_bdev_decoders, - SPDK_COUNTOF(rpc_construct_error_bdev_decoders), + if (spdk_json_decode_object(params, rpc_bdev_error_create_decoders, + SPDK_COUNTOF(rpc_bdev_error_create_decoders), &req)) { SPDK_ERRLOG("spdk_json_decode_object failed\n"); spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INTERNAL_ERROR, @@ -114,9 +114,10 @@ spdk_rpc_construct_error_bdev(struct spdk_jsonrpc_request *request, spdk_jsonrpc_end_result(request, w); cleanup: - free_rpc_construct_error_bdev(&req); + free_rpc_bdev_error_create(&req); } -SPDK_RPC_REGISTER("construct_error_bdev", spdk_rpc_construct_error_bdev, SPDK_RPC_RUNTIME) +SPDK_RPC_REGISTER("bdev_error_create", spdk_rpc_bdev_error_create, SPDK_RPC_RUNTIME) +SPDK_RPC_REGISTER_ALIAS_DEPRECATED(bdev_error_create, construct_error_bdev) struct rpc_delete_error { char *name; @@ -133,7 +134,7 @@ static const struct spdk_json_object_decoder rpc_delete_error_decoders[] = { }; static void -_spdk_rpc_delete_error_bdev_cb(void *cb_arg, int bdeverrno) +_spdk_rpc_bdev_error_delete_cb(void *cb_arg, int bdeverrno) { struct spdk_jsonrpc_request *request = cb_arg; struct spdk_json_write_ctx *w; @@ -144,7 +145,7 @@ _spdk_rpc_delete_error_bdev_cb(void *cb_arg, int bdeverrno) } static void -spdk_rpc_delete_error_bdev(struct spdk_jsonrpc_request *request, +spdk_rpc_bdev_error_delete(struct spdk_jsonrpc_request *request, const struct spdk_json_val *params) { struct rpc_delete_error req = {NULL}; @@ -164,12 +165,13 @@ spdk_rpc_delete_error_bdev(struct spdk_jsonrpc_request *request, goto cleanup; } - spdk_vbdev_error_delete(vbdev, _spdk_rpc_delete_error_bdev_cb, request); + spdk_vbdev_error_delete(vbdev, _spdk_rpc_bdev_error_delete_cb, request); cleanup: free_rpc_delete_error(&req); } -SPDK_RPC_REGISTER("delete_error_bdev", spdk_rpc_delete_error_bdev, SPDK_RPC_RUNTIME) +SPDK_RPC_REGISTER("bdev_error_delete", spdk_rpc_bdev_error_delete, SPDK_RPC_RUNTIME) +SPDK_RPC_REGISTER_ALIAS_DEPRECATED(bdev_error_delete, delete_error_bdev) struct rpc_error_information { char *name; @@ -194,8 +196,8 @@ free_rpc_error_information(struct rpc_error_information *p) } static void -spdk_rpc_bdev_inject_error(struct spdk_jsonrpc_request *request, - const struct spdk_json_val *params) +spdk_rpc_bdev_error_inject_error(struct spdk_jsonrpc_request *request, + const struct spdk_json_val *params) { struct rpc_error_information req = {}; struct spdk_json_write_ctx *w; @@ -226,7 +228,7 @@ spdk_rpc_bdev_inject_error(struct spdk_jsonrpc_request *request, goto cleanup; } - rc = spdk_vbdev_inject_error(req.name, io_type, error_type, req.num); + rc = spdk_vbdev_error_inject_error(req.name, io_type, error_type, req.num); if (rc) { spdk_jsonrpc_send_error_response(request, rc, spdk_strerror(-rc)); goto cleanup; @@ -239,4 +241,5 @@ spdk_rpc_bdev_inject_error(struct spdk_jsonrpc_request *request, cleanup: free_rpc_error_information(&req); } -SPDK_RPC_REGISTER("bdev_inject_error", spdk_rpc_bdev_inject_error, SPDK_RPC_RUNTIME) +SPDK_RPC_REGISTER("bdev_error_inject_error", spdk_rpc_bdev_error_inject_error, SPDK_RPC_RUNTIME) +SPDK_RPC_REGISTER_ALIAS_DEPRECATED(bdev_error_inject_error, bdev_inject_error) diff --git a/scripts/rpc.py b/scripts/rpc.py index 6ad1126455..3057b8e470 100755 --- a/scripts/rpc.py +++ b/scripts/rpc.py @@ -473,22 +473,23 @@ if __name__ == "__main__": p.add_argument('latency_us', help='new latency value in microseconds.', type=int) p.set_defaults(func=bdev_delay_update_latency) - def construct_error_bdev(args): - print_json(rpc.bdev.construct_error_bdev(args.client, - base_name=args.base_name)) + def bdev_error_create(args): + print_json(rpc.bdev.bdev_error_create(args.client, + base_name=args.base_name)) - p = subparsers.add_parser('construct_error_bdev', + p = subparsers.add_parser('bdev_error_create', aliases=['construct_error_bdev'], help='Add bdev with error injection backend') p.add_argument('base_name', help='base bdev name') - p.set_defaults(func=construct_error_bdev) + p.set_defaults(func=bdev_error_create) - def delete_error_bdev(args): - rpc.bdev.delete_error_bdev(args.client, + def bdev_error_delete(args): + rpc.bdev.bdev_error_delete(args.client, name=args.name) - p = subparsers.add_parser('delete_error_bdev', help='Delete an error bdev') + p = subparsers.add_parser('bdev_error_delete', aliases=['delete_error_bdev'], + help='Delete an error bdev') p.add_argument('name', help='error bdev name') - p.set_defaults(func=delete_error_bdev) + p.set_defaults(func=bdev_error_delete) def construct_iscsi_bdev(args): print_json(rpc.bdev.construct_iscsi_bdev(args.client, @@ -618,20 +619,21 @@ if __name__ == "__main__": type=int, required=False) p.set_defaults(func=set_bdev_qos_limit) - def bdev_inject_error(args): - rpc.bdev.bdev_inject_error(args.client, - name=args.name, - io_type=args.io_type, - error_type=args.error_type, - num=args.num) + def bdev_error_inject_error(args): + rpc.bdev.bdev_error_inject_error(args.client, + name=args.name, + io_type=args.io_type, + error_type=args.error_type, + num=args.num) - p = subparsers.add_parser('bdev_inject_error', help='bdev inject error') + p = subparsers.add_parser('bdev_error_inject_error', aliases=['bdev_inject_error'], + help='bdev inject error') p.add_argument('name', help="""the name of the error injection bdev""") p.add_argument('io_type', help="""io_type: 'clear' 'read' 'write' 'unmap' 'flush' 'all'""") p.add_argument('error_type', help="""error_type: 'failure' 'pending'""") p.add_argument( '-n', '--num', help='the number of commands you want to fail', type=int, default=1) - p.set_defaults(func=bdev_inject_error) + p.set_defaults(func=bdev_error_inject_error) def apply_firmware(args): print_dict(rpc.bdev.apply_firmware(args.client, diff --git a/scripts/rpc/bdev.py b/scripts/rpc/bdev.py index 13416518b0..ce769222de 100644 --- a/scripts/rpc/bdev.py +++ b/scripts/rpc/bdev.py @@ -456,14 +456,15 @@ def delete_rbd_bdev(client, name): return client.call('delete_rbd_bdev', params) -def construct_error_bdev(client, base_name): +@deprecated_alias('construct_error_bdev') +def bdev_error_create(client, base_name): """Construct an error injection block device. Args: base_name: base bdev name """ params = {'base_name': base_name} - return client.call('construct_error_bdev', params) + return client.call('bdev_error_create', params) def bdev_delay_create(client, base_bdev_name, name, avg_read_latency, p99_read_latency, avg_write_latency, p99_write_latency): @@ -520,14 +521,15 @@ def bdev_delay_update_latency(client, delay_bdev_name, latency_type, latency_us) return client.call('bdev_delay_update_latency', params) -def delete_error_bdev(client, name): +@deprecated_alias('delete_error_bdev') +def bdev_error_delete(client, name): """Remove error bdev from the system. Args: bdev_name: name of error bdev to delete """ params = {'name': name} - return client.call('delete_error_bdev', params) + return client.call('bdev_error_delete', params) def construct_iscsi_bdev(client, name, url, initiator_iqn): @@ -729,7 +731,8 @@ def get_bdev_histogram(client, name): return client.call('get_bdev_histogram', params) -def bdev_inject_error(client, name, io_type, error_type, num=1): +@deprecated_alias('bdev_inject_error') +def bdev_error_inject_error(client, name, io_type, error_type, num=1): """Inject an error via an error bdev. Args: @@ -745,7 +748,7 @@ def bdev_inject_error(client, name, io_type, error_type, num=1): 'num': num, } - return client.call('bdev_inject_error', params) + return client.call('bdev_error_inject_error', params) def set_bdev_qd_sampling_period(client, name, period): diff --git a/scripts/spdkcli/ui_node.py b/scripts/spdkcli/ui_node.py index c0378d0905..4c37a70993 100644 --- a/scripts/spdkcli/ui_node.py +++ b/scripts/spdkcli/ui_node.py @@ -361,7 +361,7 @@ class UIErrorBdev(UIBdev): UIBdev.__init__(self, "error", parent) def delete(self, name): - self.get_root().delete_error_bdev(name=name) + self.get_root().bdev_error_delete(name=name) def ui_command_create(self, base_name): """ diff --git a/scripts/spdkcli/ui_root.py b/scripts/spdkcli/ui_root.py index 05200711d6..c3c7063b5b 100644 --- a/scripts/spdkcli/ui_root.py +++ b/scripts/spdkcli/ui_root.py @@ -182,11 +182,11 @@ class UIRoot(UINode): @verbose def create_error_bdev(self, **kwargs): - response = rpc.bdev.construct_error_bdev(self.client, **kwargs) + response = rpc.bdev.bdev_error_create(self.client, **kwargs) @verbose - def delete_error_bdev(self, **kwargs): - rpc.bdev.delete_error_bdev(self.client, **kwargs) + def bdev_error_delete(self, **kwargs): + rpc.bdev.bdev_error_delete(self.client, **kwargs) @verbose @is_method_available diff --git a/test/iscsi_tgt/ext4test/ext4test.sh b/test/iscsi_tgt/ext4test/ext4test.sh index 81b3e5fcc7..20191aa2e0 100755 --- a/test/iscsi_tgt/ext4test/ext4test.sh +++ b/test/iscsi_tgt/ext4test/ext4test.sh @@ -33,7 +33,7 @@ timing_exit start_iscsi_tgt $rpc_py add_portal_group $PORTAL_TAG $TARGET_IP:$ISCSI_PORT $rpc_py add_initiator_group $INITIATOR_TAG $INITIATOR_NAME $NETMASK -$rpc_py construct_error_bdev 'Malloc0' +$rpc_py bdev_error_create 'Malloc0' # "1:2" ==> map PortalGroup1 to InitiatorGroup2 # "64" ==> iSCSI queue depth 64 # "-d" ==> disable CHAP authentication @@ -48,7 +48,7 @@ trap 'for new_dir in $(dir -d /mnt/*dir); do umount $new_dir; rm -rf $new_dir; d iscsicleanup; killprocess $pid; iscsitestfini $1 $2; exit 1' SIGINT SIGTERM EXIT echo "Test error injection" -$rpc_py bdev_inject_error EE_Malloc0 'all' 'failure' -n 1000 +$rpc_py bdev_error_inject_error EE_Malloc0 'all' 'failure' -n 1000 dev=$(iscsiadm -m session -P 3 | grep "Attached scsi disk" | awk '{print $4}') @@ -66,7 +66,7 @@ fi set -e iscsicleanup -$rpc_py bdev_inject_error EE_Malloc0 'clear' 'failure' +$rpc_py bdev_error_inject_error EE_Malloc0 'clear' 'failure' $rpc_py delete_target_node $node_base:Target0 echo "Error injection test done" @@ -124,7 +124,7 @@ trap - SIGINT SIGTERM EXIT iscsicleanup $rpc_py destruct_split_vbdev Nvme0n1 -$rpc_py delete_error_bdev EE_Malloc0 +$rpc_py bdev_error_delete EE_Malloc0 if [ -z "$NO_NVME" ]; then $rpc_py delete_nvme_controller Nvme0 diff --git a/test/json_config/clear_config.py b/test/json_config/clear_config.py index 252a27b2e7..47212872d2 100755 --- a/test/json_config/clear_config.py +++ b/test/json_config/clear_config.py @@ -25,7 +25,7 @@ def get_bdev_name(bdev): bdev_name = bdev['params']['base_name'] elif 'base_bdev' in bdev['params']: bdev_name = bdev['params']['base_bdev'] - if 'method' in bdev and bdev['method'] == 'construct_error_bdev': + if 'method' in bdev and bdev['method'] == 'bdev_error_create': bdev_name = "EE_%s" % bdev_name return bdev_name @@ -36,7 +36,7 @@ def get_bdev_destroy_method(bdev): 'construct_rbd_bdev': "delete_rbd_bdev", 'construct_pmem_bdev': "delete_pmem_bdev", 'bdev_aio_create': "bdev_aio_delete", - 'construct_error_bdev': "delete_error_bdev", + 'bdev_error_create': "bdev_error_delete", 'construct_split_vbdev': "destruct_split_vbdev", 'construct_virtio_dev': "remove_virtio_bdev", 'bdev_crypto_create': "bdev_crypto_delete",