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 <pawelx.kaminski@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/466518
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Broadcom SPDK FC-NVMe CI <spdk-ci.pdl@broadcom.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
This commit is contained in:
Pawel Kaminski 2019-08-28 04:30:48 -04:00 committed by Jim Harris
parent 760ecb0a6f
commit 557f8ff9ec
9 changed files with 71 additions and 67 deletions

View File

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

View File

@ -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
}
~~~

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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