module/raid: bdev_raid_remove_base_bdev rpc
Signed-off-by: Krzysztof Smolinski <krzysztof.smolinski@intel.com> Change-Id: I4829f6cd0c10bfcd2c6893cf9412fc974c4b338c
This commit is contained in:
parent
cdf0959bc4
commit
6680fdf818
@ -10145,6 +10145,41 @@ Example response:
|
|||||||
}
|
}
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
|
### bdev_raid_remove_base_bdev {#rpc_bdev_raid_remove_base_bdev}
|
||||||
|
|
||||||
|
Remove base bdev from existing raid bdev.
|
||||||
|
|
||||||
|
#### Parameters
|
||||||
|
|
||||||
|
Name | Optional | Type | Description
|
||||||
|
----------------------- | -------- | ----------- | -----------
|
||||||
|
name | Required | string | Base bdev name in RAID
|
||||||
|
|
||||||
|
#### Example
|
||||||
|
|
||||||
|
Example request:
|
||||||
|
|
||||||
|
~~~json
|
||||||
|
{
|
||||||
|
"jsonrpc": "2.0",
|
||||||
|
"method": "bdev_raid_remove_base_bdev",
|
||||||
|
"id": 1,
|
||||||
|
"params": {
|
||||||
|
"name": "Raid0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
~~~
|
||||||
|
|
||||||
|
Example response:
|
||||||
|
|
||||||
|
~~~json
|
||||||
|
{
|
||||||
|
"jsonrpc": "2.0",
|
||||||
|
"id": 1,
|
||||||
|
"result": true
|
||||||
|
}
|
||||||
|
~~~
|
||||||
|
|
||||||
## SPLIT
|
## SPLIT
|
||||||
|
|
||||||
### bdev_split_create {#rpc_bdev_split_create}
|
### bdev_split_create {#rpc_bdev_split_create}
|
||||||
|
@ -1479,7 +1479,7 @@ raid_bdev_remove_base_bdev_on_suspended(struct raid_bdev *raid_bdev, void *ctx)
|
|||||||
* 0 - success
|
* 0 - success
|
||||||
* non zero - failure
|
* non zero - failure
|
||||||
*/
|
*/
|
||||||
static int
|
int
|
||||||
raid_bdev_remove_base_bdev(struct spdk_bdev *base_bdev)
|
raid_bdev_remove_base_bdev(struct spdk_bdev *base_bdev)
|
||||||
{
|
{
|
||||||
struct raid_bdev *raid_bdev;
|
struct raid_bdev *raid_bdev;
|
||||||
|
@ -215,6 +215,7 @@ const char *raid_bdev_level_to_str(enum raid_level level);
|
|||||||
enum raid_bdev_state raid_bdev_str_to_state(const char *str);
|
enum raid_bdev_state raid_bdev_str_to_state(const char *str);
|
||||||
const char *raid_bdev_state_to_str(enum raid_bdev_state state);
|
const char *raid_bdev_state_to_str(enum raid_bdev_state state);
|
||||||
void raid_bdev_write_info_json(struct raid_bdev *raid_bdev, struct spdk_json_write_ctx *w);
|
void raid_bdev_write_info_json(struct raid_bdev *raid_bdev, struct spdk_json_write_ctx *w);
|
||||||
|
int raid_bdev_remove_base_bdev(struct spdk_bdev *base_bdev);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* RAID module descriptor
|
* RAID module descriptor
|
||||||
|
@ -385,3 +385,56 @@ cleanup:
|
|||||||
free(ctx);
|
free(ctx);
|
||||||
}
|
}
|
||||||
SPDK_RPC_REGISTER("bdev_raid_delete", rpc_bdev_raid_delete, SPDK_RPC_RUNTIME)
|
SPDK_RPC_REGISTER("bdev_raid_delete", rpc_bdev_raid_delete, SPDK_RPC_RUNTIME)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Decoder object for RPC bdev_raid_remove_base_bdev
|
||||||
|
*/
|
||||||
|
static const struct spdk_json_object_decoder rpc_bdev_raid_remove_base_bdev_decoders[] = {
|
||||||
|
{"name", 0, spdk_json_decode_string},
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* brief:
|
||||||
|
* bdev_raid_remove_base_bdev function is the RPC for removing base bdev from a raid bdev.
|
||||||
|
* It takes base bdev name as input.
|
||||||
|
* params:
|
||||||
|
* request - pointer to json rpc request
|
||||||
|
* params - pointer to request parameters
|
||||||
|
* returns:
|
||||||
|
* none
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
rpc_bdev_raid_remove_base_bdev(struct spdk_jsonrpc_request *request,
|
||||||
|
const struct spdk_json_val *params)
|
||||||
|
{
|
||||||
|
struct spdk_bdev *bdev;
|
||||||
|
char *name = NULL;
|
||||||
|
int rc;
|
||||||
|
|
||||||
|
if (spdk_json_decode_object(params, rpc_bdev_raid_remove_base_bdev_decoders,
|
||||||
|
SPDK_COUNTOF(rpc_bdev_raid_remove_base_bdev_decoders),
|
||||||
|
&name)) {
|
||||||
|
spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_PARSE_ERROR,
|
||||||
|
"spdk_json_decode_object failed");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
bdev = spdk_bdev_get_by_name(name);
|
||||||
|
if (bdev == NULL) {
|
||||||
|
spdk_jsonrpc_send_error_response_fmt(request, -ENODEV, "base bdev %s is not found in config", name);
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
|
rc = raid_bdev_remove_base_bdev(bdev);
|
||||||
|
if (rc != 0) {
|
||||||
|
spdk_jsonrpc_send_error_response_fmt(request, rc, "Failed to remove base bdev %s from raid bdev",
|
||||||
|
name);
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
|
spdk_jsonrpc_send_bool_response(request, true);
|
||||||
|
|
||||||
|
cleanup:
|
||||||
|
free(name);
|
||||||
|
}
|
||||||
|
SPDK_RPC_REGISTER("bdev_raid_remove_base_bdev", rpc_bdev_raid_remove_base_bdev, SPDK_RPC_RUNTIME)
|
||||||
|
@ -444,6 +444,19 @@ def bdev_raid_delete(client, name):
|
|||||||
return client.call('bdev_raid_delete', params)
|
return client.call('bdev_raid_delete', params)
|
||||||
|
|
||||||
|
|
||||||
|
def bdev_raid_remove_base_bdev(client, name):
|
||||||
|
"""Remove base bdev from existing raid bdev
|
||||||
|
|
||||||
|
Args:
|
||||||
|
name: base bdev name
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
None
|
||||||
|
"""
|
||||||
|
params = {'name': name}
|
||||||
|
return client.call('bdev_raid_remove_base_bdev', params)
|
||||||
|
|
||||||
|
|
||||||
def bdev_aio_create(client, filename, name, block_size=None, readonly=False):
|
def bdev_aio_create(client, filename, name, block_size=None, readonly=False):
|
||||||
"""Construct a Linux AIO block device.
|
"""Construct a Linux AIO block device.
|
||||||
|
|
||||||
|
@ -2111,6 +2111,13 @@ Format: 'user:u1 secret:s1 muser:mu1 msecret:ms1,user:u2 secret:s2 muser:mu2 mse
|
|||||||
p.add_argument('name', help='raid bdev name')
|
p.add_argument('name', help='raid bdev name')
|
||||||
p.set_defaults(func=bdev_raid_delete)
|
p.set_defaults(func=bdev_raid_delete)
|
||||||
|
|
||||||
|
def bdev_raid_remove_base_bdev(args):
|
||||||
|
rpc.bdev.bdev_raid_remove_base_bdev(args.client,
|
||||||
|
name=args.name)
|
||||||
|
p = subparsers.add_parser('bdev_raid_remove_base_bdev', help='Remove base bdev from existing raid bdev')
|
||||||
|
p.add_argument('name', help='base bdev name')
|
||||||
|
p.set_defaults(func=bdev_raid_remove_base_bdev)
|
||||||
|
|
||||||
# split
|
# split
|
||||||
def bdev_split_create(args):
|
def bdev_split_create(args):
|
||||||
print_array(rpc.bdev.bdev_split_create(args.client,
|
print_array(rpc.bdev.bdev_split_create(args.client,
|
||||||
|
Loading…
Reference in New Issue
Block a user