bdev: remove delete_bdev RPC

This RPC was deprecated a couple of releases ago.
bdev modules now each have their own RPC for deleting
bdevs.  Due to how bdevs are created differently on
different modules, it is simply not possible to
have one delete_bdev RPC that would work for all bdev
types.

Signed-off-by: Jim Harris <james.r.harris@intel.com>
Change-Id: Ia46c95dce6e35f7557e8d41c41b8fea382924547

Reviewed-on: https://review.gerrithub.io/c/442615
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
This commit is contained in:
Jim Harris 2019-01-29 10:39:01 -07:00 committed by Darek Stojaczyk
parent 5f3c92c2fd
commit db524432dc
7 changed files with 8 additions and 141 deletions

View File

@ -263,7 +263,6 @@ Example response:
"set_iscsi_options",
"set_bdev_options",
"set_bdev_qos_limit",
"delete_bdev",
"get_bdevs",
"get_bdevs_iostat",
"get_subsystem_config",
@ -710,41 +709,6 @@ Note that histogram field is trimmed, actual encoded histogram length is ~80kb.
}
~~~
## delete_bdev {#rpc_delete_bdev}
Unregister a block device. This RPC is deprecated. Users should instead use
the specific deletion RPC for the bdev type to be removed (i.e.
delete_malloc_bdev).
### Parameters
Name | Optional | Type | Description
----------------------- | -------- | ----------- | -----------
name | Required | string | Block device name
### Example
Example request:
~~~
{
"jsonrpc": "2.0",
"id": 1,
"method": "delete_bdev",
"params": {
"name": "Malloc0"
}
}
~~~
Example response:
~~~
{
"jsonrpc": "2.0",
"id": 1,
"result": true
}
~~~
## set_bdev_qos_limit {#rpc_set_bdev_qos_limit}
Set the quality of service rate limit on a bdev.

View File

@ -363,75 +363,6 @@ invalid:
}
SPDK_RPC_REGISTER("get_bdevs", spdk_rpc_get_bdevs, SPDK_RPC_RUNTIME)
struct rpc_delete_bdev {
char *name;
};
static void
free_rpc_delete_bdev(struct rpc_delete_bdev *r)
{
free(r->name);
}
static const struct spdk_json_object_decoder rpc_delete_bdev_decoders[] = {
{"name", offsetof(struct rpc_delete_bdev, name), spdk_json_decode_string},
};
static void
_spdk_rpc_delete_bdev_cb(void *cb_arg, int bdeverrno)
{
struct spdk_jsonrpc_request *request = cb_arg;
struct spdk_json_write_ctx *w;
w = spdk_jsonrpc_begin_result(request);
if (w == NULL) {
return;
}
spdk_json_write_bool(w, bdeverrno == 0);
spdk_jsonrpc_end_result(request, w);
}
static void
spdk_rpc_delete_bdev(struct spdk_jsonrpc_request *request,
const struct spdk_json_val *params)
{
struct rpc_delete_bdev req = {};
struct spdk_bdev *bdev;
SPDK_ERRLOG("The delete_bdev RPC is deprecated. Please use the RPC specific\n");
SPDK_ERRLOG("to the bdev type being deleted.\n");
if (spdk_json_decode_object(params, rpc_delete_bdev_decoders,
SPDK_COUNTOF(rpc_delete_bdev_decoders),
&req)) {
SPDK_ERRLOG("spdk_json_decode_object failed\n");
goto invalid;
}
if (req.name == NULL) {
SPDK_ERRLOG("missing name param\n");
goto invalid;
}
bdev = spdk_bdev_get_by_name(req.name);
if (bdev == NULL) {
SPDK_ERRLOG("bdev '%s' does not exist\n", req.name);
goto invalid;
}
spdk_bdev_unregister(bdev, _spdk_rpc_delete_bdev_cb, request);
free_rpc_delete_bdev(&req);
return;
invalid:
spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INVALID_PARAMS, "Invalid parameters");
free_rpc_delete_bdev(&req);
}
SPDK_RPC_REGISTER("delete_bdev", spdk_rpc_delete_bdev, SPDK_RPC_RUNTIME)
struct rpc_set_bdev_qd_sampling_period {
char *name;
uint64_t period;

View File

@ -465,15 +465,6 @@ if __name__ == "__main__":
p.add_argument('-b', '--name', help="Name of the Blockdev. Example: Nvme0n1", required=False)
p.set_defaults(func=get_bdevs_iostat)
def delete_bdev(args):
rpc.bdev.delete_bdev(args.client,
bdev_name=args.bdev_name)
p = subparsers.add_parser('delete_bdev', help='Delete a blockdev')
p.add_argument(
'bdev_name', help='Blockdev name to be deleted. Example: Malloc0.')
p.set_defaults(func=delete_bdev)
def enable_bdev_histogram(args):
rpc.bdev.enable_bdev_histogram(args.client, name=args.name, enable=args.enable)

View File

@ -576,16 +576,6 @@ def get_bdevs_iostat(client, name=None):
return client.call('get_bdevs_iostat', params)
def delete_bdev(client, bdev_name):
"""Remove a bdev from the system.
Args:
bdev_name: name of bdev to delete
"""
params = {'name': bdev_name}
return client.call('delete_bdev', params)
def enable_bdev_histogram(client, name, enable):
"""Control whether histogram is enabled for specified bdev.

View File

@ -125,10 +125,6 @@ class UIRoot(UINode):
def destruct_split_bdev(self, **kwargs):
rpc.bdev.destruct_split_vbdev(self.client, **kwargs)
@verbose
def delete_bdev(self, name):
rpc.bdev.delete_bdev(self.client, bdev_name=name)
@verbose
def create_malloc_bdev(self, **kwargs):
response = rpc.bdev.construct_malloc_bdev(self.client, **kwargs)

View File

@ -149,11 +149,6 @@ class Commands_Rpc(object):
output, rc = self.rpc.destroy_lvol_store(name_opt, uuid)
return rc
def delete_bdev(self, base_name):
print("INFO: RPC COMMAND delete_bdev")
output, rc = self.rpc.delete_bdev(base_name)
return rc
def delete_malloc_bdev(self, base_name):
print("INFO: RPC COMMAND delete_malloc_bdev")
output, rc = self.rpc.delete_malloc_bdev(base_name)

View File

@ -241,7 +241,7 @@ Steps & expected results:
- call construct_pmem_bdev with with correct arguments to create a pmem bdev
- return code = 0, no errors
- using get_bdevs check that pmem bdev was created
- delete pmem bdev using delete_bdev
- delete pmem bdev using delete_pmem_bdev
- return code = 0, no error code
- delete previously created pmem pool
- return code = 0, no error code
@ -258,15 +258,15 @@ Steps & expected results:
- using get_bdevs check that pmem bdev was created
- call construct_pmem_bdev again on the same pmem file
- return code != 0, error code = EEXIST
- delete pmem bdev using delete_bdev
- delete pmem bdev using delete_pmem_bdev
- return code = 0, no error code
- delete previously created pmem pool
- return code = 0, no error code
### delete_bdev
### delete_pmem_bdev
#### delete_bdev_tc1
Positive test for deleting pmem bdevs using common delete_bdev call.
Positive test for deleting pmem bdevs using delete_pmem_bdev call.
Steps & expected results:
- construct malloc and aio bdevs (also NVMe if possible)
- all calls - return code = 0, no errors; bdevs created
@ -278,12 +278,12 @@ block size=512, total size=256M
- call construct_pmem_bdev and create a pmem bdev
- return code = 0, no errors
- using get_bdevs check that pmem bdev was created
- delete pmem bdev using delete_bdev
- delete pmem bdev using delete_pmem_bdev
- return code = 0, no errors
- using get_bdevs confirm that pmem bdev was deleted and other bdevs
were unaffected.
#### delete_bdev_tc2
#### delete_pmem_bdev_tc2
Negative test for deleting pmem bdev twice.
Steps & expected results:
- call create_pmem_pool with correct path argument,
@ -294,10 +294,10 @@ block size=512, total size=256M
- call construct_pmem_bdev and create a pmem bdev
- return code = 0, no errors
- using get_bdevs check that pmem bdev was created
- delete pmem bdev using delete_bdev
- delete pmem bdev using delete_pmem_bdev
- return code = 0, no errors
- using get_bdevs confirm that pmem bdev was deleted
- delete pmem bdev using delete_bdev second time
- delete pmem bdev using delete_pmem_bdev second time
- return code != 0, error code = ENODEV