bdev/split: use bdev_part interface to get split names
The base_bdev and vbdevs arrays are going away in the common bdev layer in a future patch, so prepare for that in the split RPCs to use the bdev_part interface instead to get the names of the split bdevs created from the base_bdev. No change in observed functionality. Signed-off-by: Jim Harris <james.r.harris@intel.com> Change-Id: Ib31807258b253ded3c9bac4f936ed57aa0df7534 Reviewed-on: https://review.gerrithub.io/420931 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Chandler-Test-Pool: SPDK Automated Test System <sys_sgsw@intel.com> Reviewed-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
This commit is contained in:
parent
01035cd49f
commit
43c8d0eb1e
@ -485,4 +485,18 @@ spdk_vbdev_split_destruct(const char *base_bdev_name)
|
||||
return 0;
|
||||
}
|
||||
|
||||
struct spdk_bdev_part_base *
|
||||
spdk_vbdev_split_get_part_base(struct spdk_bdev *bdev)
|
||||
{
|
||||
struct spdk_vbdev_split_config *cfg;
|
||||
|
||||
cfg = vbdev_split_config_find_by_base_name(spdk_bdev_get_name(bdev));
|
||||
|
||||
if (cfg == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return cfg->split_base;
|
||||
}
|
||||
|
||||
SPDK_LOG_REGISTER_COMPONENT("vbdev_split", SPDK_LOG_VBDEV_SPLIT)
|
||||
|
@ -56,4 +56,13 @@ int create_vbdev_split(const char *base_bdev_name, unsigned split_count, uint64_
|
||||
*/
|
||||
int spdk_vbdev_split_destruct(const char *base_bdev_name);
|
||||
|
||||
/**
|
||||
* Get the spdk_bdev_part_base associated with the given split base_bdev.
|
||||
*
|
||||
* \param base_bdev Bdev to get the part_base from
|
||||
* \return pointer to the associated spdk_bdev_part_base
|
||||
* \return NULL if the base_bdev is not being split by the split module
|
||||
*/
|
||||
struct spdk_bdev_part_base *spdk_vbdev_split_get_part_base(struct spdk_bdev *base_bdev);
|
||||
|
||||
#endif // SPDK_VBDEV_SPLIT_H
|
||||
|
@ -57,7 +57,6 @@ spdk_rpc_construct_split_vbdev(struct spdk_jsonrpc_request *request,
|
||||
struct rpc_construct_split req = {};
|
||||
struct spdk_json_write_ctx *w;
|
||||
struct spdk_bdev *base_bdev;
|
||||
size_t i;
|
||||
int rc;
|
||||
|
||||
if (spdk_json_decode_object(params, rpc_construct_split_decoders,
|
||||
@ -85,8 +84,19 @@ spdk_rpc_construct_split_vbdev(struct spdk_jsonrpc_request *request,
|
||||
|
||||
base_bdev = spdk_bdev_get_by_name(req.base_bdev);
|
||||
if (base_bdev != NULL) {
|
||||
for (i = 0; i < base_bdev->vbdevs_cnt; i++) {
|
||||
spdk_json_write_string(w, spdk_bdev_get_name(base_bdev->vbdevs[i]));
|
||||
struct spdk_bdev_part_base *split_base;
|
||||
struct bdev_part_tailq *split_base_tailq;
|
||||
struct spdk_bdev_part *split_part;
|
||||
struct spdk_bdev *split_bdev;
|
||||
|
||||
split_base = spdk_vbdev_split_get_part_base(base_bdev);
|
||||
|
||||
assert(split_base != NULL);
|
||||
|
||||
split_base_tailq = spdk_bdev_part_base_get_tailq(split_base);
|
||||
TAILQ_FOREACH(split_part, split_base_tailq, tailq) {
|
||||
split_bdev = spdk_bdev_part_get_bdev(split_part);
|
||||
spdk_json_write_string(w, spdk_bdev_get_name(split_bdev));
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user