Allow vgname/lvname name specification in lvconvert --splitmirrors
PATCH 1/1 Allow vgname/lvname name specification in lvconvert --splitmirrors
Before:
devel/~ # lvconvert --splitmirrors 1 -n vg/splitted_one vg/mirrored_one
Internal error: LV name vg/splitted_one has invalid form. Intermediate VG metadata write failed.
After:
devel/~ # lvconvert --splitmirrors 1 -n vg/splitted_one vg/mirrored_one
Logical volume mirrored_one converted.
devel/~ # lvconvert --splitmirrors 1 -n blabla/splitted_one vg/mirrored_one
Please use a single volume group name ("vg" or "blabla")
Run `lvconvert --help' for more information.
...should make rhbz #796602 happy (lvcreate/lvrename already accepts vgname/lvname for a new volume name).
Peter
--- tools/lvconvert.c | 16 +++++++++++++--- 1 files changed, 13 insertions(+), 3 deletions(-)
tools/lvconvert.c +13 -3
@@ -173,9 +173,19 @@ static int _read_params(struct lvconvert_params *lp, struct cmd_context *cmd, } lp->lv_split_name =arg_value (cmd, name_ARG); -if (lp->lv_split_name && - !apply_lvname_restrictions (lp->lv_split_name)) - return_0; +if (lp->lv_split_name) { +if (strchr (lp->lv_split_name,'/' )) { +if (!(lp->vg_name =extract_vgname (cmd, lp->lv_split_name))) + return_0; + +/* Strip VG from lv_split_name */ +if ((tmp_str =strrchr (lp->lv_split_name,'/' ))) + lp->lv_split_name = tmp_str +1 ; + } + +if (!apply_lvname_restrictions (lp->lv_split_name)) + return_0; + } lp->keep_mimages =1 ; lp->mirrors =arg_uint_value (cmd, splitmirrors_ARG,0 );