[lvm-devel] LVM2/tools vgsplit.c

wysochanski at sourceware.org wysochanski at sourceware.org
Fri Feb 29 00:13:48 UTC 2008


CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	wysochanski at sourceware.org	2008-02-29 00:13:48

Modified files:
	tools          : vgsplit.c 

Log message:
	Refactor _move_pv() in vgsplit.
	Should be no functional change.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/vgsplit.c.diff?cvsroot=lvm2&r1=1.50&r2=1.51

--- LVM2/tools/vgsplit.c	2008/01/30 14:00:02	1.50
+++ LVM2/tools/vgsplit.c	2008/02/29 00:13:48	1.51
@@ -15,18 +15,11 @@
 
 #include "tools.h"
 
-static int _move_pv(struct volume_group *vg_from, struct volume_group *vg_to,
-		    char *pv_name)
+static void _move_pv(struct volume_group *vg_from, struct volume_group *vg_to,
+		     struct pv_list *pvl)
 {
-	struct pv_list *pvl;
 	struct physical_volume *pv;
 
-	if (!(pvl = find_pv_in_vg(vg_from, pv_name))) {
-		log_error("Physical volume %s not in volume group %s",
-			  pv_name, vg_from->name);
-		return 0;
-	}
-
 	list_del(&pvl->list);
 	list_add(&vg_to->pvs, &pvl->list);
 
@@ -40,8 +33,6 @@
 
 	vg_from->free_count -= pv_pe_count(pv) - pv_pe_alloc_count(pv);
 	vg_to->free_count += pv_pe_count(pv) - pv_pe_alloc_count(pv);
-
-	return 1;
 }
 
 /* FIXME Why not (lv->vg == vg) ? */
@@ -230,6 +221,7 @@
 	int opt;
 	int active;
 	int existing_vg;
+	struct pv_list *pvl;
 
 	if (argc < 3) {
 		log_error("Existing VG, new VG and physical volumes required.");
@@ -312,8 +304,13 @@
 
 	/* Move PVs across to new structure */
 	for (opt = 0; opt < argc; opt++) {
-		if (!_move_pv(vg_from, vg_to, argv[opt]))
+		if (!(pvl = find_pv_in_vg(vg_from, argv[opt]))) {
+			log_error("Physical volume %s not in volume group %s",
+				  argv[opt], vg_from->name);
 			goto error;
+		}
+
+		_move_pv(vg_from, vg_to, pvl);
 	}
 
 	/* Move required LVs across, checking consistency */




More information about the lvm-devel mailing list