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

jbrassow at sourceware.org jbrassow at sourceware.org
Fri Jul 9 17:57:52 UTC 2010


CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	jbrassow at sourceware.org	2010-07-09 17:57:52

Modified files:
	lib/metadata   : mirror.c 

Log message:
	Failed to test for the case where a log was requested to be removed
	even though there was no log.  A simple run through the in-tree test
	suite would have caught this.  :(
	
	-               if (lv_is_mirrored(detached_log_lv) &&
	+               if (detached_log_lv && lv_is_mirrored(detached_log_lv) &&
	
	Also, made some cosmetic changes suggested by kabi after my last check-in
	(e.g. s/return 0/return_0/ and adding an error message).

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

--- LVM2/lib/metadata/mirror.c	2010/07/09 15:34:45	1.124
+++ LVM2/lib/metadata/mirror.c	2010/07/09 17:57:51	1.125
@@ -879,7 +879,7 @@
 		 * have failed, we must replace with error target - it is
 		 * the only way to release the pending writes.
 		 */
-		if (lv_is_mirrored(detached_log_lv) &&
+		if (detached_log_lv && lv_is_mirrored(detached_log_lv) &&
 		    (detached_log_lv->status & PARTIAL_LV)) {
 			struct lv_segment *seg = first_seg(detached_log_lv);
 
@@ -896,8 +896,10 @@
 				seg_lv(seg, m)->status &= ~MIRROR_IMAGE;
 				lv_set_visible(seg_lv(seg, m));
 				if (!(lvl = dm_pool_alloc(lv->vg->cmd->mem,
-							  sizeof(*lvl))))
+							  sizeof(*lvl)))) {
+					log_error("dm_pool_alloc failed");
 					return 0;
+				}
 				lvl->lv = seg_lv(seg, m);
 				dm_list_add(&tmp_orphan_lvs, &lvl->list);
 			}
@@ -905,7 +907,7 @@
 			if (!replace_lv_with_error_segment(detached_log_lv)) {
 				log_error("Failed error target substitution for %s",
 					  detached_log_lv->name);
-				return_0;
+				return 0;
 			}
 
 			if (!vg_write(detached_log_lv->vg)) {
@@ -926,7 +928,7 @@
 
 			if (!resume_lv(detached_log_lv->vg->cmd,
 				       detached_log_lv))
-					return 0;
+					return_0;
 		}
 	}
 




More information about the lvm-devel mailing list