[lvm-devel] LVM2/lib/metadata metadata.c

wysochanski at sourceware.org wysochanski at sourceware.org
Tue Apr 6 14:03:44 UTC 2010


CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	wysochanski at sourceware.org	2010-04-06 14:03:44

Modified files:
	lib/metadata   : metadata.c 

Log message:
	Add pv to vg->pvs after check for maximum value of vg->extent_count.
	
	In add_pv_to_vg(), we should only add the pv to vg->pvs after all
	internal checks have passed.  The check for vg->extent_count exeeding
	maximum was after we added the pv to the list, so this function could
	return a state of vg->pvs that did not reflect other parameters such
	as vg->pv_count.
	
	Signed-off-by: Dave Wysochanski <dwysocha at redhat.com>

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/metadata.c.diff?cvsroot=lvm2&r1=1.329&r2=1.330

--- LVM2/lib/metadata/metadata.c	2010/04/01 13:08:06	1.329
+++ LVM2/lib/metadata/metadata.c	2010/04/06 14:03:43	1.330
@@ -220,9 +220,6 @@
 	if (!alloc_pv_segment_whole_pv(mem, pv))
 		return_0;
 
-	pvl->pv = pv;
-	dm_list_add(&vg->pvs, &pvl->list);
-
 	if ((uint64_t) vg->extent_count + pv->pe_count > UINT32_MAX) {
 		log_error("Unable to add %s to %s: new extent count (%"
 			  PRIu64 ") exceeds limit (%" PRIu32 ").",
@@ -232,6 +229,9 @@
 		return 0;
 	}
 
+	pvl->pv = pv;
+	dm_list_add(&vg->pvs, &pvl->list);
+
 	vg->pv_count++;
 	vg->extent_count += pv->pe_count;
 	vg->free_count += pv->pe_count;




More information about the lvm-devel mailing list