public inbox for lvm2-cvs@sourceware.org
help / color / mirror / Atom feed
* 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
@ 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-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 --
2008-09-19 16:10 LVM2/test t-mirror-vgreduce-removemissing.sh mbroz
-- strict thread matches above, loose matches on Subject: below --
2011-03-03 15:46 zkabelac
2010-03-31 3:56 jbrassow
2010-03-25 12:16 agk
2010-03-25 11:42 agk
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).