[lvm-devel] LVM2 ./WHATS_NEW lib/locking/locking.c tools/p ...

mbroz at sourceware.org mbroz at sourceware.org
Mon Mar 26 20:33:41 UTC 2012


CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	mbroz at sourceware.org	2012-03-26 20:33:40

Modified files:
	.              : WHATS_NEW 
	lib/locking    : locking.c 
	tools          : pvmove.c 

Log message:
	Keep exclusive activation in pvmove if LV is already active.
	
	Pvmove should never try to downgrade exclusive lock
	for LVs.
	
	This allows pvmove to work again for exclusive activated LVs.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.2369&r2=1.2370
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/locking/locking.c.diff?cvsroot=lvm2&r1=1.103&r2=1.104
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/pvmove.c.diff?cvsroot=lvm2&r1=1.96&r2=1.97

--- LVM2/WHATS_NEW	2012/03/26 20:32:58	1.2369
+++ LVM2/WHATS_NEW	2012/03/26 20:33:40	1.2370
@@ -1,5 +1,6 @@
 Version 2.02.96 - 
 ================================
+  Keep exclusive activation in pvmove if LV is already active.
   Disallow pvmove for exclusive LV if some affected LVs are not exclusively activated.
   Remove unused and wrongly set cluster VG flag from clvmd lock query command.
   Fix pvmove for exclusively activated LV pvmove in clustered VG. (2.02.86)
--- LVM2/lib/locking/locking.c	2012/02/08 11:05:04	1.103
+++ LVM2/lib/locking/locking.c	2012/03/26 20:33:40	1.104
@@ -574,7 +574,7 @@
 	struct lv_list *lvl;
 
 	dm_list_iterate_items(lvl, lvs) {
-		if (!exclusive) {
+		if (!exclusive && !lv_is_active_exclusive(lvl->lv)) {
 			if (!activate_lv(cmd, lvl->lv)) {
 				log_error("Failed to activate %s", lvl->lv->name);
 				return 0;
--- LVM2/tools/pvmove.c	2012/03/26 20:32:58	1.96
+++ LVM2/tools/pvmove.c	2012/03/26 20:33:40	1.97
@@ -296,7 +296,7 @@
 {
 	int r = 0;
 
-	if (exclusive)
+	if (exclusive || lv_is_active_exclusive(lv_mirr))
 		r = activate_lv_excl(cmd, lv_mirr);
 	else
 		r = activate_lv(cmd, lv_mirr);




More information about the lvm-devel mailing list