[lvm-devel] LVM2/tools lvconvert.c

jbrassow at sourceware.org jbrassow at sourceware.org
Tue Jul 13 21:53:08 UTC 2010


CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	jbrassow at sourceware.org	2010-07-13 21:53:08

Modified files:
	tools          : lvconvert.c 

Log message:
	Fix for bug 612311: Split of linear provides no error msg
	
	An unhandled condition allowed the command to terminate
	cleanly without a warning.  Added a check for the
	'--splitmirrors' argument to allow execution to the lower
	level function that has the check to see if the user is
	trying to split a linear device.  You should now see a
	message if you try to use --splitmirrors on a linear device.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/lvconvert.c.diff?cvsroot=lvm2&r1=1.138&r2=1.139

--- LVM2/tools/lvconvert.c	2010/07/09 15:34:48	1.138
+++ LVM2/tools/lvconvert.c	2010/07/13 21:53:07	1.139
@@ -861,7 +861,8 @@
 	else if (lp->mirrors_sign == SIGN_PLUS)
 		lp->mirrors = *old_mimage_count + lp->mirrors;
 	else if (lp->mirrors_sign == SIGN_MINUS)
-		lp->mirrors = *old_mimage_count - lp->mirrors;
+		lp->mirrors = (*old_mimage_count > lp->mirrors) ?
+			*old_mimage_count - lp->mirrors: 0;
 	else
 		lp->mirrors += 1;
 
@@ -876,8 +877,8 @@
 
 	/* Did the user try to subtract more legs than available? */
 	if (lp->mirrors < 1) {
-		log_error("Logical volume %s only has %" PRIu32 " mirrors.",
-			  lv->name, *old_mimage_count);
+		log_error("Unable to reduce images by specified amount - only %d in %s",
+			  *old_mimage_count, lv->name);
 		return 0;
 	}
 
@@ -1561,7 +1562,9 @@
 			stack;
 			return ECMD_FAILED;
 		}
-	} else if (arg_count(cmd, mirrors_ARG) || (lv->status & MIRRORED)) {
+	} else if (arg_count(cmd, mirrors_ARG) ||
+		   arg_count(cmd, splitmirrors_ARG) ||
+		   (lv->status & MIRRORED)) {
 		if (!archive(lv->vg)) {
 			stack;
 			return ECMD_FAILED;




More information about the lvm-devel mailing list