From 115bc65bae2e27f5a615bc015e6ee9043c972d40 Mon Sep 17 00:00:00 2001 From: Dave Wysochanski Date: Wed, 2 Sep 2009 21:27:55 +0000 Subject: Refactor vgmerge - introduce lock_vg_from_first flag. Should be no functional change. Author: Dave Wysochanski --- tools/vgmerge.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'tools/vgmerge.c') diff --git a/tools/vgmerge.c b/tools/vgmerge.c index 37f6bd74..39032fb1 100644 --- a/tools/vgmerge.c +++ b/tools/vgmerge.c @@ -21,6 +21,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; + int lock_vg_from_first = 0; if (!strcmp(vg_name_to, vg_name_from)) { log_error("Duplicate volume group name \"%s\"", vg_name_from); @@ -116,8 +117,13 @@ static int _vgmerge_single(struct cmd_context *cmd, const char *vg_name_to, vg_from->name, vg_to->name); r = ECMD_PROCESSED; bad: - unlock_and_release_vg(cmd, vg_from, vg_name_from); - unlock_and_release_vg(cmd, vg_to, vg_name_to); + if (lock_vg_from_first) { + unlock_and_release_vg(cmd, vg_to, vg_name_to); + unlock_and_release_vg(cmd, vg_from, vg_name_from); + } else { + unlock_and_release_vg(cmd, vg_from, vg_name_from); + unlock_and_release_vg(cmd, vg_to, vg_name_to); + } return r; } -- cgit