mirror of
git://sourceware.org/git/lvm2.git
synced 2025-01-03 05:18:29 +03:00
Fix vgsplit - print different message on successful split of existing / new vg
Fix vgsplit - fix a couple error paths that forgot to call unlock_vg Update vgsplit test cases
This commit is contained in:
parent
1ce224d13f
commit
c1f2ce3938
@ -39,7 +39,9 @@ test_expect_success \
|
|||||||
test_expect_success \
|
test_expect_success \
|
||||||
'vgsplit accepts new vg as destination of split' \
|
'vgsplit accepts new vg as destination of split' \
|
||||||
'vgcreate $vg1 $d1 $d2 &&
|
'vgcreate $vg1 $d1 $d2 &&
|
||||||
vgsplit $vg1 $vg2 $d1 &&
|
vgsplit $vg1 $vg2 $d1 1>err;
|
||||||
|
status=$?; echo status=$?; test $status = 0 &&
|
||||||
|
grep "New volume group \"$vg2\" successfully split from \"$vg1\"" err &&
|
||||||
vgremove $vg1 &&
|
vgremove $vg1 &&
|
||||||
vgremove $vg2'
|
vgremove $vg2'
|
||||||
|
|
||||||
@ -47,7 +49,9 @@ test_expect_success \
|
|||||||
'vgsplit accepts existing vg as destination of split' \
|
'vgsplit accepts existing vg as destination of split' \
|
||||||
'vgcreate $vg1 $d1 $d2 &&
|
'vgcreate $vg1 $d1 $d2 &&
|
||||||
vgcreate $vg2 $d3 $d4 &&
|
vgcreate $vg2 $d3 $d4 &&
|
||||||
vgsplit $vg1 $vg2 $d1 &&
|
vgsplit $vg1 $vg2 $d1 1>err;
|
||||||
|
status=$?; echo status=$?; test $status = 0 &&
|
||||||
|
grep "Existing volume group \"$vg2\" successfully split from \"$vg1\"" err &&
|
||||||
vgremove $vg1 &&
|
vgremove $vg1 &&
|
||||||
vgremove $vg2'
|
vgremove $vg2'
|
||||||
|
|
||||||
|
@ -229,6 +229,7 @@ int vgsplit(struct cmd_context *cmd, int argc, char **argv)
|
|||||||
struct volume_group *vg_to, *vg_from;
|
struct volume_group *vg_to, *vg_from;
|
||||||
int opt;
|
int opt;
|
||||||
int active;
|
int active;
|
||||||
|
int existing_vg;
|
||||||
|
|
||||||
if (argc < 3) {
|
if (argc < 3) {
|
||||||
log_error("Existing VG, new VG and physical volumes required.");
|
log_error("Existing VG, new VG and physical volumes required.");
|
||||||
@ -264,6 +265,7 @@ int vgsplit(struct cmd_context *cmd, int argc, char **argv)
|
|||||||
if ((vg_to = vg_lock_and_read(cmd, vg_name_to, NULL,
|
if ((vg_to = vg_lock_and_read(cmd, vg_name_to, NULL,
|
||||||
LCK_VG_WRITE | LCK_NONBLOCK,
|
LCK_VG_WRITE | LCK_NONBLOCK,
|
||||||
0, 0))) {
|
0, 0))) {
|
||||||
|
existing_vg = 1;
|
||||||
if (new_vg_option_specified(cmd)) {
|
if (new_vg_option_specified(cmd)) {
|
||||||
log_error("Volume group \"%s\" exists, but new VG "
|
log_error("Volume group \"%s\" exists, but new VG "
|
||||||
"option specified", vg_name_to);
|
"option specified", vg_name_to);
|
||||||
@ -272,6 +274,7 @@ int vgsplit(struct cmd_context *cmd, int argc, char **argv)
|
|||||||
if (!vgs_are_compatible(cmd, vg_from,vg_to))
|
if (!vgs_are_compatible(cmd, vg_from,vg_to))
|
||||||
goto error;
|
goto error;
|
||||||
} else {
|
} else {
|
||||||
|
existing_vg = 0;
|
||||||
|
|
||||||
/* Set metadata format of original VG */
|
/* Set metadata format of original VG */
|
||||||
/* FIXME: need some common logic */
|
/* FIXME: need some common logic */
|
||||||
@ -284,11 +287,15 @@ int vgsplit(struct cmd_context *cmd, int argc, char **argv)
|
|||||||
vp_def.alloc = vg_from->alloc;
|
vp_def.alloc = vg_from->alloc;
|
||||||
vp_def.clustered = 0;
|
vp_def.clustered = 0;
|
||||||
|
|
||||||
if (fill_vg_create_params(cmd, vg_name_to, &vp_new, &vp_def))
|
if (fill_vg_create_params(cmd, vg_name_to, &vp_new, &vp_def)) {
|
||||||
|
unlock_vg(cmd, vg_name_from);
|
||||||
return EINVALID_CMD_LINE;
|
return EINVALID_CMD_LINE;
|
||||||
|
}
|
||||||
|
|
||||||
if (validate_vg_create_params(cmd, &vp_new))
|
if (validate_vg_create_params(cmd, &vp_new)) {
|
||||||
|
unlock_vg(cmd, vg_name_from);
|
||||||
return EINVALID_CMD_LINE;
|
return EINVALID_CMD_LINE;
|
||||||
|
}
|
||||||
|
|
||||||
if (!(vg_to = vg_create(cmd, vg_name_to, vp_new.extent_size,
|
if (!(vg_to = vg_create(cmd, vg_name_to, vp_new.extent_size,
|
||||||
vp_new.max_pv, vp_new.max_lv,
|
vp_new.max_pv, vp_new.max_lv,
|
||||||
@ -371,7 +378,8 @@ int vgsplit(struct cmd_context *cmd, int argc, char **argv)
|
|||||||
unlock_vg(cmd, vg_name_from);
|
unlock_vg(cmd, vg_name_from);
|
||||||
unlock_vg(cmd, vg_name_to);
|
unlock_vg(cmd, vg_name_to);
|
||||||
|
|
||||||
log_print("Volume group \"%s\" successfully split from \"%s\"",
|
log_print("%s volume group \"%s\" successfully split from \"%s\"",
|
||||||
|
existing_vg ? "Existing" : "New",
|
||||||
vg_to->name, vg_from->name);
|
vg_to->name, vg_from->name);
|
||||||
return ECMD_PROCESSED;
|
return ECMD_PROCESSED;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user