diff options
Diffstat (limited to 'tests')
60 files changed, 358 insertions, 247 deletions
diff --git a/tests/00linear b/tests/00linear index 30b2c65c..e3ac6555 100644 --- a/tests/00linear +++ b/tests/00linear @@ -19,7 +19,7 @@ testdev $md0 4 $mdsize1 1 mdadm -S $md0 # now with no superblock -mdadm -B $md0 -l linear -n5 $dev0 $dev1 $dev2 $dev3 $dev4 +mdadm -B $md0 -l linear -n5 $dev0 $dev1 $dev2 $dev3 $dev4 check linear testdev $md0 5 $size 64 mdadm -S $md0 diff --git a/tests/00raid0 b/tests/00raid0 index 7f87e6ca..8bc18985 100644 --- a/tests/00raid0 +++ b/tests/00raid0 @@ -1,19 +1,19 @@ # create a simple raid0 -mdadm -CR $md0 -l raid0 -n3 $dev0 $dev1 $dev2 +mdadm -CR $md0 -l raid0 -n3 $dev0 $dev1 $dev2 check raid0 -testdev $md0 3 $mdsize2_l 512 +testdev $md0 3 $mdsize2_l 512 mdadm -S $md0 # now with version-0.90 superblock -mdadm -CR $md0 -e0.90 -l0 -n4 $dev0 $dev1 $dev2 $dev3 +mdadm -CR $md0 -e0.90 -l0 -n4 $dev0 $dev1 $dev2 $dev3 check raid0 -testdev $md0 4 $mdsize0 512 +testdev $md0 4 $mdsize0 512 mdadm -S $md0 # now with no superblock -mdadm -B $md0 -l0 -n5 $dev0 $dev1 $dev2 $dev3 $dev4 +mdadm -B $md0 -l0 -n5 $dev0 $dev1 $dev2 $dev3 $dev4 check raid0 testdev $md0 5 $size 512 mdadm -S $md0 @@ -22,19 +22,19 @@ mdadm -S $md0 # now same again with different chunk size for chunk in 4 32 256 do - mdadm -CR $md0 -e0.90 -l raid0 --chunk $chunk -n3 $dev0 $dev1 $dev2 + mdadm -CR $md0 -e0.90 -l raid0 --chunk $chunk -n3 $dev0 $dev1 $dev2 check raid0 testdev $md0 3 $mdsize0 $chunk mdadm -S $md0 # now with version-1 superblock - mdadm -CR $md0 -e1.0 -l0 -c $chunk -n4 $dev0 $dev1 $dev2 $dev3 + mdadm -CR $md0 -e1.0 -l0 -c $chunk -n4 $dev0 $dev1 $dev2 $dev3 check raid0 testdev $md0 4 $mdsize1 $chunk mdadm -S $md0 # now with no superblock - mdadm -B $md0 -l0 -n5 --chun=$chunk $dev0 $dev1 $dev2 $dev3 $dev4 + mdadm -B $md0 -l0 -n5 --chun=$chunk $dev0 $dev1 $dev2 $dev3 $dev4 check raid0 testdev $md0 5 $size $chunk mdadm -S $md0 diff --git a/tests/00raid1 b/tests/00raid1 index eb9a658c..c93465d8 100644 --- a/tests/00raid1 +++ b/tests/00raid1 @@ -3,28 +3,28 @@ # test version0, version1, and no super # test resync and recovery. -mdadm -CR $md0 -l 1 -n2 $dev0 $dev1 +mdadm -CR $md0 -l 1 -n2 $dev0 $dev1 check resync check raid1 testdev $md0 1 $mdsize1a 64 mdadm -S $md0 # now with version-0.90 superblock, spare -mdadm -CR $md0 -e0.90 --level=raid1 -n3 -x2 $dev0 missing missing $dev1 $dev2 +mdadm -CR $md0 -e0.90 --level=raid1 -n3 -x2 $dev0 missing missing $dev1 $dev2 check recovery check raid1 testdev $md0 1 $mdsize0 64 mdadm -S $md0 # now with no superblock -mdadm -B $md0 -l mirror -n2 $dev0 $dev1 +mdadm -B $md0 -l mirror -n2 $dev0 $dev1 check resync check raid1 testdev $md0 1 $size 1 mdadm -S $md0 # again, but with no resync -mdadm -B $md0 -l 1 --assume-clean -n2 $dev0 $dev1 +mdadm -B $md0 -l 1 --assume-clean -n2 $dev0 $dev1 check raid1 check nosync testdev $md0 1 $size 1 diff --git a/tests/00raid4 b/tests/00raid4 index 97d3e3fd..00a14f2f 100644 --- a/tests/00raid4 +++ b/tests/00raid4 @@ -1,13 +1,13 @@ # create a simple raid4 set -mdadm -CfR $md0 -l 4 -n3 $dev0 $dev1 $dev2 +mdadm -CfR $md0 -l 4 -n3 $dev0 $dev1 $dev2 check resync ; check raid[45] testdev $md0 2 $mdsize1 512 mdadm -S $md0 # now with version-1 superblock -mdadm -CR $md0 -e1 --level=raid4 -n4 $dev0 $dev1 $dev2 $dev3 +mdadm -CR $md0 -e1 --level=raid4 -n4 $dev0 $dev1 $dev2 $dev3 check recovery; check raid[45] testdev $md0 3 $mdsize1 512 mdadm -S $md0 diff --git a/tests/00raid5 b/tests/00raid5 index a288c839..b2b7a971 100644 --- a/tests/00raid5 +++ b/tests/00raid5 @@ -1,13 +1,13 @@ # create a simple raid5 set -mdadm -CfR $md0 -e 0.90 -l 5 -n3 $dev0 $dev1 $dev2 +mdadm -CfR $md0 -e 0.90 -l 5 -n3 $dev0 $dev1 $dev2 check resync testdev $md0 2 $mdsize0 512 mdadm -S $md0 # now with version-1 superblock -mdadm -CR $md0 -e1 --level=raid5 -n4 $dev0 $dev1 $dev2 $dev3 +mdadm -CR $md0 -e1 --level=raid5 -n4 $dev0 $dev1 $dev2 $dev3 check recovery testdev $md0 3 $mdsize1 512 mdadm -S $md0 @@ -17,13 +17,13 @@ mdadm -S $md0 for lo in la ra left-symmetric right-symmetric do - mdadm -CfR $md0 -l 5 -p $lo -n3 $dev0 $dev1 $dev2 + mdadm -CfR $md0 -l 5 -p $lo -n3 $dev0 $dev1 $dev2 check resync ; check raid5 testdev $md0 2 $mdsize1 512 mdadm -S $md0 # now with version-1 superblock - mdadm -CR $md0 -e1 --level=raid5 --layout $lo -n4 $dev0 $dev1 $dev2 $dev3 + mdadm -CR $md0 -e1 --level=raid5 --layout $lo -n4 $dev0 $dev1 $dev2 $dev3 check recovery ; check raid5 testdev $md0 3 $mdsize1 512 mdadm -S $md0 diff --git a/tests/00raid6 b/tests/00raid6 index 63d60f5c..6977af9b 100644 --- a/tests/00raid6 +++ b/tests/00raid6 @@ -1,13 +1,13 @@ # create a simple raid6 set -mdadm -CfR $md0 -e0.90 -l 6 -n4 $dev0 $dev1 $dev2 $dev3 +mdadm -CfR $md0 -e0.90 -l 6 -n4 $dev0 $dev1 $dev2 $dev3 check resync ; check raid6 testdev $md0 2 $mdsize0 512 mdadm -S $md0 # now with version-1 superblock -mdadm -CR $md0 -e1 --level=raid6 -n5 $dev0 $dev1 $dev2 $dev3 $dev4 +mdadm -CR $md0 -e1 --level=raid6 -n5 $dev0 $dev1 $dev2 $dev3 $dev4 check resync ; check raid6 testdev $md0 3 $mdsize1 512 mdadm -S $md0 diff --git a/tests/01r1fail b/tests/01r1fail index 9f556321..389b813f 100644 --- a/tests/01r1fail +++ b/tests/01r1fail @@ -5,23 +5,23 @@ mdadm -CR $md0 -l1 -n4 $dev0 $dev1 $dev2 missing check resync -mdadm $md0 --fail $dev2 +mdadm $md0 --fail $dev2 check resync -mdadm $md0 --fail $dev1 +mdadm $md0 --fail $dev1 sleep 1 check nosync check state U___ -mdadm $md0 --add $dev4 $dev3 +mdadm $md0 --add $dev4 $dev3 check recovery # there could be two separate recoveries, one for each dev check wait check wait -mdadm $md0 --remove $dev2 $dev1 +mdadm $md0 --remove $dev2 $dev1 check nosync check state UUU_ mdadm --zero-superblock $dev2 -mdadm $md0 -a $dev2 +mdadm $md0 -a $dev2 check recovery check wait check state UUUU diff --git a/tests/01r5fail b/tests/01r5fail index 1d629321..873dba58 100644 --- a/tests/01r5fail +++ b/tests/01r5fail @@ -4,22 +4,22 @@ # Add two more, fail and remove one # wait for sync to complete, fail, remove, re-add -mdadm -CR $md0 -l5 -n4 $dev0 $dev1 $dev2 $dev3 +mdadm -CR $md0 -l5 -n4 $dev0 $dev1 $dev2 $dev3 check recovery mdadm $md0 --fail $dev3 sleep 1 check nosync check state UUU_ -mdadm $md0 --add $dev4 $dev5 +mdadm $md0 --add $dev4 $dev5 check recovery check wait -mdadm $md0 --fail $dev0 -mdadm $md0 --remove $dev3 $dev0 +mdadm $md0 --fail $dev0 +mdadm $md0 --remove $dev3 $dev0 check recovery check state _UUU -mdadm $md0 -a $dev3 +mdadm $md0 -a $dev3 check recovery check wait check state UUUU diff --git a/tests/01r5integ b/tests/01r5integ index ffb30ce9..48676a22 100644 --- a/tests/01r5integ +++ b/tests/01r5integ @@ -27,7 +27,7 @@ do exit 1 fi mdadm $md0 -a $i - check wait + while ! (check state 'U*'); do check wait; sleep 0.2; done done mdadm -S $md0 done diff --git a/tests/01raid6integ b/tests/01raid6integ index c6fcdae6..12f4d81b 100644 --- a/tests/01raid6integ +++ b/tests/01raid6integ @@ -47,10 +47,10 @@ do exit 1 fi mdadm $md0 -a $first - check wait + while ! (check state 'U*_U*'); do check wait; sleep 0.2; done done mdadm $md0 -a $second - check wait + while ! (check state 'U*'); do check wait; sleep 0.2; done totest="$totest $second" done mdadm -S $md0 diff --git a/tests/02r1add b/tests/02r1add index c07ec977..757f6965 100644 --- a/tests/02r1add +++ b/tests/02r1add @@ -1,7 +1,7 @@ # Make a raid1, add a device, then remove it again. -mdadm -CR $md0 -l1 -n2 -x1 $dev0 $dev1 $dev2 +mdadm -CR $md0 -l1 -n2 -x1 $dev0 $dev1 $dev2 check resync check wait check state UU @@ -11,7 +11,7 @@ check recovery check wait check state UUU -mdadm $md0 --fail $dev0 +mdadm $md0 --fail $dev0 check state _UU mdadm --grow $md0 -n 2 @@ -21,7 +21,7 @@ mdadm -S $md0 # same again for version-1 -mdadm -CR $md0 -l1 -n2 -e1.2 -x1 $dev0 $dev1 $dev2 +mdadm -CR $md0 -l1 -n2 -e1.2 -x1 $dev0 $dev1 $dev2 check resync check wait check state UU @@ -31,7 +31,7 @@ check recovery check wait check state UUU -mdadm $md0 --fail $dev0 +mdadm $md0 --fail $dev0 check state _UU mdadm --grow $md0 -n 2 diff --git a/tests/02r1grow b/tests/02r1grow index 6604208d..5754c88b 100644 --- a/tests/02r1grow +++ b/tests/02r1grow @@ -2,7 +2,7 @@ # create a small raid1 array, make it larger. Then make it smaller -mdadm -CR $md0 -e 0.90 --level raid1 --raid-disks 3 --size $[size/2] $dev1 $dev2 $dev3 +mdadm -CR $md0 -e 0.90 --level raid1 --raid-disks 3 --size $[size/2] $dev1 $dev2 $dev3 check wait check state UUU testdev $md0 1 $[size/2] 1 @@ -19,7 +19,7 @@ testdev $md0 1 $[size/2] 1 mdadm -S $md0 # same again with version 1.1 superblock -mdadm -CR $md0 --level raid1 --metadata=1.1 --raid-disks 3 --size $[size/2] $dev1 $dev2 $dev3 +mdadm -CR $md0 --level raid1 --metadata=1.1 --raid-disks 3 --size $[size/2] $dev1 $dev2 $dev3 check wait check state UUU testdev $md0 1 $[size/2] 1 diff --git a/tests/02r5grow b/tests/02r5grow index b91ffcd4..386e82ee 100644 --- a/tests/02r5grow +++ b/tests/02r5grow @@ -2,7 +2,7 @@ # create a small raid5 array, make it larger. Then make it smaller -mdadm -CR $md0 -e0.90 --level raid5 --chunk=64 --raid-disks 3 --size $[size/2] $dev1 $dev2 $dev3 +mdadm -CR $md0 -e0.90 --level raid5 --chunk=64 --raid-disks 3 --size $[size/2] $dev1 $dev2 $dev3 check wait check state UUU testdev $md0 2 $[size/2] 32 @@ -19,7 +19,7 @@ testdev $md0 2 $[size/2] 32 mdadm -S $md0 # same again with version 1.1 superblock -mdadm -CR $md0 --level raid5 --metadata=1.1 --chunk=128 --raid-disks 4 --size $[size/2] $dev1 $dev2 $dev3 $dev4 +mdadm -CR $md0 --level raid5 --metadata=1.1 --chunk=128 --raid-disks 4 --size $[size/2] $dev1 $dev2 $dev3 $dev4 check wait check state UUUU testdev $md0 3 $[size/2] 128 diff --git a/tests/02r6grow b/tests/02r6grow index 38c77810..759e6275 100644 --- a/tests/02r6grow +++ b/tests/02r6grow @@ -2,7 +2,7 @@ # create a small raid6 array, make it larger. Then make it smaller -mdadm -CR $md0 -e 0.90 --level raid6 --chunk=64 --raid-disks 4 --size $[size/2] $dev1 $dev2 $dev3 $dev4 +mdadm -CR $md0 -e 0.90 --level raid6 --chunk=64 --raid-disks 4 --size $[size/2] $dev1 $dev2 $dev3 $dev4 check wait check state UUUU testdev $md0 2 $[size/2] 32 @@ -19,7 +19,7 @@ testdev $md0 2 $[size/2] 32 mdadm -S $md0 # same again with version 1.1 superblock -mdadm -CR $md0 --level raid6 --metadata=1.1 --chunk=128 --raid-disks 4 --size $[size/2] $dev1 $dev2 $dev3 $dev4 +mdadm -CR $md0 --level raid6 --metadata=1.1 --chunk=128 --raid-disks 4 --size $[size/2] $dev1 $dev2 $dev3 $dev4 check wait check state UUUU testdev $md0 2 $[size/2] 128 diff --git a/tests/03r0assem b/tests/03r0assem index 0b998ec1..6744e322 100644 --- a/tests/03r0assem +++ b/tests/03r0assem @@ -4,63 +4,63 @@ # uuid, md-minor on command line with wildcard devices # mdadm.conf file -mdadm -CR $md2 -l0 -n3 $dev0 $dev1 $dev2 +mdadm -CR $md2 -l0 -n3 $dev0 $dev1 $dev2 check raid0 tst="testdev $md2 3 $mdsize1_l 512" $tst uuid=`mdadm -Db $md2 | sed 's/.*UUID=//'` mdadm -S $md2 -mdadm -A $md2 $dev0 $dev1 $dev2 +mdadm -A $md2 $dev0 $dev1 $dev2 $tst mdadm -S $md2 -mdadm -A $md2 -u $uuid $devlist +mdadm -A $md2 -u $uuid $devlist $tst mdadm -S $md2 -mdadm --assemble $md2 --name=2 $devlist +mdadm --assemble $md2 --name=2 $devlist $tst mdadm -S $md2 conf=$targetdir/mdadm.conf -{ +{ echo DEVICE $devlist echo array $md2 UUID=$uuid } > $conf -mdadm -As -c $conf $md2 +mdadm -As -c $conf $md2 $tst mdadm -S $md2 -{ +{ echo DEVICE $devlist echo array $md2 name=2 } > $conf -mdadm -As -c $conf $md2 +mdadm -As -c $conf $md2 $tst mdadm -S $md2 -{ +{ echo DEVICE $devlist echo array $md2 devices=$dev0,$dev1,$dev2 } > $conf -mdadm -As -c $conf $md2 +mdadm -As -c $conf $md2 $tst echo "DEVICE $devlist" > $conf mdadm -Db $md2 >> $conf mdadm -S $md2 -mdadm --assemble --scan --config=$conf $md2 +mdadm --assemble --scan --config=$conf $md2 $tst mdadm -S $md2 echo " metadata=0.90 devices=$dev0,$dev1,$dev2" >> $conf -mdadm --assemble --scan --config=$conf $md2 +mdadm --assemble --scan --config=$conf $md2 $tst mdadm -S $md2 @@ -68,7 +68,7 @@ mdadm -S $md2 ### Now for version 0... mdadm --zero-superblock $dev0 $dev1 $dev2 -mdadm -CR $md2 -l0 --metadata=0.90 -n3 $dev0 $dev1 $dev2 +mdadm -CR $md2 -l0 --metadata=0.90 -n3 $dev0 $dev1 $dev2 check raid0 tst="testdev $md2 3 $mdsize0 512" $tst @@ -76,56 +76,56 @@ $tst uuid=`mdadm -Db $md2 | sed 's/.*UUID=//'` mdadm -S $md2 -mdadm -A $md2 $dev0 $dev1 $dev2 +mdadm -A $md2 $dev0 $dev1 $dev2 $tst mdadm -S $md2 -mdadm -A $md2 -u $uuid $devlist +mdadm -A $md2 -u $uuid $devlist $tst mdadm -S $md2 -mdadm --assemble $md2 --super-minor=2 $devlist # +mdadm --assemble $md2 --super-minor=2 $devlist # $tst mdadm -S $md2 conf=$targetdir/mdadm.conf -{ +{ echo DEVICE $devlist echo array $md2 UUID=$uuid } > $conf -mdadm -As -c $conf $md2 +mdadm -As -c $conf $md2 $tst mdadm -S $md2 -{ +{ echo DEVICE $devlist echo array $md2 super-minor=2 } > $conf -mdadm -As -c $conf $md2 +mdadm -As -c $conf $md2 $tst mdadm -S $md2 -{ +{ echo DEVICE $devlist echo array $md2 devices=$dev0,$dev1,$dev2 } > $conf -mdadm -As -c $conf $md2 +mdadm -As -c $conf $md2 $tst echo "DEVICE $devlist" > $conf mdadm -Db $md2 >> $conf mdadm -S $md2 -mdadm --assemble --scan --config=$conf $md2 +mdadm --assemble --scan --config=$conf $md2 $tst mdadm -S $md2 echo " metadata=1 devices=$dev0,$dev1,$dev2" >> $conf -mdadm --assemble --scan --config=$conf $md2 +mdadm --assemble --scan --config=$conf $md2 $tst mdadm -S $md2 diff --git a/tests/03r5assem b/tests/03r5assem index de0d56b6..0c7fb8c6 100644 --- a/tests/03r5assem +++ b/tests/03r5assem @@ -2,108 +2,108 @@ # create a raid5 array and assemble it in various ways, # including with missing devices. -mdadm -CR -e 0.90 $md1 -l5 -n3 $dev0 $dev1 $dev2 +mdadm -CR -e 0.90 $md1 -l5 -n3 $dev0 $dev1 $dev2 tst="check raid5 ;testdev $md1 2 $mdsize0 512 ; mdadm -S $md1" uuid=`mdadm -Db $md1 | sed 's/.*UUID=//'` check wait eval $tst -mdadm -A $md1 $dev0 $dev1 $dev2 +mdadm -A $md1 $dev0 $dev1 $dev2 eval $tst -mdadm -A $md1 -u $uuid $devlist +mdadm -A $md1 -u $uuid $devlist eval $tst -mdadm -A $md1 -m 1 $devlist +mdadm -A $md1 -m 1 $devlist eval $tst conf=$targetdir/mdadm.conf -{ +{ echo DEVICE $devlist echo array $md1 UUID=$uuid } > $conf -mdadm -As -c $conf $md1 +mdadm -As -c $conf $md1 eval $tst -{ +{ echo DEVICE $devlist echo array $md1 super-minor=1 } > $conf -mdadm -As -c $conf +mdadm -As -c $conf eval $tst -{ +{ echo DEVICE $devlist echo array $md1 devices=$dev0,$dev1,$dev2 } > $conf -mdadm -As -c $conf +mdadm -As -c $conf echo "DEVICE $devlist" > $conf mdadm -Db $md1 >> $conf eval $tst -mdadm --assemble --scan --config=$conf $md1 +mdadm --assemble --scan --config=$conf $md1 eval $tst echo " metadata=0.90 devices=$dev0,$dev1,$dev2" >> $conf -mdadm --assemble --scan --config=$conf $md1 +mdadm --assemble --scan --config=$conf $md1 eval $tst ### Now with a missing device -mdadm -AR $md1 $dev0 $dev2 # +mdadm -AR $md1 $dev0 $dev2 # check state U_U eval $tst -mdadm -A $md1 -u $uuid $devlist +mdadm -A $md1 -u $uuid $devlist check state U_U eval $tst -mdadm -A $md1 -m 1 $devlist +mdadm -A $md1 -m 1 $devlist check state U_U eval $tst conf=$targetdir/mdadm.conf -{ +{ echo DEVICE $devlist echo array $md1 UUID=$uuid } > $conf -mdadm -As -c $conf $md1 +mdadm -As -c $conf $md1 check state U_U eval $tst -{ +{ echo DEVICE $devlist echo array $md1 super-minor=1 } > $conf -mdadm -As -c $conf +mdadm -As -c $conf check state U_U eval $tst -{ +{ echo DEVICE $devlist echo array $md1 devices=$dev0,$dev1,$dev2 } > $conf -mdadm -As -c $conf +mdadm -As -c $conf echo "DEVICE $devlist" > $conf mdadm -Db $md1 >> $conf check state U_U eval $tst -mdadm --assemble --scan --config=$conf $md1 +mdadm --assemble --scan --config=$conf $md1 check state U_U eval $tst echo " metadata=0.90 devices=$dev0,$dev1,$dev2" >> $conf -mdadm --assemble --scan --config=$conf $md1 +mdadm --assemble --scan --config=$conf $md1 check state U_U eval $tst diff --git a/tests/04r0update b/tests/04r0update index 0cd815ac..73ee3b9f 100644 --- a/tests/04r0update +++ b/tests/04r0update @@ -1,15 +1,15 @@ # create a raid0, re-assemble with a different super-minor -mdadm -CR -e 0.90 $md0 -l0 -n3 $dev0 $dev1 $dev2 +mdadm -CR -e 0.90 $md0 -l0 -n3 $dev0 $dev1 $dev2 testdev $md0 3 $mdsize0 512 minor1=`mdadm -E $dev0 | sed -n -e 's/.*Preferred Minor : //p'` mdadm -S /dev/md0 -mdadm -A $md1 $dev0 $dev1 $dev2 +mdadm -A $md1 $dev0 $dev1 $dev2 minor2=`mdadm -E $dev0 | sed -n -e 's/.*Preferred Minor : //p'` mdadm -S /dev/md1 -mdadm -A $md1 --update=super-minor $dev0 $dev1 $dev2 +mdadm -A $md1 --update=super-minor $dev0 $dev1 $dev2 minor3=`mdadm -E $dev0 | sed -n -e 's/.*Preferred Minor : //p'` mdadm -S /dev/md1 diff --git a/tests/04r1update b/tests/04r1update index 7a50131f..e22965bc 100644 --- a/tests/04r1update +++ b/tests/04r1update @@ -2,14 +2,14 @@ set -i # create a raid1 array, let it sync, then re-assemble with a force-sync -mdadm -CR $md0 -l1 -n2 $dev0 $dev1 +mdadm -CR $md0 -l1 -n2 $dev0 $dev1 check wait mdadm -S $md0 -mdadm -A $md0 $dev0 $dev1 +mdadm -A $md0 $dev0 $dev1 check nosync mdadm -S $md0 -mdadm -A $md0 -U resync $dev0 $dev1 +mdadm -A $md0 -U resync $dev0 $dev1 check resync mdadm -S $md0 diff --git a/tests/04update-metadata b/tests/04update-metadata index 10bb70f0..232fc1ff 100644 --- a/tests/04update-metadata +++ b/tests/04update-metadata @@ -32,7 +32,7 @@ then echo >&2 should fail during resync exit 1 fi mdadm -A $md0 $dlist -mdadm --wait $md0 +mdadm --wait $md0 || true mdadm -S $md0 # should succeed now diff --git a/tests/05r1-add-internalbitmap-v1b b/tests/05r1-add-internalbitmap-v1b index b077fa7e..da78fd61 100644 --- a/tests/05r1-add-internalbitmap-v1b +++ b/tests/05r1-add-internalbitmap-v1b @@ -1,4 +1,4 @@ -# +# # create a raid1 without any bitmap, add the bitmap and then write to # the device. This should catch the case where the bitmap is created # but not reloaded correctly, such as the case fixed by diff --git a/tests/05r1-add-internalbitmap-v1c b/tests/05r1-add-internalbitmap-v1c index 7b397844..9f2f128b 100644 --- a/tests/05r1-add-internalbitmap-v1c +++ b/tests/05r1-add-internalbitmap-v1c @@ -1,4 +1,4 @@ -# +# # create a raid1 without any bitmap, add the bitmap and then write to # the device. This should catch the case where the bitmap is created # but not reloaded correctly, such as the case fixed by diff --git a/tests/05r1-bitmapfile b/tests/05r1-bitmapfile index fcd8372b..f384f0ea 100644 --- a/tests/05r1-bitmapfile +++ b/tests/05r1-bitmapfile @@ -1,10 +1,10 @@ -# +# # create a raid1 with a bitmap file # bmf=$targetdir/bitmap rm -f $bmf -mdadm --create --run $md0 --level=1 -n2 --delay=1 --bitmap $bmf $dev1 $dev2 +mdadm --create --run $md0 --level=1 -n2 --delay=1 --bitmap $bmf $dev1 $dev2 check wait testdev $md0 1 $mdsize1a 64 mdadm -S $md0 @@ -24,7 +24,7 @@ testdev $md0 1 $mdsize1a 64 sleep 4 dirty3=`mdadm -X $bmf | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'` if [ $dirty3 -lt 400 ] -then +then echo >&2 "ERROR dirty count $dirty3 is too small" exit 2 fi diff --git a/tests/05r1-grow-external b/tests/05r1-grow-external index 49666369..69da3e90 100644 --- a/tests/05r1-grow-external +++ b/tests/05r1-grow-external @@ -21,7 +21,7 @@ dirty4=`mdadm -X $bmf | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'` #echo $dirty1 $dirty2 $dirty3 $dirty4 if [ $dirty2 -ne 0 -o $dirty4 -ne 0 -o $dirty3 -lt 400 ] -then +then echo bad dirty counts exit 1 fi diff --git a/tests/05r1-grow-internal b/tests/05r1-grow-internal index a648b440..24b3aece 100644 --- a/tests/05r1-grow-internal +++ b/tests/05r1-grow-internal @@ -19,7 +19,7 @@ dirty4=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'` #echo $dirty1 $dirty2 $dirty3 $dirty4 if [ $dirty2 -ne 0 -o $dirty4 -ne 0 -o $dirty3 -lt 400 ] -then +then echo bad dirty counts exit 1 fi diff --git a/tests/05r1-grow-internal-1 b/tests/05r1-grow-internal-1 index a110f3b0..2f0d8237 100644 --- a/tests/05r1-grow-internal-1 +++ b/tests/05r1-grow-internal-1 @@ -19,7 +19,7 @@ dirty4=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'` #echo $dirty1 $dirty2 $dirty3 $dirty4 if [ $dirty2 -ne 0 -o $dirty4 -ne 0 -o $dirty3 -lt 400 ] -then +then echo bad dirty counts exit 1 fi diff --git a/tests/05r1-internalbitmap b/tests/05r1-internalbitmap index 2bfeab8e..dd7232a7 100644 --- a/tests/05r1-internalbitmap +++ b/tests/05r1-internalbitmap @@ -1,8 +1,8 @@ -# +# # create a raid1 with an internal bitmap # -mdadm --create -e0.90 --run $md0 --level=1 -n2 --delay=1 --bitmap internal --bitmap-chunk=4 $dev1 $dev2 +mdadm --create -e0.90 --run $md0 --level=1 -n2 --delay=1 --bitmap internal --bitmap-chunk=4 $dev1 $dev2 check wait testdev $md0 1 $mdsize0 64 mdadm -S $md0 @@ -22,7 +22,7 @@ testdev $md0 1 $mdsize0 64 sleep 4 dirty3=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'` if [ $dirty3 -lt 400 ] -then +then echo >&2 "ERROR dirty count $dirty3 is too small" exit 2 fi diff --git a/tests/05r1-internalbitmap-v1a b/tests/05r1-internalbitmap-v1a index 3fcb0249..3ddc082f 100644 --- a/tests/05r1-internalbitmap-v1a +++ b/tests/05r1-internalbitmap-v1a @@ -1,8 +1,8 @@ -# +# # create a raid1 with an internal bitmap # -mdadm --create --run $md0 --metadata=1.0 --level=1 -n2 --delay=1 --bitmap internal --bitmap-chunk=4 $dev1 $dev2 +mdadm --create --run $md0 --metadata=1.0 --level=1 -n2 --delay=1 --bitmap internal --bitmap-chunk=4 $dev1 $dev2 check wait check bitmap testdev $md0 1 $mdsize1b 64 @@ -23,7 +23,7 @@ testdev $md0 1 $mdsize1b 64 sleep 4 dirty3=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'` if [ $dirty3 -lt 400 ] -then +then echo >&2 "ERROR dirty count $dirty3 is too small" exit 2 fi diff --git a/tests/05r1-internalbitmap-v1b b/tests/05r1-internalbitmap-v1b index 1097536b..40f7abea 100644 --- a/tests/05r1-internalbitmap-v1b +++ b/tests/05r1-internalbitmap-v1b @@ -1,8 +1,8 @@ -# +# # create a raid1 with an internal bitmap # -mdadm --create --run $md0 --metadata=1.1 --level=1 -n2 --delay=1 --bitmap internal --bitmap-chunk=4 $dev1 $dev2 +mdadm --create --run $md0 --metadata=1.1 --level=1 -n2 --delay=1 --bitmap internal --bitmap-chunk=4 $dev1 $dev2 check wait check bitmap testdev $md0 1 $mdsize11 64 @@ -24,7 +24,7 @@ testdev $md0 1 $mdsize11 64 sleep 4 dirty3=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'` if [ $dirty3 -lt 400 ] -then +then echo >&2 "ERROR dirty count $dirty3 is too small" exit 2 fi diff --git a/tests/05r1-internalbitmap-v1c b/tests/05r1-internalbitmap-v1c index f6bbcf6b..2eaea59b 100644 --- a/tests/05r1-internalbitmap-v1c +++ b/tests/05r1-internalbitmap-v1c @@ -1,8 +1,8 @@ -# +# # create a raid1 with an internal bitmap # -mdadm --create --run $md0 --metadata=1.2 --level=1 -n2 --delay=1 --bitmap internal --bitmap-chunk 4 $dev1 $dev2 +mdadm --create --run $md0 --metadata=1.2 --level=1 -n2 --delay=1 --bitmap internal --bitmap-chunk 4 $dev1 $dev2 check wait check bitmap testdev $md0 1 $mdsize12 64 @@ -23,7 +23,7 @@ testdev $md0 1 $mdsize12 64 sleep 4 dirty3=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'` if [ $dirty3 -lt 400 ] -then +then echo >&2 "ERROR dirty count $dirty3 is too small" exit 2 fi diff --git a/tests/05r1-n3-bitmapfile b/tests/05r1-n3-bitmapfile index 1bb9af16..f1c3f1ee 100644 --- a/tests/05r1-n3-bitmapfile +++ b/tests/05r1-n3-bitmapfile @@ -1,12 +1,12 @@ -# +# # create a raid1 with 3 devices and a bitmap file # make sure resync does right thing. # # bmf=$targetdir/bitmap rm -f $bmf -mdadm --create -e0.90 --run $md0 --level=1 -n3 --delay=1 --bitmap $bmf $dev1 $dev2 $dev3 +mdadm --create -e0.90 --run $md0 --level=1 -n3 --delay=1 --bitmap $bmf $dev1 $dev2 $dev3 check wait testdev $md0 1 $mdsize0 64 mdadm -S $md0 @@ -26,7 +26,7 @@ testdev $md0 1 $mdsize0 64 sleep 4 dirty3=`mdadm -X $bmf | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'` if [ $dirty3 -lt 400 ] -then +then echo >&2 "ERROR dirty count $dirty3 is too small" exit 2 fi diff --git a/tests/05r1-re-add b/tests/05r1-re-add index 44da8908..fa6bbcb4 100644 --- a/tests/05r1-re-add +++ b/tests/05r1-re-add @@ -24,13 +24,16 @@ mdadm $md0 -r $dev2 testdev $md0 1 $mdsize1a 64 mdadm $md0 -a $dev2 check wait -cmp --ignore-initial=$[16*512] --bytes=$[$mdsize0*1024] $dev1 $dev2 +blockdev --flushbufs $dev1 $dev2 +cmp --ignore-initial=$[64*512] --bytes=$[$mdsize0*1024] $dev1 $dev2 mdadm $md0 -f $dev2; sleep 1 mdadm $md0 -r $dev2 if dd if=/dev/zero of=$md0 ; then : ; fi +blockdev --flushbufs $md0 # ensure writes have been sent. mdadm $md0 -a $dev2 check recovery check wait -cmp --ignore-initial=$[16*512] --bytes=$[$mdsize0*1024] $dev1 $dev2 +blockdev --flushbufs $dev1 $dev2 +cmp --ignore-initial=$[64*512] --bytes=$[$mdsize0*1024] $dev1 $dev2 mdadm -S $md0 diff --git a/tests/05r1-re-add-nosuper b/tests/05r1-re-add-nosuper index 8025a685..058d602d 100644 --- a/tests/05r1-re-add-nosuper +++ b/tests/05r1-re-add-nosuper @@ -29,6 +29,7 @@ cmp --bytes=$[$mdsize0*1024] $dev1 $dev2 mdadm $md0 -f $dev2; sleep 1 mdadm $md0 -r $dev2 if dd if=/dev/zero of=$md0 ; then : ; fi +blockdev --flushbufs $md0 # make sure writes have been sent mdadm $md0 --re-add $dev2 check recovery check wait diff --git a/tests/05r6tor0 b/tests/05r6tor0 index 2e0f1853..2fd51f2e 100644 --- a/tests/05r6tor0 +++ b/tests/05r6tor0 @@ -4,24 +4,24 @@ set -x -e # then reshape back up to RAID5 and RAID5 mdadm -CR $md0 -l6 -n5 $dev0 $dev1 $dev2 $dev3 $dev4 -check wait +check wait; sleep 1 check raid6 testdev $md0 3 19456 512 mdadm -G $md0 -l5 -check wait +check wait; sleep 1 check raid5 testdev $md0 3 19456 512 mdadm -G $md0 -l0 -check wait +check wait; sleep 1 check raid0 testdev $md0 3 19456 512 mdadm -G $md0 -l5 --add $dev3 $dev4 -check wait +check wait; sleep 1 check raid5 check algorithm 2 testdev $md0 3 19456 512 mdadm -G $md0 -l 6 -check wait +check wait; sleep 1 check raid6 check algorithm 2 testdev $md0 3 19456 512 diff --git a/tests/07changelevelintr b/tests/07changelevelintr index 89cfff0c..18c63092 100644 --- a/tests/07changelevelintr +++ b/tests/07changelevelintr @@ -12,7 +12,8 @@ checkgeo() { shift sleep 0.5 check wait - for attr in level raid_disks chunk_size layout + sleep 1 + for attr in level raid_disks chunk_size layout do if [ $# -gt 0 ] ; then val=$1 diff --git a/tests/07changelevels b/tests/07changelevels index d33e007c..a328874a 100644 --- a/tests/07changelevels +++ b/tests/07changelevels @@ -26,7 +26,8 @@ checkgeo() { shift sleep 0.5 check wait - for attr in level raid_disks chunk_size layout + sleep 1 + for attr in level raid_disks chunk_size layout do if [ $# -gt 0 ] ; then val=$1 @@ -38,7 +39,7 @@ checkgeo() { fi done } - + bu=/tmp/md-test-backup rm -f $bu diff --git a/tests/07layouts b/tests/07layouts index 4c20eb8b..acd1a800 100644 --- a/tests/07layouts +++ b/tests/07layouts @@ -28,7 +28,7 @@ checkgeo() { shift sleep 0.5 check wait - for attr in level raid_disks chunk_size layout + for attr in level raid_disks chunk_size layout do if [ $# -gt 0 ] ; then val=$1 @@ -40,7 +40,7 @@ checkgeo() { fi done } - + bu=/tmp/md-test-backup rm -f $bu diff --git a/tests/07reshape5intr b/tests/07reshape5intr index 71ef2c78..0f4803ac 100644 --- a/tests/07reshape5intr +++ b/tests/07reshape5intr @@ -31,7 +31,7 @@ do echo 1000 > /proc/sys/dev/raid/speed_limit_min echo 2000 > /proc/sys/dev/raid/speed_limit_max check wait - echo check > /sys/block/md0/md/sync_action + while ! echo check > /sys/block/md0/md/sync_action; do sleep 0.1; done check wait mm=`cat /sys/block/md0/md/mismatch_cnt` if [ $mm -gt 0 ] diff --git a/tests/07revert-inplace b/tests/07revert-inplace index 48416c8f..a73eb977 100644 --- a/tests/07revert-inplace +++ b/tests/07revert-inplace @@ -8,7 +8,7 @@ mdadm -CR --assume-clean $md0 -l5 -n4 -x1 $devlist4 check raid5 testdev $md0 3 $mdsize1 512 mdadm -G $md0 -l 6 -sleep 3 +sleep 2 mdadm -S $md0 mdadm -A $md0 --update=revert-reshape $devlist4 --backup-file=/tmp/md-backup check wait @@ -22,7 +22,7 @@ mdadm -CR --assume-clean $md0 -l6 -n5 $devlist4 check raid6 testdev $md0 3 $mdsize1 512 mdadm -G $md0 -l 5 -sleep 3 +sleep 2 mdadm -S $md0 mdadm -A $md0 --update=revert-reshape $devlist4 --backup-file=/tmp/md-backup check wait @@ -35,7 +35,7 @@ mdadm -CR --assume-clean $md0 -l10 -n6 -c 64 $devlist5 check raid10 testdev $md0 3 $mdsize1 64 mdadm -G $md0 -c 32 -sleep 3 +sleep 2 mdadm -S $md0 strace -o /tmp/str ./mdadm -A $md0 --update=revert-reshape $devlist5 check wait diff --git a/tests/09imsm-assemble b/tests/09imsm-assemble index 2a42369e..d7028c62 100644 --- a/tests/09imsm-assemble +++ b/tests/09imsm-assemble @@ -31,19 +31,19 @@ num_disks=4 size=$((10*1024)) mdadm -CR $container -e imsm -n $num_disks $dev0 $dev1 $dev2 $dev3 mdadm -CR $member $dev0 $dev2 -n 2 -l 1 -z $size -mdadm --wait $member +mdadm --wait $member || true mdadm -Ss # make dev0 and dev1 a new rebuild family mdadm -A $container $dev0 $dev1 mdadm -IR $container -mdadm --wait ${member}_0 +mdadm --wait ${member}_0 || true mdadm -Ss # make dev2 and dev3 a new rebuild family mdadm -A $container $dev2 $dev3 mdadm -IR $container -mdadm --wait ${member}_0 +mdadm --wait ${member}_0 || true mdadm -Ss # reassemble and make sure one of the families falls out diff --git a/tests/09imsm-create-fail-rebuild b/tests/09imsm-create-fail-rebuild index 4b656b53..de17f321 100644 --- a/tests/09imsm-create-fail-rebuild +++ b/tests/09imsm-create-fail-rebuild @@ -71,7 +71,7 @@ check wait # FAIL / REBUILD imsm_check_hold $container $dev0 mdadm --fail $member0 $dev0 -mdadm --wait-clean --scan +mdadm --wait-clean --scan || true imsm_check_removal $container $dev0 mdadm --add $container $dev4 check wait diff --git a/tests/10ddf-assemble-missing b/tests/10ddf-assemble-missing index 17f17244..4bf21b25 100644 --- a/tests/10ddf-assemble-missing +++ b/tests/10ddf-assemble-missing @@ -12,8 +12,8 @@ ddf_check container 4 mdadm -CR $member1 -n 4 -l 10 $dev8 $dev10 $dev9 $dev11 -z 10000 mdadm -CR $member0 -n 2 -l 1 $dev8 $dev9 -z 10000 -mdadm --wait $member0 -mdadm --wait $member1 +mdadm --wait $member0 || true +mdadm --wait $member1 || true mdadm -Ss sleep 1 @@ -23,7 +23,7 @@ mdadm -I $dev10 mdadm -I $dev11 # Start runnable members -mdadm -IRs +mdadm -IRs || true mdadm -Ss #[ -f /var/tmp/mdmon.log ] && cat /var/tmp/mdmon.log diff --git a/tests/10ddf-create b/tests/10ddf-create index 2f7747cd..44e95441 100644 --- a/tests/10ddf-create +++ b/tests/10ddf-create @@ -78,7 +78,7 @@ mdadm -Ss # and now assemble fully incrementally. for i in $dev8 $dev9 $dev10 $dev11 $dev12 -do +do mdadm -I $i -c /var/tmp/mdadm.conf done check nosync diff --git a/tests/10ddf-create-fail-rebuild b/tests/10ddf-create-fail-rebuild index 525c24d3..a8e8ced9 100644 --- a/tests/10ddf-create-fail-rebuild +++ b/tests/10ddf-create-fail-rebuild @@ -70,7 +70,7 @@ check wait # FAIL / REBUILD ddf_check_hold $container $dev8 mdadm --fail $member0 $dev8 -mdadm --wait-clean --scan +mdadm --wait-clean --scan || true ddf_check_removal $container $dev8 mdadm --add $container $dev12 check wait diff --git a/tests/10ddf-fail-readd b/tests/10ddf-fail-readd index 746f049e..9cd78937 100644 --- a/tests/10ddf-fail-readd +++ b/tests/10ddf-fail-readd @@ -10,7 +10,7 @@ mdadm -CR $container -e ddf -l container -n 2 $dev8 $dev9 mdadm -CR $member0 -l raid1 -n 2 $container #$dir/mdadm -CR $member0 -l raid1 -n 2 $container >/tmp/mdmon.txt 2>&1 -mke2fs $member0 +mke2fs -F $member0 check wait set -- $(get_raiddisks $member0) @@ -28,7 +28,7 @@ good0=$1 mdadm $container --add $fail0 sleep 1 -mdadm --wait $member0 +mdadm --wait $member0 || true ret=0 set -- $(get_raiddisks $member0) diff --git a/tests/10ddf-fail-readd-readonly b/tests/10ddf-fail-readd-readonly index ed24585d..6a74d9c8 100644 --- a/tests/10ddf-fail-readd-readonly +++ b/tests/10ddf-fail-readd-readonly @@ -45,7 +45,7 @@ mdadm $container --remove $fail0 mdadm $container --add $fail0 sleep 1 -mdadm --wait $member0 +mdadm --wait $member0 || true set -- $(get_raiddisks $member0) case $1:$2 in diff --git a/tests/10ddf-fail-stop-readd b/tests/10ddf-fail-stop-readd index 4a0511a1..f8ebe176 100644 --- a/tests/10ddf-fail-stop-readd +++ b/tests/10ddf-fail-stop-readd @@ -11,7 +11,7 @@ mdadm -CR $member0 -l raid1 -n 2 $container #$dir/mdadm -CR $member0 -l raid1 -n 2 $container >/tmp/mdmon.txt 2>&1 # Write to the array -mke2fs $member0 +mke2fs -F $member0 check wait set -- $(get_raiddisks $member0) @@ -30,16 +30,16 @@ mdadm -Ss sleep 1 # Now simulate incremental assembly mdadm -I $good0 -mdadm -IRs +mdadm -IRs || true # Write to the array -mke2fs $member0 +mke2fs -F $member0 # We re-add the disk now mdadm $container --add $fail0 sleep 1 -mdadm --wait $member0 +mdadm --wait $member0 || true ret=0 set -- $(get_raiddisks $member0) diff --git a/tests/10ddf-fail-twice b/tests/10ddf-fail-twice index d0b4ac61..6af19434 100644 --- a/tests/10ddf-fail-twice +++ b/tests/10ddf-fail-twice @@ -7,7 +7,7 @@ ddf_check container $num_disks mdadm -CR $member0 -n 2 -l 1 $container mdadm -CR $member1 -n 3 -l 5 $container -mdadm --wait $member1 $member0 || mdadm --wait $member1 $member0 +mdadm --wait $member1 $member0 || mdadm --wait $member1 $member0 || true set -- $(get_raiddisks $member0) fail0=$1 @@ -18,7 +18,7 @@ mdadm $member1 --fail $fail1 mdadm $container --add $dev13 -mdadm --wait $member1 $member0 || mdadm --wait $member1 $member0 +mdadm --wait $member1 $member0 || mdadm --wait $member1 $member0 || true devs0="$(get_raiddisks $member0)" diff --git a/tests/10ddf-fail-two-spares b/tests/10ddf-fail-two-spares index fa6e2e8c..e00810d8 100644 --- a/tests/10ddf-fail-two-spares +++ b/tests/10ddf-fail-two-spares @@ -14,8 +14,8 @@ mdadm -CR $member0 -l raid6 -n 4 $dev10 $dev11 $dev12 $dev13 -z 16384 # >/tmp/mdmon.txt 2>&1 mdadm -CR $member1 -l raid10 -n 4 $dev10 $dev11 $dev12 $dev13 -z 16384 -dd if=$sda of=$member0 bs=1M -dd if=$sda of=$member1 bs=1M skip=16 +dd if=$sda of=$member0 bs=1M count=32 +dd if=$sda of=$member1 bs=1M skip=16 count=16 check wait @@ -27,8 +27,8 @@ sleep 1 mdadm --fail $member1 $dev12 # We will have 4 resync procedures, 2 spares for 2 arrays. -mdadm --wait $member1 $member0 -mdadm --wait $member1 $member0 +mdadm --wait $member1 $member0 || true +mdadm --wait $member1 $member0 || true devs0="$(get_raiddisks $member0)" devs1="$(get_raiddisks $member1)" diff --git a/tests/10ddf-incremental-wrong-order b/tests/10ddf-incremental-wrong-order index 2324f1d7..9ecf6bc2 100644 --- a/tests/10ddf-incremental-wrong-order +++ b/tests/10ddf-incremental-wrong-order @@ -14,11 +14,11 @@ ddf_check container 4 mdadm -CR $member1 -n 4 -l 10 $dev8 $dev10 $dev9 $dev11 -z 10000 mdadm -CR $member0 -n 2 -l 1 $dev8 $dev9 -z 10000 -mdadm --wait $member0 -mdadm --wait $member1 +mdadm --wait $member0 || true +mdadm --wait $member1 || true -mke2fs $member0 -mke2fs $member1 +mke2fs -F $member0 +mke2fs -F $member1 sha_0a=$(sha1_sum $member0) sha_1a=$(sha1_sum $member1) @@ -30,7 +30,7 @@ mdadm -I $dev10 mdadm -I $dev11 # Start runnable members ($member1) and write -mdadm -IRs +mdadm -IRs || true e2fsck -fy $member1 sha_1b=$(sha1_sum $member1) @@ -52,14 +52,14 @@ fi #[ -f /var/tmp/mdmon.log ] && cat /var/tmp/mdmon.log -# Now reassemble +# Now reassemble # Note that we add the previously missing disks first. # $dev10 should have a higher seq number than $dev8 for d in $dev8 $dev9 $dev10 $dev11; do - mdadm -I $d + mdadm -I $d done -mdadm -IRs +mdadm -IRs || true sha_0c=$(sha1_sum $member0) sha_1c=$(sha1_sum $member1) diff --git a/tests/10ddf-sudden-degraded b/tests/10ddf-sudden-degraded index 1eab361a..dc692aea 100644 --- a/tests/10ddf-sudden-degraded +++ b/tests/10ddf-sudden-degraded @@ -8,7 +8,7 @@ mdadm -CR $container -e ddf -n 2 $dev8 $dev9 ddf_check container 2 mdadm -CR $member1 -n 2 -l1 $dev8 $dev9 -mdadm --wait $member1 +mdadm --wait $member1 || true mdadm -Ss mdadm -I $dev8 diff --git a/tests/18imsm-1d-takeover-r0_1d b/tests/18imsm-1d-takeover-r0_1d index bf462e27..6f5cf5a6 100644 --- a/tests/18imsm-1d-takeover-r0_1d +++ b/tests/18imsm-1d-takeover-r0_1d @@ -8,12 +8,11 @@ vol0_comp_size=$((10 * 1024)) # Create container mdadm --create --run $container --auto=md --metadata=imsm --force --raid-disks=$vol0_num_comps $dev0 -wait +check wait imsm_check container $vol0_num_comps # Create RAID 0 volume mdadm --create --run $member0 --auto=md --level=0 --size=$vol0_comp_size --chunk=64 --force --raid-disks=$vol0_num_comps $dev0 -wait check wait # Test the member diff --git a/tests/18imsm-1d-takeover-r1_2d b/tests/18imsm-1d-takeover-r1_2d index fa02b6c3..72e4173e 100644 --- a/tests/18imsm-1d-takeover-r1_2d +++ b/tests/18imsm-1d-takeover-r1_2d @@ -8,12 +8,11 @@ vol0_comp_size=$((10 * 1024)) # Create container mdadm --create --run $container --auto=md --metadata=imsm --force --raid-disks=$vol0_num_comps $dev0 -wait +check wait imsm_check container $vol0_num_comps # Create RAID 1 volume mdadm --create --run $member0 --auto=md --level=1 --size=$vol0_comp_size --chunk=64 --raid-disks=$((vol0_num_comps + 1)) $dev0 missing -wait check wait # Test the member0 diff --git a/tests/18imsm-r1_2d-takeover-r0_1d b/tests/18imsm-r1_2d-takeover-r0_1d index 1697d60e..cb10ec97 100644 --- a/tests/18imsm-r1_2d-takeover-r0_1d +++ b/tests/18imsm-r1_2d-takeover-r0_1d @@ -10,7 +10,7 @@ device_list="$dev0 $dev1" vol0_level=1 vol0_comp_size=$((5 * 1024)) vol0_chunk=64 -vol0_num_comps=$(( $num_disks - 1 )) +vol0_num_comps=$(( $num_disks - 1 )) vol0_offset=0 # After: RAID 0 volume, 1 disks, 64k chunk size diff --git a/tests/19raid6auto-repair b/tests/19raid6auto-repair index 23b14e4b..ce4a7c08 100644 --- a/tests/19raid6auto-repair +++ b/tests/19raid6auto-repair @@ -10,34 +10,40 @@ data_offset_in_kib=$[2048/2] # make a raid5 from a file dd if=/dev/urandom of=/tmp/RandFile bs=1024 count=$array_data_size_in_kib -mdadm -CR $md0 -l6 -n$number_of_disks -c $chunksize_in_kib $devs -dd if=/tmp/RandFile of=$md0 bs=1024 count=$array_data_size_in_kib -blockdev --flushbufs $md0; sync -check wait -blockdev --flushbufs $devs; sync -echo 3 > /proc/sys/vm/drop_caches -cmp -s -n $array_data_size_in_b $md0 /tmp/RandFile || { echo sanity cmp failed ; exit 2; } - -# wipe out 5 chunks on each device -dd if=/dev/urandom of=$dev0 bs=1024 count=$[5*chunksize_in_kib] seek=$[data_offset_in_kib+chunksize_in_kib*0] -dd if=/dev/urandom of=$dev1 bs=1024 count=$[5*chunksize_in_kib] seek=$[data_offset_in_kib+chunksize_in_kib*5] -dd if=/dev/urandom of=$dev2 bs=1024 count=$[5*chunksize_in_kib] seek=$[data_offset_in_kib+chunksize_in_kib*10] -dd if=/dev/urandom of=$dev3 bs=1024 count=$[5*chunksize_in_kib] seek=$[data_offset_in_kib+chunksize_in_kib*15] -dd if=/dev/urandom of=$dev4 bs=1024 count=$[5*chunksize_in_kib] seek=$[data_offset_in_kib+chunksize_in_kib*20] - -blockdev --flushbufs $devs; sync -echo 3 > /proc/sys/vm/drop_caches - -$dir/raid6check $md0 0 0 2>&1 | grep -qs "Error" || { echo should detect errors; exit 2; } - -$dir/raid6check $md0 0 0 autorepair > /dev/null || { echo repair failed; exit 2; } -blockdev --flushbufs $md0 $devs; sync -echo 3 > /proc/sys/vm/drop_caches - -$dir/raid6check $md0 0 0 2>&1 | grep -qs "Error" && { echo errors detected; exit 2; } -cmp -s -n $array_data_size_in_b $md0 /tmp/RandFile || { echo cmp failed ; exit 2; } - -mdadm -S $md0 -udevadm settle -blockdev --flushbufs $md0 $devs; sync -echo 3 > /proc/sys/vm/drop_caches + +# perform test for every layout +layouts="ls rs la ra parity-first ddf-zero-restart ddf-N-restart ddf-N-continue \ + left-asymmetric-6 right-asymmetric-6 left-symmetric-6 \ + right-symmetric-6 parity-first-6" + +for layout in $layouts +do + mdadm -CR $md0 -l6 --layout=$layout -n$number_of_disks -c $chunksize_in_kib $devs + dd if=/tmp/RandFile of=$md0 bs=1024 count=$array_data_size_in_kib + blockdev --flushbufs $md0; sync + check wait + blockdev --flushbufs $devs; sync + echo 3 > /proc/sys/vm/drop_caches + cmp -s -n $array_data_size_in_b $md0 /tmp/RandFile || { echo sanity cmp failed ; exit 2; } + + # wipe out 5 chunks on each device + dd if=/dev/urandom of=$dev0 bs=1024 count=$[5*chunksize_in_kib] seek=$[data_offset_in_kib+chunksize_in_kib*0] + dd if=/dev/urandom of=$dev1 bs=1024 count=$[5*chunksize_in_kib] seek=$[data_offset_in_kib+chunksize_in_kib*5] + dd if=/dev/urandom of=$dev2 bs=1024 count=$[5*chunksize_in_kib] seek=$[data_offset_in_kib+chunksize_in_kib*10] + dd if=/dev/urandom of=$dev3 bs=1024 count=$[5*chunksize_in_kib] seek=$[data_offset_in_kib+chunksize_in_kib*15] + dd if=/dev/urandom of=$dev4 bs=1024 count=$[5*chunksize_in_kib] seek=$[data_offset_in_kib+chunksize_in_kib*20] + + blockdev --flushbufs $devs; sync + echo 3 > /proc/sys/vm/drop_caches + + $dir/raid6check $md0 0 0 2>&1 | grep -qs "Error" || { echo should detect errors; exit 2; } + + $dir/raid6check $md0 0 0 autorepair > /dev/null || { echo repair failed; exit 2; } + blockdev --flushbufs $md0 $devs; sync + echo 3 > /proc/sys/vm/drop_caches + + $dir/raid6check $md0 0 0 2>&1 | grep -qs "Error" && { echo errors detected; exit 2; } + cmp -s -n $array_data_size_in_b $md0 /tmp/RandFile || { echo cmp failed ; exit 2; } + + mdadm -S $md0 +done diff --git a/tests/19raid6check b/tests/19raid6check new file mode 100644 index 00000000..67958c6a --- /dev/null +++ b/tests/19raid6check @@ -0,0 +1,27 @@ +# +# Confirm that raid6check handles all RAID6 layouts. +# Try both 4 and 5 devices. + +layouts='ls rs la ra' +lv=`uname -r` +if expr $lv '>=' 2.6.30 > /dev/null +then + layouts="$layouts parity-first ddf-zero-restart ddf-N-restart ddf-N-continue \ + left-asymmetric-6 right-asymmetric-6 left-symmetric-6 right-symmetric-6 parity-first-6" +fi + +for layout in $layouts +do + for devs in 4 5 + do + dl="$dev0 $dev1 $dev2 $dev3" + if [ $devs = 5 ]; then dl="$dl $dev4"; fi + + mdadm -CR $md0 -l6 --layout $layout -n$devs $dl + check wait + tar cf - /etc > $md0 + ./raid6check $md0 0 0 | grep 'Error detected' && exit 1 + mdadm -S $md0 + done +done + diff --git a/tests/19raid6repair b/tests/19raid6repair index ecff2c3a..26846cc9 100644 --- a/tests/19raid6repair +++ b/tests/19raid6repair @@ -8,40 +8,49 @@ devs="$dev1 $dev2 $dev3 $dev4" # default 2048 sectors data_offset_in_kib=$[2048/2] -for failure in "$dev3 3 3 2" "$dev3 3 2 3" "$dev3 3 2 1" "$dev3 3 2 0" "$dev4 3 3 0" "$dev4 3 3 1" "$dev4 3 3 2" \ - "$dev1 3 0 1" "$dev1 3 0 2" "$dev1 3 0 3" "$dev2 3 1 0" "$dev2 3 1 2" "$dev2 3 1 3" ; do - failure_split=( $failure ) - device_with_error=${failure_split[0]} - stripe_with_error=${failure_split[1]} - repair_params="$stripe_with_error ${failure_split[2]} ${failure_split[3]}" - start_of_errors_in_kib=$[data_offset_in_kib+chunksize_in_kib*stripe_with_error] - - # make a raid5 from a file - dd if=/dev/urandom of=/tmp/RandFile bs=1024 count=$array_data_size_in_kib - mdadm -CR $md0 -l6 -n$number_of_disks -c $chunksize_in_kib $devs - dd if=/tmp/RandFile of=$md0 bs=1024 count=$array_data_size_in_kib - blockdev --flushbufs $md0; sync - - check wait - blockdev --flushbufs $devs; sync - echo 3 > /proc/sys/vm/drop_caches - cmp -s -n $array_data_size_in_b $md0 /tmp/RandFile || { echo sanity cmp failed ; exit 2; } - - dd if=/dev/urandom of=$device_with_error bs=1024 count=$chunksize_in_kib seek=$start_of_errors_in_kib - blockdev --flushbufs $device_with_error; sync - echo 3 > /proc/sys/vm/drop_caches - - $dir/raid6check $md0 0 0 2>&1 | grep -qs "Error" || { echo should detect errors; exit 2; } - - $dir/raid6check $md0 repair $repair_params > /dev/null || { echo repair failed; exit 2; } - blockdev --flushbufs $md0 $devs; sync - echo 3 > /proc/sys/vm/drop_caches - - $dir/raid6check $md0 0 0 2>&1 | grep -qs "Error" && { echo errors detected; exit 2; } - cmp -s -n $array_data_size_in_b $md0 /tmp/RandFile || { echo cmp failed ; exit 2; } - - mdadm -S $md0 - udevadm settle - blockdev --flushbufs $md0 $devs; sync - echo 3 > /proc/sys/vm/drop_caches +layouts="ls rs la ra parity-first ddf-zero-restart ddf-N-restart ddf-N-continue \ + left-asymmetric-6 right-asymmetric-6 left-symmetric-6 \ + right-symmetric-6 parity-first-6" + +for layout in $layouts +do + for failure in "$dev3 3 3 2" "$dev3 3 2 3" "$dev3 3 2 1" "$dev3 3 2 0" \ + "$dev4 3 3 0" "$dev4 3 3 1" "$dev4 3 3 2" \ + "$dev1 3 0 1" "$dev1 3 0 2" "$dev1 3 0 3" \ + "$dev2 3 1 0" "$dev2 3 1 2" "$dev2 3 1 3" ; do + failure_split=( $failure ) + device_with_error=${failure_split[0]} + stripe_with_error=${failure_split[1]} + repair_params="$stripe_with_error ${failure_split[2]} ${failure_split[3]}" + start_of_errors_in_kib=$[data_offset_in_kib+chunksize_in_kib*stripe_with_error] + + # make a raid5 from a file + dd if=/dev/urandom of=/tmp/RandFile bs=1024 count=$array_data_size_in_kib + mdadm -CR $md0 -l6 --layout=$layout -n$number_of_disks -c $chunksize_in_kib $devs + dd if=/tmp/RandFile of=$md0 bs=1024 count=$array_data_size_in_kib + blockdev --flushbufs $md0; sync + + check wait + blockdev --flushbufs $devs; sync + echo 3 > /proc/sys/vm/drop_caches + cmp -s -n $array_data_size_in_b $md0 /tmp/RandFile || { echo sanity cmp failed ; exit 2; } + + dd if=/dev/urandom of=$device_with_error bs=1024 count=$chunksize_in_kib seek=$start_of_errors_in_kib + blockdev --flushbufs $device_with_error; sync + echo 3 > /proc/sys/vm/drop_caches + + $dir/raid6check $md0 0 0 2>&1 | grep -qs "Error" || { echo should detect errors; exit 2; } + + $dir/raid6check $md0 repair $repair_params > /dev/null || { echo repair failed; exit 2; } + blockdev --flushbufs $md0 $devs; sync + echo 3 > /proc/sys/vm/drop_caches + + $dir/raid6check $md0 0 0 2>&1 | grep -qs "Error" && { echo errors detected; exit 2; } + cmp -s -n $array_data_size_in_b $md0 /tmp/RandFile || { echo cmp failed ; exit 2; } + + mdadm -S $md0 + udevadm settle + sync + echo 3 > /proc/sys/vm/drop_caches + done done diff --git a/tests/19repair-does-not-destroy b/tests/19repair-does-not-destroy index 1d3b9b45..a92883fd 100644 --- a/tests/19repair-does-not-destroy +++ b/tests/19repair-does-not-destroy @@ -26,4 +26,3 @@ cmp -s -n $array_data_size_in_b $md0 /tmp/RandFile || { echo should not mess up mdadm -S $md0 udevadm settle -blockdev --flushbufs $md0 $devs; sync diff --git a/tests/20raid5journal b/tests/20raid5journal new file mode 100644 index 00000000..f751aceb --- /dev/null +++ b/tests/20raid5journal @@ -0,0 +1,64 @@ +# check write journal of raid456 + +# test --detail +test_detail_shows_journal() { + mdadm -D $1 | grep journal || { + echo >&2 "ERROR --detail does show journal device!"; mdadm -D $1 ; exit 1; } +} + +# test --examine +test_examine_shows_journal() { + mdadm -E $1 | grep Journal || { + echo >&2 "ERROR --examine does show Journal device!"; mdadm -E $1 ; exit 1; } +} + +# test --create +create_with_journal_and_stop() { + mdadm -CR $md0 -l5 -n4 $dev0 $dev1 $dev2 $dev3 --write-journal $dev4 + check wait + tar cf - /etc > $md0 + ./raid6check $md0 0 0 | grep 'Error detected' && exit 1 + test_detail_shows_journal $md0 + test_examine_shows_journal $dev4 + mdadm -S $md0 +} + +# test --assemble +test_assemble() { + create_with_journal_and_stop + if mdadm -A $md0 $dev0 $dev1 $dev2 $dev3 + then + echo >&2 "ERROR should return 1 when journal is missing!"; cat /proc/mdstat ; exit 1; + fi + mdadm -S $md0 + + mdadm -A $md0 $dev0 $dev1 $dev2 $dev3 --force + check readonly + mdadm -S $md0 +} + +# test --incremental +test_incremental() { + create_with_journal_and_stop + for d in $dev0 $dev1 $dev2 $dev3 + do + mdadm -I $d + done + check inactive + mdadm -I $dev4 + check raid5 + mdadm -S $md0 + + # test --incremental with journal missing + for d in $dev0 $dev1 $dev2 $dev3 + do + mdadm -I $d + done + mdadm -R $md0 + check readonly + mdadm -S $md0 +} + +create_with_journal_and_stop +test_assemble +test_incremental diff --git a/tests/ToTest b/tests/ToTest index 31d70828..b98e266d 100644 --- a/tests/ToTest +++ b/tests/ToTest @@ -6,7 +6,7 @@ add/remove/fail raid5 DONE raid6/10 needed?? -assemble +assemble by devices DONE by uuid DONE by superminor DONE @@ -23,7 +23,7 @@ bitmap separate file internal filename in config file - + examine --scan --brief diff --git a/tests/imsm-grow-template b/tests/imsm-grow-template index 8022e3ad..71a0bbb1 100644 --- a/tests/imsm-grow-template +++ b/tests/imsm-grow-template @@ -33,17 +33,17 @@ function grow_member() { # Create container mdadm --create --run $container --auto=md --metadata=imsm --raid-disks=$num_disks $device_list -wait +check wait imsm_check container $num_disks # Create first volume inside the container mdadm --create --run $member0 --auto=md --level=$vol0_level --size=$vol0_comp_size --chunk=$vol0_chunk --raid-disks=$num_disks $device_list -wait +check wait # Create second volume inside the container (if defined) if [ ! -z $vol1_chunk ]; then mdadm --create --run $member1 --auto=md --level=$vol1_level --size=$vol1_comp_size --chunk=$vol1_chunk --raid-disks=$num_disks $device_list - wait + check wait fi # Wait for any RESYNC to complete @@ -63,7 +63,7 @@ fi for i in $spare_list do mdadm --add $container $i - wait + check wait num_disks=$((num_disks + 1)) done @@ -90,8 +90,10 @@ else exit 1 fi else + sleep 5 check wait sleep 5 + check wait imsm_check member $member0 $num_disks $vol0_level $vol0_comp_size $((vol0_comp_size * vol0_new_num_comps)) $vol0_offset $vol0_chunk testdev $member0 $vol0_new_num_comps $vol0_comp_size $vol0_chunk if [ $vol1_new_num_comps -ne 0 ]; then |