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

zkabelac at sourceware.org zkabelac at sourceware.org
Tue Oct 11 09:09:02 UTC 2011


CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	zkabelac at sourceware.org	2011-10-11 09:09:01

Modified files:
	.              : WHATS_NEW 
	lib/cache      : lvmcache.c 
	lib/commands   : toolcontext.c 
	lib/metadata   : metadata.c 

Log message:
	Check for refresh_filter failure
	
	Properly detect if the filters were refreshed properly.
	
	(May needs few more fixes ??)
	
	Filter refresh may fail because it may be out of free file descriptors
	when clvmd gets overloaded.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.2155&r2=1.2156
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/cache/lvmcache.c.diff?cvsroot=lvm2&r1=1.118&r2=1.119
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/commands/toolcontext.c.diff?cvsroot=lvm2&r1=1.137&r2=1.138
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/metadata.c.diff?cvsroot=lvm2&r1=1.468&r2=1.469

--- LVM2/WHATS_NEW	2011/10/11 09:05:20	1.2155
+++ LVM2/WHATS_NEW	2011/10/11 09:09:00	1.2156
@@ -1,5 +1,6 @@
 Version 2.02.89 - 
 ==================================
+  Add check for access through NULL pointer when refresh_filter() fails.
   Use pthread condition for SINGLENODE lock implementation.
   Improve backtrace reporting for some dev_manager_ functions.
   Change message severity to log_warn when symlink creation fails.
--- LVM2/lib/cache/lvmcache.c	2011/09/01 10:25:22	1.118
+++ LVM2/lib/cache/lvmcache.c	2011/10/11 09:09:00	1.119
@@ -597,12 +597,10 @@
 		goto out;
 	}
 
-	if (full_scan == 2 && !cmd->filter->use_count && !refresh_filters(cmd)) {
-		log_error("refresh filters failed");
-		goto out;
-	}
+	if (full_scan == 2 && (cmd->filter && !cmd->filter->use_count) && !refresh_filters(cmd))
+		goto_out;
 
-	if (!(iter = dev_iter_create(cmd->filter, (full_scan == 2) ? 1 : 0))) {
+	if (!cmd->filter || !(iter = dev_iter_create(cmd->filter, (full_scan == 2) ? 1 : 0))) {
 		log_error("dev_iter creation failed");
 		goto out;
 	}
--- LVM2/lib/commands/toolcontext.c	2011/09/22 17:39:57	1.137
+++ LVM2/lib/commands/toolcontext.c	2011/10/11 09:09:00	1.138
@@ -786,7 +786,7 @@
 	cmd->dump_filter = 0;
 
 	if (!(f3 = _init_filter_components(cmd)))
-		return 0;
+		return_0;
 
 	init_ignore_suspended_devices(find_config_tree_int(cmd,
 	    "devices/ignore_suspended_devices", DEFAULT_IGNORE_SUSPENDED_DEVICES));
@@ -1402,7 +1402,8 @@
 		cmd->filter = NULL;
 	}
 
-	r = _init_filters(cmd, 0);
+	if (!(r = _init_filters(cmd, 0)))
+                stack;
 
 	/*
 	 * During repair code must not reset suspended flag.
--- LVM2/lib/metadata/metadata.c	2011/09/27 17:09:43	1.468
+++ LVM2/lib/metadata/metadata.c	2011/10/11 09:09:00	1.469
@@ -1373,7 +1373,9 @@
 	/* Is there an md superblock here? */
 	/* FIXME: still possible issues here - rescan cache? */
 	if (!dev && md_filtering()) {
-		refresh_filters(cmd);
+		if (!refresh_filters(cmd))
+			goto_bad;
+
 		init_md_filtering(0);
 		dev = dev_cache_get(name, cmd->filter);
 		init_md_filtering(1);




More information about the lvm-devel mailing list