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:
parent
5f3c92c2fd
commit
db524432dc
@ -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.
|
||||
|
@ -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;
|
||||
|
@ -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)
|
||||
|
||||
|
@ -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.
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user