[lvm-devel] LVM2 ./WHATS_NEW lib/cache/lvmcache.c

zkabelac at sourceware.org zkabelac at sourceware.org
Wed Dec 1 10:39:29 UTC 2010


CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	zkabelac at sourceware.org	2010-12-01 10:39:29

Modified files:
	.              : WHATS_NEW 
	lib/cache      : lvmcache.c 

Log message:
	Check result of vginfo_from_vgname
	
	Check for some potential internal error.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.1820&r2=1.1821
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/cache/lvmcache.c.diff?cvsroot=lvm2&r1=1.97&r2=1.98

--- LVM2/WHATS_NEW	2010/12/01 10:33:55	1.1820
+++ LVM2/WHATS_NEW	2010/12/01 10:39:28	1.1821
@@ -1,5 +1,6 @@
 Version 2.02.78 - 
 ====================================
+  Add test for existance of orphan vginfo in _lvmcache_update_vgname().
   Do a full rescan if some device is missing in read_pvs_in_vg().
   Avoid misleading warnings in vgextend --restoremissing in certain cases.
   Add error path stack traces for _process_mapper_dir(), _create_and_load_v4().
--- LVM2/lib/cache/lvmcache.c	2010/10/25 13:33:42	1.97
+++ LVM2/lib/cache/lvmcache.c	2010/12/01 10:39:29	1.98
@@ -1083,6 +1083,13 @@
 		       _scanning_in_progress && _vginfo_is_invalid(primary_vginfo))
 			dm_list_iterate_items_safe(info2, info3, &primary_vginfo->infos) {
 				orphan_vginfo = vginfo_from_vgname(primary_vginfo->fmt->orphan_vg_name, NULL);
+				if (!orphan_vginfo) {
+					log_error(INTERNAL_ERROR "Orphan vginfo %s lost from cache.",
+						  primary_vginfo->fmt->orphan_vg_name);
+					dm_free(vginfo->vgname);
+					dm_free(vginfo);
+					return 0;
+				}
 				_drop_vginfo(info2, primary_vginfo);	
 				_vginfo_attach_info(orphan_vginfo, info2);
 				if (info2->mdas.n)




More information about the lvm-devel mailing list