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_iscsi_options",
|
||||||
"set_bdev_options",
|
"set_bdev_options",
|
||||||
"set_bdev_qos_limit",
|
"set_bdev_qos_limit",
|
||||||
"delete_bdev",
|
|
||||||
"get_bdevs",
|
"get_bdevs",
|
||||||
"get_bdevs_iostat",
|
"get_bdevs_iostat",
|
||||||
"get_subsystem_config",
|
"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_bdev_qos_limit {#rpc_set_bdev_qos_limit}
|
||||||
|
|
||||||
Set the quality of service rate limit on a bdev.
|
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)
|
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 {
|
struct rpc_set_bdev_qd_sampling_period {
|
||||||
char *name;
|
char *name;
|
||||||
uint64_t period;
|
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.add_argument('-b', '--name', help="Name of the Blockdev. Example: Nvme0n1", required=False)
|
||||||
p.set_defaults(func=get_bdevs_iostat)
|
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):
|
def enable_bdev_histogram(args):
|
||||||
rpc.bdev.enable_bdev_histogram(args.client, name=args.name, enable=args.enable)
|
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)
|
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):
|
def enable_bdev_histogram(client, name, enable):
|
||||||
"""Control whether histogram is enabled for specified bdev.
|
"""Control whether histogram is enabled for specified bdev.
|
||||||
|
|
||||||
|
@ -125,10 +125,6 @@ class UIRoot(UINode):
|
|||||||
def destruct_split_bdev(self, **kwargs):
|
def destruct_split_bdev(self, **kwargs):
|
||||||
rpc.bdev.destruct_split_vbdev(self.client, **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
|
@verbose
|
||||||
def create_malloc_bdev(self, **kwargs):
|
def create_malloc_bdev(self, **kwargs):
|
||||||
response = rpc.bdev.construct_malloc_bdev(self.client, **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)
|
output, rc = self.rpc.destroy_lvol_store(name_opt, uuid)
|
||||||
return rc
|
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):
|
def delete_malloc_bdev(self, base_name):
|
||||||
print("INFO: RPC COMMAND delete_malloc_bdev")
|
print("INFO: RPC COMMAND delete_malloc_bdev")
|
||||||
output, rc = self.rpc.delete_malloc_bdev(base_name)
|
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
|
- call construct_pmem_bdev with with correct arguments to create a pmem bdev
|
||||||
- return code = 0, no errors
|
- return code = 0, no errors
|
||||||
- using get_bdevs check that pmem bdev was created
|
- 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
|
- return code = 0, no error code
|
||||||
- delete previously created pmem pool
|
- delete previously created pmem pool
|
||||||
- return code = 0, no error code
|
- return code = 0, no error code
|
||||||
@ -258,15 +258,15 @@ Steps & expected results:
|
|||||||
- using get_bdevs check that pmem bdev was created
|
- using get_bdevs check that pmem bdev was created
|
||||||
- call construct_pmem_bdev again on the same pmem file
|
- call construct_pmem_bdev again on the same pmem file
|
||||||
- return code != 0, error code = EEXIST
|
- 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
|
- return code = 0, no error code
|
||||||
- delete previously created pmem pool
|
- delete previously created pmem pool
|
||||||
- return code = 0, no error code
|
- return code = 0, no error code
|
||||||
|
|
||||||
### delete_bdev
|
### delete_pmem_bdev
|
||||||
|
|
||||||
#### delete_bdev_tc1
|
#### 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:
|
Steps & expected results:
|
||||||
- construct malloc and aio bdevs (also NVMe if possible)
|
- construct malloc and aio bdevs (also NVMe if possible)
|
||||||
- all calls - return code = 0, no errors; bdevs created
|
- 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
|
- call construct_pmem_bdev and create a pmem bdev
|
||||||
- return code = 0, no errors
|
- return code = 0, no errors
|
||||||
- using get_bdevs check that pmem bdev was created
|
- 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
|
- return code = 0, no errors
|
||||||
- using get_bdevs confirm that pmem bdev was deleted and other bdevs
|
- using get_bdevs confirm that pmem bdev was deleted and other bdevs
|
||||||
were unaffected.
|
were unaffected.
|
||||||
|
|
||||||
#### delete_bdev_tc2
|
#### delete_pmem_bdev_tc2
|
||||||
Negative test for deleting pmem bdev twice.
|
Negative test for deleting pmem bdev twice.
|
||||||
Steps & expected results:
|
Steps & expected results:
|
||||||
- call create_pmem_pool with correct path argument,
|
- 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
|
- call construct_pmem_bdev and create a pmem bdev
|
||||||
- return code = 0, no errors
|
- return code = 0, no errors
|
||||||
- using get_bdevs check that pmem bdev was created
|
- 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
|
- return code = 0, no errors
|
||||||
- using get_bdevs confirm that pmem bdev was deleted
|
- 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
|
- return code != 0, error code = ENODEV
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user