]> sourceware.org Git - lvm2.git/commitdiff
Fix vgsplit - print different message on successful split of existing / new vg
authorDave Wysochanski <dwysocha@redhat.com>
Tue, 22 Jan 2008 03:25:45 +0000 (03:25 +0000)
committerDave Wysochanski <dwysocha@redhat.com>
Tue, 22 Jan 2008 03:25:45 +0000 (03:25 +0000)
Fix vgsplit - fix a couple error paths that forgot to call unlock_vg
Update vgsplit test cases

test/t-vgsplit-operation.sh
tools/vgsplit.c

index dffa262fb7df066c0a7ac1b6c7e070a3de4eeb88..b3d034c6c1bf1134a36d071801b098eec04b9596 100755 (executable)
@@ -39,7 +39,9 @@ test_expect_success \
 test_expect_success \
   'vgsplit accepts new vg as destination of split' \
   '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 $vg2'
 
@@ -47,7 +49,9 @@ test_expect_success \
   'vgsplit accepts existing vg as destination of split' \
   'vgcreate $vg1 $d1 $d2 &&
    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 $vg2'
 
index a30a3f8393046386e3adf482360c025cd9a630d2..f02011d4a0f7cf5a70f85b0a4903f84f57b684cb 100644 (file)
@@ -229,6 +229,7 @@ int vgsplit(struct cmd_context *cmd, int argc, char **argv)
        struct volume_group *vg_to, *vg_from;
        int opt;
        int active;
+       int existing_vg;
 
        if (argc < 3) {
                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,
                                      LCK_VG_WRITE | LCK_NONBLOCK,
                                      0, 0))) {
+               existing_vg = 1;
                if (new_vg_option_specified(cmd)) {
                        log_error("Volume group \"%s\" exists, but new VG "
                                    "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))
                        goto error;
        } else {
+               existing_vg = 0;
 
                /* Set metadata format of original VG */
                /* 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.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;
+               }
 
-               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;
+               }
 
                if (!(vg_to = vg_create(cmd, vg_name_to, vp_new.extent_size,
                                        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_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);
        return ECMD_PROCESSED;
 
This page took 0.035999 seconds and 5 git commands to generate.