diff options
author | Milan Broz <mbroz@redhat.com> | 2009-04-10 10:01:38 +0000 |
---|---|---|
committer | Milan Broz <mbroz@redhat.com> | 2009-04-10 10:01:38 +0000 |
commit | 043b13625b7eed0a52a80d46b7b6eda48cfdf82e (patch) | |
tree | 6aaf950aefb97feeb65447ff6f3f4e2ad2597f64 /tools/vgmerge.c | |
parent | 405366fd48f8a39b7c1759eedd1dad0cbe05346f (diff) | |
download | lvm2-043b13625b7eed0a52a80d46b7b6eda48cfdf82e.tar.gz lvm2-043b13625b7eed0a52a80d46b7b6eda48cfdf82e.tar.xz lvm2-043b13625b7eed0a52a80d46b7b6eda48cfdf82e.zip |
Properly release VG memory pool in all CLI tools.
Diffstat (limited to 'tools/vgmerge.c')
-rw-r--r-- | tools/vgmerge.c | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/tools/vgmerge.c b/tools/vgmerge.c index c48fe0b6..c847c7ef 100644 --- a/tools/vgmerge.c +++ b/tools/vgmerge.c @@ -20,6 +20,7 @@ static int _vgmerge_single(struct cmd_context *cmd, const char *vg_name_to, { struct volume_group *vg_to, *vg_from; struct lv_list *lvl1, *lvl2; + int r = ECMD_FAILED; if (!strcmp(vg_name_to, vg_name_from)) { log_error("Duplicate volume group name \"%s\"", vg_name_from); @@ -37,7 +38,7 @@ static int _vgmerge_single(struct cmd_context *cmd, const char *vg_name_to, LCK_VG_WRITE | LCK_NONBLOCK, CLUSTERED | EXPORTED_VG | LVM_WRITE, CORRECT_INCONSISTENT | FAIL_INCONSISTENT))) { - unlock_vg(cmd, vg_name_to); + unlock_release_vg(cmd, vg_to, vg_name_to); return ECMD_FAILED; } @@ -114,18 +115,13 @@ static int _vgmerge_single(struct cmd_context *cmd, const char *vg_name_to, /* FIXME Remove /dev/vgfrom */ backup(vg_to); - - unlock_vg(cmd, vg_name_from); - unlock_vg(cmd, vg_name_to); - log_print("Volume group \"%s\" successfully merged into \"%s\"", vg_from->name, vg_to->name); - return ECMD_PROCESSED; - - bad: - unlock_vg(cmd, vg_name_from); - unlock_vg(cmd, vg_name_to); - return ECMD_FAILED; + r = ECMD_PROCESSED; +bad: + unlock_release_vg(cmd, vg_from, vg_name_from); + unlock_release_vg(cmd, vg_to, vg_name_to); + return r; } int vgmerge(struct cmd_context *cmd, int argc, char **argv) |