public inbox for lvm2-cvs@sourceware.org
help / color / mirror / Atom feed
* LVM2/test t-mirror-vgreduce-removemissing.sh
@ 2011-03-03 15:46 zkabelac
  0 siblings, 0 replies; 6+ messages in thread
From: zkabelac @ 2011-03-03 15:46 UTC (permalink / raw)
  To: lvm-devel, lvm2-cvs

CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	zkabelac@sourceware.org	2011-03-03 15:46:05

Modified files:
	test           : t-mirror-vgreduce-removemissing.sh 

Log message:
	Avoid using pipes on lv commands
	
	Failure on pipe kills lv command and produces memory stacktrace.
	Add 'true' for empty grep/sed to avoid generating stacktrace.
	
	This should help with long time (7min) for this test on Lenny testing maching
	(mimage was filler with stacktrace and each word was used as LV name).

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/t-mirror-vgreduce-removemissing.sh.diff?cvsroot=lvm2&r1=1.10&r2=1.11

--- LVM2/test/t-mirror-vgreduce-removemissing.sh	2011/01/05 00:16:20	1.10
+++ LVM2/test/t-mirror-vgreduce-removemissing.sh	2011/03/03 15:46:05	1.11
@@ -24,8 +24,8 @@
 	echo $pvs | sed 's/ /\n/g' | sort | uniq > out1
 
 	lvs -a -o+devices $lv
-	lvs -a -odevices --noheadings $lv | \
-	sed 's/([^)]*)//g; s/[ ,]/\n/g' | sort | uniq > out2
+	lvs -a -odevices --noheadings $lv > lvs_log
+	sed 's/([^)]*)//g; s/[ ,]/\n/g' lvs_log | sort | uniq > out2 || true
 
 	diff --ignore-blank-lines out1 out2
 }
@@ -41,14 +41,15 @@
 	echo "Check if mirror images of $lv are on PVs $pvs"
 	rm -f out1 out2
 	echo $pvs | sed 's/ /\n/g' | sort | uniq > out1
-
-	mimages=$(lvs --noheadings -a -o lv_name $vg | grep "${lv}_mimage_" | \
-		sed 's/\[//g; s/\]//g')
+	lvs --noheadings -a -o lv_name $vg > lvs_log
+	mimages=$(grep "${lv}_mimage_" lvs_log | \
+		sed 's/\[//g; s/\]//g' || true)
+	
 	for i in $mimages; do
 		echo "Checking $vg/$i"
 		lvs -a -o+devices $vg/$i
-		lvs -a -odevices --noheadings $vg/$i | \
-			sed 's/([^)]*)//g; s/ //g; s/,/ /g' | sort | uniq >> out2
+		lvs -a -odevices --noheadings $vg/$i > lvs_log
+		sed 's/([^)]*)//g; s/ //g; s/,/ /g' lvs_log | sort | uniq >> out2 || true
 	done
 
 	diff --ignore-blank-lines out1 out2


^ permalink raw reply	[flat|nested] 6+ messages in thread

* LVM2/test t-mirror-vgreduce-removemissing.sh
@ 2010-03-31  3:56 jbrassow
  0 siblings, 0 replies; 6+ messages in thread
From: jbrassow @ 2010-03-31  3:56 UTC (permalink / raw)
  To: lvm-devel, lvm2-cvs

CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	jbrassow@sourceware.org	2010-03-31 03:56:25

Modified files:
	test           : t-mirror-vgreduce-removemissing.sh 

Log message:
	We only need one extent for the mirror log.  So, when specifying
	the devices on which to place the individual mirror parts, we can
	specify the log devices as $dev:x instead of $dev:x-y.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/t-mirror-vgreduce-removemissing.sh.diff?cvsroot=lvm2&r1=1.7&r2=1.8

--- LVM2/test/t-mirror-vgreduce-removemissing.sh	2010/03/25 12:16:17	1.7
+++ LVM2/test/t-mirror-vgreduce-removemissing.sh	2010/03/31 03:56:25	1.8
@@ -151,7 +151,7 @@
 {
 	local index=$1
 
-	lvcreate -l2 -m2 -n $lv1 $vg $dev1 $dev2 $dev3 $dev4:0-1
+	lvcreate -l2 -m2 -n $lv1 $vg $dev1 $dev2 $dev3 $dev4:0
 	lvchange -an $vg/$lv1
 	aux mimages_are_on_ $lv1 $dev1 $dev2 $dev3
 	mirrorlog_is_on_ $lv1 $dev4
@@ -178,7 +178,7 @@
 {
 	local index=$1
 
-	lvcreate -l2 -m2 -n $lv1 $vg $dev1 $dev2 $dev3 $dev4:0-1
+	lvcreate -l2 -m2 -n $lv1 $vg $dev1 $dev2 $dev3 $dev4:0
 	lvchange -an $vg/$lv1
 	mimages_are_on_ $lv1 $dev1 $dev2 $dev3
 	mirrorlog_is_on_ $lv1 $dev4
@@ -206,7 +206,7 @@
 {
 	local index=$1
 
-	lvcreate -l2 -m2 -n $lv1 $vg $dev1 $dev2 $dev3 $dev5:0-1 
+	lvcreate -l2 -m2 -n $lv1 $vg $dev1 $dev2 $dev3 $dev5:0
 	lvchange -an $vg/$lv1 
 	lvconvert -m+1 $vg/$lv1 $dev4 
 	mimages_are_on_ $lv1 $dev1 $dev2 $dev3 $dev4 
@@ -234,7 +234,7 @@
 {
 	local index=$1
 
-	lvcreate -l2 -m2 -n $lv1 $vg $dev1 $dev2 $dev3 $dev5:0-1 
+	lvcreate -l2 -m2 -n $lv1 $vg $dev1 $dev2 $dev3 $dev5:0
 	lvchange -an $vg/$lv1 
 	lvconvert -m+1 $vg/$lv1 $dev4 
 	mimages_are_on_ $lv1 $dev1 $dev2 $dev3 $dev4 
@@ -263,7 +263,7 @@
 {
 	local index=$1
 
-	lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev5:0-1 
+	lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev5:0
 	lvchange -an $vg/$lv1 
 	lvconvert -m+2 $vg/$lv1 $dev3 $dev4 
 	mimages_are_on_ $lv1 $dev1 $dev2 $dev3 $dev4 
@@ -291,7 +291,7 @@
 {
 	local index=$1
 
-	lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev5:0-1 
+	lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev5:0
 	lvchange -an $vg/$lv1 
 	lvconvert -m+2 $vg/$lv1 $dev3 $dev4 
 	mimages_are_on_ $lv1 $dev1 $dev2 $dev3 $dev4 
@@ -316,7 +316,7 @@
 
 #COMM "fail mirror log of 2-way mirrored LV" 
 prepare_lvs_ 
-lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev5:0-1 
+lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev5:0
 lvchange -an $vg/$lv1 
 mimages_are_on_ $lv1 $dev1 $dev2 
 mirrorlog_is_on_ $lv1 $dev5 
@@ -328,7 +328,7 @@
 
 #COMM "fail mirror log of 3-way (1 converting) mirrored LV" 
 prepare_lvs_ 
-lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev5:0-1 
+lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev5:0
 lvchange -an $vg/$lv1 
 lvconvert -m+1 $vg/$lv1 $dev3 
 mimages_are_on_ $lv1 $dev1 $dev2 $dev3 
@@ -344,7 +344,7 @@
 
 #COMM "fail all mirror images of 2-way mirrored LV"
 prepare_lvs_ 
-lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev5:0-1 
+lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev5:0
 lvchange -an $vg/$lv1 
 mimages_are_on_ $lv1 $dev1 $dev2 
 mirrorlog_is_on_ $lv1 $dev5 
@@ -355,7 +355,7 @@
 
 #COMM "fail all mirror images of 3-way (1 converting) mirrored LV"
 prepare_lvs_ 
-lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev5:0-1 
+lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev5:0
 lvchange -an $vg/$lv1 
 lvconvert -m+1 $vg/$lv1 $dev3 
 mimages_are_on_ $lv1 $dev1 $dev2 $dev3 
@@ -370,9 +370,9 @@
 
 #COMM "fail a mirror image of one of mirrored LV"
 prepare_lvs_ 
-lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev5:0-1 
+lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev5:0
 lvchange -an $vg/$lv1 
-lvcreate -l2 -m1 -n $lv2 $vg $dev3 $dev4 $dev5:1-1 
+lvcreate -l2 -m1 -n $lv2 $vg $dev3 $dev4 $dev5:1 
 lvchange -an $vg/$lv2 
 mimages_are_on_ $lv1 $dev1 $dev2 
 mimages_are_on_ $lv2 $dev3 $dev4 
@@ -388,9 +388,9 @@
 
 #COMM "fail mirror images, one for each mirrored LV"
 prepare_lvs_ 
-lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev5:0-1 
+lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev5:0
 lvchange -an $vg/$lv1 
-lvcreate -l2 -m1 -n $lv2 $vg $dev3 $dev4 $dev5:1-1 
+lvcreate -l2 -m1 -n $lv2 $vg $dev3 $dev4 $dev5:1 
 lvchange -an $vg/$lv2 
 mimages_are_on_ $lv1 $dev1 $dev2 
 mimages_are_on_ $lv2 $dev3 $dev4 
@@ -410,7 +410,7 @@
 
 #COMM "no failures"
 prepare_lvs_ 
-lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev5:0-1 
+lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev5:0
 lvchange -an $vg/$lv1 
 mimages_are_on_ $lv1 $dev1 $dev2 
 mirrorlog_is_on_ $lv1 $dev5 


^ permalink raw reply	[flat|nested] 6+ messages in thread

* LVM2/test t-mirror-vgreduce-removemissing.sh
@ 2010-03-25 12:16 agk
  0 siblings, 0 replies; 6+ messages in thread
From: agk @ 2010-03-25 12:16 UTC (permalink / raw)
  To: lvm-devel, lvm2-cvs

CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	agk@sourceware.org	2010-03-25 12:16:17

Modified files:
	test           : t-mirror-vgreduce-removemissing.sh 

Log message:
	more diagnostics

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/t-mirror-vgreduce-removemissing.sh.diff?cvsroot=lvm2&r1=1.6&r2=1.7

--- LVM2/test/t-mirror-vgreduce-removemissing.sh	2010/03/25 11:42:17	1.6
+++ LVM2/test/t-mirror-vgreduce-removemissing.sh	2010/03/25 12:16:17	1.7
@@ -25,7 +25,7 @@
 	rm -f out1 out2
 	echo $pvs | sed 's/ /\n/g' | sort | uniq > out1
 
-	lvs -a -odevices --noheadings $lv
+	lvs -a -o+devices $lv
 	lvs -a -odevices --noheadings $lv | \
 	sed 's/([^)]*)//g; s/[ ,]/\n/g' | sort | uniq > out2
 
@@ -48,7 +48,7 @@
 		sed 's/\[//g; s/\]//g')
 	for i in $mimages; do
 		echo "Checking $vg/$i"
-		lvs -a -odevices --noheadings $vg/$i
+		lvs -a -o+devices $vg/$i
 		lvs -a -odevices --noheadings $vg/$i | \
 			sed 's/([^)]*)//g; s/ //g; s/,/ /g' | sort | uniq >> out2
 	done


^ permalink raw reply	[flat|nested] 6+ messages in thread

* LVM2/test t-mirror-vgreduce-removemissing.sh
@ 2010-03-25 11:42 agk
  0 siblings, 0 replies; 6+ messages in thread
From: agk @ 2010-03-25 11:42 UTC (permalink / raw)
  To: lvm-devel, lvm2-cvs

CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	agk@sourceware.org	2010-03-25 11:42:17

Modified files:
	test           : t-mirror-vgreduce-removemissing.sh 

Log message:
	add debug output and attempt to control which device gets log as intended perhaps

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/t-mirror-vgreduce-removemissing.sh.diff?cvsroot=lvm2&r1=1.5&r2=1.6

--- LVM2/test/t-mirror-vgreduce-removemissing.sh	2008/11/10 12:32:00	1.5
+++ LVM2/test/t-mirror-vgreduce-removemissing.sh	2010/03/25 11:42:17	1.6
@@ -25,6 +25,7 @@
 	rm -f out1 out2
 	echo $pvs | sed 's/ /\n/g' | sort | uniq > out1
 
+	lvs -a -odevices --noheadings $lv
 	lvs -a -odevices --noheadings $lv | \
 	sed 's/([^)]*)//g; s/[ ,]/\n/g' | sort | uniq > out2
 
@@ -47,6 +48,7 @@
 		sed 's/\[//g; s/\]//g')
 	for i in $mimages; do
 		echo "Checking $vg/$i"
+		lvs -a -odevices --noheadings $vg/$i
 		lvs -a -odevices --noheadings $vg/$i | \
 			sed 's/([^)]*)//g; s/ //g; s/,/ /g' | sort | uniq >> out2
 	done
@@ -128,7 +130,7 @@
 
 #COMM "basic: fail the 2nd mirror image of 2-way mirrored LV"
 prepare_lvs_
-lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev3:0-1
+lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev3:0
 lvchange -an $vg/$lv1
 aux mimages_are_on_ $lv1 $dev1 $dev2
 mirrorlog_is_on_ $lv1 $dev3


^ permalink raw reply	[flat|nested] 6+ messages in thread

* LVM2/test t-mirror-vgreduce-removemissing.sh
@ 2008-09-19 16:10 mbroz
  0 siblings, 0 replies; 6+ messages in thread
From: mbroz @ 2008-09-19 16:10 UTC (permalink / raw)
  To: lvm-devel, lvm2-cvs

CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	mbroz@sourceware.org	2008-09-19 16:10:46

Modified files:
	test           : t-mirror-vgreduce-removemissing.sh 

Log message:
	Fix vgreduce test,  now requires --force flag. (Jaroslav Stava)

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/t-mirror-vgreduce-removemissing.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2

--- LVM2/test/t-mirror-vgreduce-removemissing.sh	2008/01/17 18:29:36	1.1
+++ LVM2/test/t-mirror-vgreduce-removemissing.sh	2008/09/19 16:10:46	1.2
@@ -218,7 +218,7 @@
    mimages_are_on_ $lv1 $(pv_ 1) $(pv_ 2) &&
    mirrorlog_is_on_ $lv1 $(pv_ 3) &&
    fail_pv_ $(pv_ 2) &&
-   vgreduce --removemissing $vg &&
+   vgreduce --removemissing --force $vg &&
    lv_is_linear_ $lv1 &&
    lv_is_on_ $lv1 $(pv_ 1)'
 test_expect_success "cleanup" \
@@ -238,7 +238,7 @@
    mimages_are_on_ $lv1 $(pv_ 1) $(pv_ 2) $(pv_ 3) &&
    mirrorlog_is_on_ $lv1 $(pv_ 4) &&
    fail_pv_ $(pv_ $index) &&
-   vgreduce --removemissing $vg &&
+   vgreduce --removemissing --force $vg &&
    lvs -a -o+devices $vg &&
    mimages_are_on_ $lv1 $(rest_pvs_ $index 3) &&
    mirrorlog_is_on_ $lv1 $(pv_ 4)
@@ -266,7 +266,7 @@
    mimages_are_on_ $lv1 $(pv_ 1) $(pv_ 2) $(pv_ 3) &&
    mirrorlog_is_on_ $lv1 $(pv_ 4) &&
    fail_pv_ $(rest_pvs_ $index 3) &&
-   vgreduce --removemissing $vg &&
+   vgreduce --removemissing --force $vg &&
    lvs -a -o+devices $vg &&
    lv_is_linear_ $lv1 &&
    lv_is_on_ $lv1 $(pv_ $index)
@@ -295,7 +295,7 @@
    mimages_are_on_ $lv1 $(pv_ 1) $(pv_ 2) $(pv_ 3) $(pv_ 4) &&
    mirrorlog_is_on_ $lv1 $(pv_ 5) &&
    fail_pv_ $(pv_ $index) &&
-   vgreduce --removemissing $vg &&
+   vgreduce --removemissing --force $vg &&
    lvs -a -o+devices $vg &&
    mimages_are_on_ $lv1 $(rest_pvs_ $index 4) &&
    mirrorlog_is_on_ $lv1 $(pv_ 5)
@@ -324,7 +324,7 @@
    mimages_are_on_ $lv1 $(pv_ 1) $(pv_ 2) $(pv_ 3) $(pv_ 4) &&
    mirrorlog_is_on_ $lv1 $(pv_ 5) &&
    fail_pv_ $(rest_pvs_ $index 4) &&
-   vgreduce --removemissing $vg &&
+   vgreduce --removemissing --force $vg &&
    lvs -a -o+devices $vg &&
    (mimages_are_on_ $lv1 $(pv_ $index) || lv_is_on_ $lv1 $(pv_ $index)) &&
    ! mirrorlog_is_on_ $lv1 $(pv_ 5)
@@ -353,7 +353,7 @@
    mimages_are_on_ $lv1 $(pv_ 1) $(pv_ 2) $(pv_ 3) $(pv_ 4) &&
    mirrorlog_is_on_ $lv1 $(pv_ 5) &&
    fail_pv_ $(pv_ $index) &&
-   vgreduce --removemissing $vg &&
+   vgreduce --removemissing --force $vg &&
    lvs -a -o+devices $vg &&
    mimages_are_on_ $lv1 $(rest_pvs_ $index 4) &&
    mirrorlog_is_on_ $lv1 $(pv_ 5)
@@ -382,7 +382,7 @@
    mimages_are_on_ $lv1 $(pv_ 1) $(pv_ 2) $(pv_ 3) $(pv_ 4) &&
    mirrorlog_is_on_ $lv1 $(pv_ 5) &&
    fail_pv_ $(rest_pvs_ $index 4) &&
-   vgreduce --removemissing $vg &&
+   vgreduce --removemissing --force $vg &&
    lvs -a -o+devices $vg &&
    (mimages_are_on_ $lv1 $(pv_ $index) || lv_is_on_ $lv1 $(pv_ $index)) &&
    ! mirrorlog_is_on_ $lv1 $(pv_ 5)
@@ -406,7 +406,7 @@
    mimages_are_on_ $lv1 $(pv_ 1) $(pv_ 2) &&
    mirrorlog_is_on_ $lv1 $(pv_ 5) &&
    fail_pv_ $(pv_ 5) &&
-   vgreduce --removemissing $vg &&
+   vgreduce --removemissing --force $vg &&
    mimages_are_on_ $lv1 $(pv_ 1) $(pv_ 2) &&
    ! mirrorlog_is_on_ $lv1 $(pv_ 5)'
 test_expect_success "cleanup" \
@@ -420,7 +420,7 @@
    mimages_are_on_ $lv1 $(pv_ 1) $(pv_ 2) $(pv_ 3) &&
    mirrorlog_is_on_ $lv1 $(pv_ 5) &&
    fail_pv_ $(pv_ 5) &&
-   vgreduce --removemissing $vg &&
+   vgreduce --removemissing --force $vg &&
    mimages_are_on_ $lv1 $(pv_ 1) $(pv_ 2) $(pv_ 3) &&
    ! mirrorlog_is_on_ $lv1 $(pv_ 5)'
 test_expect_success "cleanup" \
@@ -436,7 +436,7 @@
    mimages_are_on_ $lv1 $(pv_ 1) $(pv_ 2) &&
    mirrorlog_is_on_ $lv1 $(pv_ 5) &&
    fail_pv_ $(pv_ 1) $(pv_ 2) &&
-   vgreduce --removemissing $vg &&
+   vgreduce --removemissing --force $vg &&
    ! lvs $vg/$lv1'
 test_expect_success "cleanup" \
   "recover_vg_ $(pv_ 1) $(pv_ 2)"
@@ -449,7 +449,7 @@
    mimages_are_on_ $lv1 $(pv_ 1) $(pv_ 2) $(pv_ 3) &&
    mirrorlog_is_on_ $lv1 $(pv_ 5) &&
    fail_pv_ $(pv_ 1) $(pv_ 2) $(pv_ 3) &&
-   vgreduce --removemissing $vg &&
+   vgreduce --removemissing --force $vg &&
    ! lvs $vg/$lv1'
 test_expect_success "cleanup" \
   "recover_vg_ $(pv_ 1) $(pv_ 2) $(pv_ 3)"
@@ -468,7 +468,7 @@
    mirrorlog_is_on_ $lv1 $(pv_ 5) &&
    mirrorlog_is_on_ $lv2 $(pv_ 5) &&
    fail_pv_ $(pv_ 2) &&
-   vgreduce --removemissing $vg &&
+   vgreduce --removemissing --force $vg &&
    mimages_are_on_ $lv2 $(pv_ 3) $(pv_ 4) &&
    mirrorlog_is_on_ $lv2 $(pv_ 5) &&
    lv_is_linear_ $lv1 &&
@@ -488,7 +488,7 @@
    mirrorlog_is_on_ $lv2 $(pv_ 5) &&
    fail_pv_ $(pv_ 2) &&
    fail_pv_ $(pv_ 4) &&
-   vgreduce --removemissing $vg &&
+   vgreduce --removemissing --force $vg &&
    lv_is_linear_ $lv1 &&
    lv_is_on_ $lv1 $(pv_ 1) &&
    lv_is_linear_ $lv2 &&
@@ -505,7 +505,7 @@
    lvchange -an $vg/$lv1 &&
    mimages_are_on_ $lv1 $(pv_ 1) $(pv_ 2) &&
    mirrorlog_is_on_ $lv1 $(pv_ 5) &&
-   vgreduce --removemissing $vg &&
+   vgreduce --removemissing --force $vg &&
    mimages_are_on_ $lv1 $(pv_ 1) $(pv_ 2) &&
    mirrorlog_is_on_ $lv1 $(pv_ 5)'
 test_expect_success "cleanup" \


^ permalink raw reply	[flat|nested] 6+ messages in thread

* LVM2/test t-mirror-vgreduce-removemissing.sh
@ 2008-01-17 18:29 wysochanski
  0 siblings, 0 replies; 6+ messages in thread
From: wysochanski @ 2008-01-17 18:29 UTC (permalink / raw)
  To: lvm-devel, lvm2-cvs

CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	wysochanski@sourceware.org	2008-01-17 18:29:36

Added files:
	test           : t-mirror-vgreduce-removemissing.sh 

Log message:
	Add a test case for 'vgreduce --removemissing' on stacked mirror

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/t-mirror-vgreduce-removemissing.sh.diff?cvsroot=lvm2&r1=NONE&r2=1.1

/cvs/lvm2/LVM2/test/t-mirror-vgreduce-removemissing.sh,v  -->  standard output
revision 1.1
--- LVM2/test/t-mirror-vgreduce-removemissing.sh
+++ -	2008-01-17 18:29:36.558129000 +0000
@@ -0,0 +1,516 @@
+#!/bin/sh
+# Copyright (C) 2007 Red Hat, Inc. All rights reserved.
+# Copyright (C) 2007 NEC Corporation
+#
+# This copyrighted material is made available to anyone wishing to use,
+# modify, copy, or redistribute it subject to the terms and conditions
+# of the GNU General Public License v.2.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+test_description="ensure that 'vgreduce --removemissing' works on mirrored LV"
+privileges_required_=1
+
+. ./test-lib.sh
+
+dmsetup_has_dm_devdir_support_ ||
+{
+  say "Your version of dmsetup lacks support for changing DM_DEVDIR."
+  say "Skipping this test"
+  exit 0
+}
+
+cleanup_()
+{
+  test -n "$vg" && {
+    lvremove -ff $vg
+    vgremove $vg
+  } > /dev/null
+  test -n "$pvs" && {
+    pvremove $pvs > /dev/null
+    for d in $pvs; do
+      dmsetup remove $(basename $d)
+    done
+  }
+  losetup -d $lodev
+  rm -f $lofile
+}
+
+# ---------------------------------------------------------------------
+# config
+
+nr_pvs=5
+pvsize=$((80 * 1024 * 2))
+
+vg=mirror-vgreduce-removemissing-vg-$$
+lv1=lv1
+lv2=lv2
+lv3=lv3
+
+# ---------------------------------------------------------------------
+# Utilities
+
+pv_()
+{
+  echo "$G_dev_/mapper/pv$1"
+}
+
+fail_pv_()
+{
+  local map
+  local p
+  for p in $*; do
+    map=$(basename $p)
+    echo "Fail $map"
+    [ -e map_$map ] && return
+    dmsetup table "$map" > "map_$map"
+    echo "0 $pvsize error" | dmsetup load "$map"
+    dmsetup resume "$map"
+  done
+}
+
+recover_pv_()
+{
+  local map
+  local p
+
+  for p in $*; do
+    map=$(basename $p)
+    echo "Recover $map"
+    [ ! -e "map_$map" ] && return
+    cat "map_$map" | dmsetup load "$map"
+    dmsetup resume "$map"
+    rm "map_$map"
+  done
+}
+
+lv_is_on_ ()
+{
+  local lv=$vg/$1
+  shift
+  local pvs=$*
+
+  echo "Check if $lv is exactly on PVs $pvs"
+  rm -f out1 out2
+  echo $pvs | sed 's/ /\n/g' | sort | uniq > out1
+
+  lvs -a -odevices --noheadings $lv | \
+    sed 's/([^)]*)//g; s/[ ,]/\n/g' | sort | uniq > out2
+
+  diff --ignore-blank-lines out1 out2
+}
+
+mimages_are_on_ ()
+{
+  local lv=$1
+  shift
+  local pvs=$*
+  local mimages
+  local i
+
+  echo "Check if mirror images of $lv are on PVs $pvs"
+  rm -f out1 out2
+  echo $pvs | sed 's/ /\n/g' | sort | uniq > out1
+
+  mimages=$(lvs --noheadings -a -o lv_name $vg | grep "${lv}_mimage_" | \
+             sed 's/\[//g; s/\]//g')
+  for i in $mimages; do
+    echo "Checking $vg/$i"
+    lvs -a -odevices --noheadings $vg/$i | \
+      sed 's/([^)]*)//g; s/ //g; s/,/ /g' | sort | uniq >> out2
+  done
+
+  diff --ignore-blank-lines out1 out2
+}
+
+mirrorlog_is_on_()
+{
+  local lv="$1"_mlog
+  shift
+  lv_is_on_ $lv $*
+}
+
+lv_is_linear_()
+{
+  echo "Check if $1 is linear LV (i.e. not a mirror)"
+  lvs -o stripes,attr --noheadings $vg/$1 | sed 's/ //g' | grep -q '^1-'
+}
+
+rest_pvs_()
+{
+  local index=$1
+  local num=$2
+  local rem=""
+  local n
+
+  for n in $(seq 1 $(($index - 1))) $(seq $((index + 1)) $num); do
+    rem="$rem $(pv_ $n)"
+  done
+
+  echo "$rem"
+}
+
+# ---------------------------------------------------------------------
+# Initialize PVs and VGs
+
+test_expect_success \
+  'set up temp file and loopback device' \
+  'lofile=$(pwd)/lofile && lodev=$(loop_setup_ "$lofile")'
+
+offset=1
+pvs=
+for n in $(seq 1 $nr_pvs); do
+  test_expect_success \
+      "create pv$n" \
+      'echo "0 $pvsize linear $lodev $offset" > in &&
+       dmsetup create pv$n < in'
+  offset=$(($offset + $pvsize))
+done
+
+for n in $(seq 1 $nr_pvs); do
+  pvs="$pvs $(pv_ $n)"
+done
+
+test_expect_success \
+  "Run this: pvcreate $pvs" \
+  'pvcreate $pvs'
+
+test_expect_success \
+  'set up a VG' \
+  'vgcreate $vg $pvs'
+
+# ---------------------------------------------------------------------
+# Common environment setup/cleanup for each sub testcases
+
+prepare_lvs_()
+{
+  lvremove -ff $vg;
+  :
+}
+
+check_and_cleanup_lvs_()
+{
+  lvs -a -o+devices $vg &&
+  lvremove -ff $vg
+}
+
+recover_vg_()
+{
+  recover_pv_ $* &&
+  pvcreate -ff $* &&
+  vgextend $vg $* &&
+  check_and_cleanup_lvs_
+}
+
+test_expect_success "check environment setup/cleanup" \
+  'prepare_lvs_ &&
+   check_and_cleanup_lvs_'
+
+# ---------------------------------------------------------------------
+# one of mirror images has failed
+
+test_expect_success "basic: fail the 2nd mirror image of 2-way mirrored LV" \
+  'prepare_lvs_ &&
+   lvcreate -l2 -m1 -n $lv1 $vg $(pv_ 1) $(pv_ 2) $(pv_ 3):0-1 &&
+   lvchange -an $vg/$lv1 &&
+   mimages_are_on_ $lv1 $(pv_ 1) $(pv_ 2) &&
+   mirrorlog_is_on_ $lv1 $(pv_ 3) &&
+   fail_pv_ $(pv_ 2) &&
+   vgreduce --removemissing $vg &&
+   lv_is_linear_ $lv1 &&
+   lv_is_on_ $lv1 $(pv_ 1)'
+test_expect_success "cleanup" \
+  'recover_vg_ $(pv_ 2)'
+
+# ---------------------------------------------------------------------
+# LV has 3 images in flat,
+# 1 out of 3 images fails
+
+# test_3way_mirror_fail_1_ <PV# to fail>
+test_3way_mirror_fail_1_()
+{
+   local index=$1
+
+   lvcreate -l2 -m2 -n $lv1 $vg $(pv_ 1) $(pv_ 2) $(pv_ 3) $(pv_ 4):0-1 &&
+   lvchange -an $vg/$lv1 &&
+   mimages_are_on_ $lv1 $(pv_ 1) $(pv_ 2) $(pv_ 3) &&
+   mirrorlog_is_on_ $lv1 $(pv_ 4) &&
+   fail_pv_ $(pv_ $index) &&
+   vgreduce --removemissing $vg &&
+   lvs -a -o+devices $vg &&
+   mimages_are_on_ $lv1 $(rest_pvs_ $index 3) &&
+   mirrorlog_is_on_ $lv1 $(pv_ 4)
+}
+
+for n in $(seq 1 3); do
+  test_expect_success "fail mirror image $(($n - 1)) of 3-way mirrored LV" \
+    "prepare_lvs_ &&
+     test_3way_mirror_fail_1_ $n"
+  test_expect_success "cleanup" \
+    "recover_vg_ $(pv_ $n)"
+done
+
+# ---------------------------------------------------------------------
+# LV has 3 images in flat,
+# 2 out of 3 images fail
+
+# test_3way_mirror_fail_2_ <PV# NOT to fail>
+test_3way_mirror_fail_2_()
+{
+   local index=$1
+
+   lvcreate -l2 -m2 -n $lv1 $vg $(pv_ 1) $(pv_ 2) $(pv_ 3) $(pv_ 4):0-1 &&
+   lvchange -an $vg/$lv1 &&
+   mimages_are_on_ $lv1 $(pv_ 1) $(pv_ 2) $(pv_ 3) &&
+   mirrorlog_is_on_ $lv1 $(pv_ 4) &&
+   fail_pv_ $(rest_pvs_ $index 3) &&
+   vgreduce --removemissing $vg &&
+   lvs -a -o+devices $vg &&
+   lv_is_linear_ $lv1 &&
+   lv_is_on_ $lv1 $(pv_ $index)
+}
+
+for n in $(seq 1 3); do
+  test_expect_success "fail mirror images other than mirror image $(($n - 1)) of 3-way mirrored LV" \
+    "prepare_lvs_ &&
+     test_3way_mirror_fail_2_ $n"
+  test_expect_success "cleanup" \
+    "recover_vg_ $(rest_pvs_ $n 3)"
+done
+
+# ---------------------------------------------------------------------
+# LV has 4 images, 1 of them is in the temporary mirror for syncing.
+# 1 out of 4 images fails
+
+# test_3way_mirror_plus_1_fail_1_ <PV# to fail>
+test_3way_mirror_plus_1_fail_1_()
+{
+   local index=$1
+
+   lvcreate -l2 -m2 -n $lv1 $vg $(pv_ 1) $(pv_ 2) $(pv_ 3) $(pv_ 5):0-1 &&
+   lvchange -an $vg/$lv1 &&
+   lvconvert -m+1 $vg/$lv1 $(pv_ 4) &&
+   mimages_are_on_ $lv1 $(pv_ 1) $(pv_ 2) $(pv_ 3) $(pv_ 4) &&
+   mirrorlog_is_on_ $lv1 $(pv_ 5) &&
+   fail_pv_ $(pv_ $index) &&
+   vgreduce --removemissing $vg &&
+   lvs -a -o+devices $vg &&
+   mimages_are_on_ $lv1 $(rest_pvs_ $index 4) &&
+   mirrorlog_is_on_ $lv1 $(pv_ 5)
+}
+
+for n in $(seq 1 4); do
+  test_expect_success "fail mirror image $(($n - 1)) of 4-way (1 converting) mirrored LV" \
+    "prepare_lvs_ &&
+     test_3way_mirror_plus_1_fail_1_ $n"
+  test_expect_success "cleanup" \
+    "recover_vg_ $(pv_ $n)"
+done
+
+# ---------------------------------------------------------------------
+# LV has 4 images, 1 of them is in the temporary mirror for syncing.
+# 3 out of 4 images fail
+
+# test_3way_mirror_plus_1_fail_3_ <PV# NOT to fail>
+test_3way_mirror_plus_1_fail_3_()
+{
+   local index=$1
+
+   lvcreate -l2 -m2 -n $lv1 $vg $(pv_ 1) $(pv_ 2) $(pv_ 3) $(pv_ 5):0-1 &&
+   lvchange -an $vg/$lv1 &&
+   lvconvert -m+1 $vg/$lv1 $(pv_ 4) &&
+   mimages_are_on_ $lv1 $(pv_ 1) $(pv_ 2) $(pv_ 3) $(pv_ 4) &&
+   mirrorlog_is_on_ $lv1 $(pv_ 5) &&
+   fail_pv_ $(rest_pvs_ $index 4) &&
+   vgreduce --removemissing $vg &&
+   lvs -a -o+devices $vg &&
+   (mimages_are_on_ $lv1 $(pv_ $index) || lv_is_on_ $lv1 $(pv_ $index)) &&
+   ! mirrorlog_is_on_ $lv1 $(pv_ 5)
+}
+
+for n in $(seq 1 4); do
+  test_expect_success "fail mirror images other than mirror image $(($n - 1)) of 4-way (1 converting) mirrored LV" \
+    "prepare_lvs_ &&
+     test_3way_mirror_plus_1_fail_3_ $n"
+  test_expect_success "cleanup" \
+    "recover_vg_ $(rest_pvs_ $n 4)"
+done
+
+# ---------------------------------------------------------------------
+# LV has 4 images, 2 of them are in the temporary mirror for syncing.
+# 1 out of 4 images fail
+
+# test_2way_mirror_plus_2_fail_1_ <PV# to fail>
+test_2way_mirror_plus_2_fail_1_()
+{
+   local index=$1
+
+   lvcreate -l2 -m1 -n $lv1 $vg $(pv_ 1) $(pv_ 2) $(pv_ 5):0-1 &&
+   lvchange -an $vg/$lv1 &&
+   lvconvert -m+2 $vg/$lv1 $(pv_ 3) $(pv_ 4) &&
+   mimages_are_on_ $lv1 $(pv_ 1) $(pv_ 2) $(pv_ 3) $(pv_ 4) &&
+   mirrorlog_is_on_ $lv1 $(pv_ 5) &&
+   fail_pv_ $(pv_ $index) &&
+   vgreduce --removemissing $vg &&
+   lvs -a -o+devices $vg &&
+   mimages_are_on_ $lv1 $(rest_pvs_ $index 4) &&
+   mirrorlog_is_on_ $lv1 $(pv_ 5)
+}
+
+for n in $(seq 1 4); do
+  test_expect_success "fail mirror image $(($n - 1)) of 4-way (2 converting) mirrored LV" \
+    "prepare_lvs_ &&
+     test_2way_mirror_plus_2_fail_1_ $n"
+  test_expect_success "cleanup" \
+    "recover_vg_ $(pv_ $n)"
+done
+
+# ---------------------------------------------------------------------
+# LV has 4 images, 2 of them are in the temporary mirror for syncing.
+# 3 out of 4 images fail
+
+# test_2way_mirror_plus_2_fail_3_ <PV# NOT to fail>
+test_2way_mirror_plus_2_fail_3_()
+{
+   local index=$1
+
+   lvcreate -l2 -m1 -n $lv1 $vg $(pv_ 1) $(pv_ 2) $(pv_ 5):0-1 &&
+   lvchange -an $vg/$lv1 &&
+   lvconvert -m+2 $vg/$lv1 $(pv_ 3) $(pv_ 4) &&
+   mimages_are_on_ $lv1 $(pv_ 1) $(pv_ 2) $(pv_ 3) $(pv_ 4) &&
+   mirrorlog_is_on_ $lv1 $(pv_ 5) &&
+   fail_pv_ $(rest_pvs_ $index 4) &&
+   vgreduce --removemissing $vg &&
+   lvs -a -o+devices $vg &&
+   (mimages_are_on_ $lv1 $(pv_ $index) || lv_is_on_ $lv1 $(pv_ $index)) &&
+   ! mirrorlog_is_on_ $lv1 $(pv_ 5)
+}
+
+for n in $(seq 1 4); do
+  test_expect_success "fail mirror images other than mirror image $(($n - 1)) of 4-way (2 converting) mirrored LV" \
+    "prepare_lvs_ &&
+     test_2way_mirror_plus_2_fail_3_ $n"
+  test_expect_success "cleanup" \
+    "recover_vg_ $(rest_pvs_ $n 4)"
+done
+
+# ---------------------------------------------------------------------
+# log device is gone (flat mirror and stacked mirror)
+
+test_expect_success "fail mirror log of 2-way mirrored LV" \
+  'prepare_lvs_ &&
+   lvcreate -l2 -m1 -n $lv1 $vg $(pv_ 1) $(pv_ 2) $(pv_ 5):0-1 &&
+   lvchange -an $vg/$lv1 &&
+   mimages_are_on_ $lv1 $(pv_ 1) $(pv_ 2) &&
+   mirrorlog_is_on_ $lv1 $(pv_ 5) &&
+   fail_pv_ $(pv_ 5) &&
+   vgreduce --removemissing $vg &&
+   mimages_are_on_ $lv1 $(pv_ 1) $(pv_ 2) &&
+   ! mirrorlog_is_on_ $lv1 $(pv_ 5)'
+test_expect_success "cleanup" \
+  "recover_vg_ $(pv_ 5)"
+
+test_expect_success "fail mirror log of 3-way (1 converting) mirrored LV" \
+  'prepare_lvs_ &&
+   lvcreate -l2 -m1 -n $lv1 $vg $(pv_ 1) $(pv_ 2) $(pv_ 5):0-1 &&
+   lvchange -an $vg/$lv1 &&
+   lvconvert -m+1 $vg/$lv1 $(pv_ 3) &&
+   mimages_are_on_ $lv1 $(pv_ 1) $(pv_ 2) $(pv_ 3) &&
+   mirrorlog_is_on_ $lv1 $(pv_ 5) &&
+   fail_pv_ $(pv_ 5) &&
+   vgreduce --removemissing $vg &&
+   mimages_are_on_ $lv1 $(pv_ 1) $(pv_ 2) $(pv_ 3) &&
+   ! mirrorlog_is_on_ $lv1 $(pv_ 5)'
+test_expect_success "cleanup" \
+  "recover_vg_ $(pv_ 5)"
+
+# ---------------------------------------------------------------------
+# all images are gone (flat mirror and stacked mirror)
+
+test_expect_success "fail all mirror images of 2-way mirrored LV" \
+  'prepare_lvs_ &&
+   lvcreate -l2 -m1 -n $lv1 $vg $(pv_ 1) $(pv_ 2) $(pv_ 5):0-1 &&
+   lvchange -an $vg/$lv1 &&
+   mimages_are_on_ $lv1 $(pv_ 1) $(pv_ 2) &&
+   mirrorlog_is_on_ $lv1 $(pv_ 5) &&
+   fail_pv_ $(pv_ 1) $(pv_ 2) &&
+   vgreduce --removemissing $vg &&
+   ! lvs $vg/$lv1'
+test_expect_success "cleanup" \
+  "recover_vg_ $(pv_ 1) $(pv_ 2)"
+
+test_expect_success "fail all mirror images of 3-way (1 converting) mirrored LV" \
+  'prepare_lvs_ &&
+   lvcreate -l2 -m1 -n $lv1 $vg $(pv_ 1) $(pv_ 2) $(pv_ 5):0-1 &&
+   lvchange -an $vg/$lv1 &&
+   lvconvert -m+1 $vg/$lv1 $(pv_ 3) &&
+   mimages_are_on_ $lv1 $(pv_ 1) $(pv_ 2) $(pv_ 3) &&
+   mirrorlog_is_on_ $lv1 $(pv_ 5) &&
+   fail_pv_ $(pv_ 1) $(pv_ 2) $(pv_ 3) &&
+   vgreduce --removemissing $vg &&
+   ! lvs $vg/$lv1'
+test_expect_success "cleanup" \
+  "recover_vg_ $(pv_ 1) $(pv_ 2) $(pv_ 3)"
+
+# ---------------------------------------------------------------------
+# Multiple LVs
+
+test_expect_success "fail a mirror image of one of mirrored LV" \
+  'prepare_lvs_ &&
+   lvcreate -l2 -m1 -n $lv1 $vg $(pv_ 1) $(pv_ 2) $(pv_ 5):0-1 &&
+   lvchange -an $vg/$lv1 &&
+   lvcreate -l2 -m1 -n $lv2 $vg $(pv_ 3) $(pv_ 4) $(pv_ 5):1-1 &&
+   lvchange -an $vg/$lv2 &&
+   mimages_are_on_ $lv1 $(pv_ 1) $(pv_ 2) &&
+   mimages_are_on_ $lv2 $(pv_ 3) $(pv_ 4) &&
+   mirrorlog_is_on_ $lv1 $(pv_ 5) &&
+   mirrorlog_is_on_ $lv2 $(pv_ 5) &&
+   fail_pv_ $(pv_ 2) &&
+   vgreduce --removemissing $vg &&
+   mimages_are_on_ $lv2 $(pv_ 3) $(pv_ 4) &&
+   mirrorlog_is_on_ $lv2 $(pv_ 5) &&
+   lv_is_linear_ $lv1 &&
+   lv_is_on_ $lv1 $(pv_ 1)'
+test_expect_success "cleanup" \
+  "recover_vg_ $(pv_ 2)"
+
+test_expect_success "fail mirror images, one for each mirrored LV" \
+  'prepare_lvs_ &&
+   lvcreate -l2 -m1 -n $lv1 $vg $(pv_ 1) $(pv_ 2) $(pv_ 5):0-1 &&
+   lvchange -an $vg/$lv1 &&
+   lvcreate -l2 -m1 -n $lv2 $vg $(pv_ 3) $(pv_ 4) $(pv_ 5):1-1 &&
+   lvchange -an $vg/$lv2 &&
+   mimages_are_on_ $lv1 $(pv_ 1) $(pv_ 2) &&
+   mimages_are_on_ $lv2 $(pv_ 3) $(pv_ 4) &&
+   mirrorlog_is_on_ $lv1 $(pv_ 5) &&
+   mirrorlog_is_on_ $lv2 $(pv_ 5) &&
+   fail_pv_ $(pv_ 2) &&
+   fail_pv_ $(pv_ 4) &&
+   vgreduce --removemissing $vg &&
+   lv_is_linear_ $lv1 &&
+   lv_is_on_ $lv1 $(pv_ 1) &&
+   lv_is_linear_ $lv2 &&
+   lv_is_on_ $lv2 $(pv_ 3)'
+test_expect_success "cleanup" \
+  "recover_vg_ $(pv_ 2) $(pv_ 4)"
+
+# ---------------------------------------------------------------------
+# no failure
+
+test_expect_success "no failures" \
+  'prepare_lvs_ &&
+   lvcreate -l2 -m1 -n $lv1 $vg $(pv_ 1) $(pv_ 2) $(pv_ 5):0-1 &&
+   lvchange -an $vg/$lv1 &&
+   mimages_are_on_ $lv1 $(pv_ 1) $(pv_ 2) &&
+   mirrorlog_is_on_ $lv1 $(pv_ 5) &&
+   vgreduce --removemissing $vg &&
+   mimages_are_on_ $lv1 $(pv_ 1) $(pv_ 2) &&
+   mirrorlog_is_on_ $lv1 $(pv_ 5)'
+test_expect_success "cleanup" \
+  'check_and_cleanup_lvs_'
+
+# ---------------------------------------------------------------------
+
+test_done


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2011-03-03 15:46 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-03-03 15:46 LVM2/test t-mirror-vgreduce-removemissing.sh zkabelac
  -- strict thread matches above, loose matches on Subject: below --
2010-03-31  3:56 jbrassow
2010-03-25 12:16 agk
2010-03-25 11:42 agk
2008-09-19 16:10 mbroz
2008-01-17 18:29 wysochanski

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).