[lvm-devel] [PATCH 10/13] Refactor vgmerge - introduce lock_vg_from_first flag.

Dave Wysochanski dwysocha at redhat.com
Thu Aug 13 21:57:27 UTC 2009


Should be no functional change.

Signed-off-by: Dave Wysochanski <dwysocha at redhat.com>
---
 tools/vgmerge.c |   10 ++++++++--
 1 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/tools/vgmerge.c b/tools/vgmerge.c
index 37f6bd7..39032fb 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;
 }
 
-- 
1.6.0.6




More information about the lvm-devel mailing list