diff options
author | Neil Brown <neilb@suse.de> | 2005-08-16 06:45:23 +0000 |
---|---|---|
committer | Neil Brown <neilb@suse.de> | 2005-08-16 06:45:23 +0000 |
commit | fe80f49b6e157e006d63d0319f6d022226e4e197 (patch) | |
tree | cf3c615519a482404137bf19919cd1d8632efff4 /tests | |
parent | b0c63f3203c15caf4d2fa1ef7adf4b4cb0c67ee9 (diff) | |
download | mdadm-fe80f49b6e157e006d63d0319f6d022226e4e197.tar.gz mdadm-fe80f49b6e157e006d63d0319f6d022226e4e197.tar.xz mdadm-fe80f49b6e157e006d63d0319f6d022226e4e197.zip |
Assorted fixes
Support "--build"ing arrays with bitmaps.
hot-removal of bitmaps
--re-add of drives recently removed.
assorted extra tests
Signed-off-by: Neil Brown <neilb@cse.unsw.edu.au>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/03r5assemV1 | 109 | ||||
-rw-r--r-- | tests/05r1-grow-external | 9 | ||||
-rw-r--r-- | tests/05r1-grow-internal | 31 | ||||
-rw-r--r-- | tests/05r1-re-add | 36 | ||||
-rw-r--r-- | tests/05r1-re-add-nosuper | 37 | ||||
-rw-r--r-- | tests/06name | 2 | ||||
-rw-r--r-- | tests/06r5swap | 2 | ||||
-rw-r--r-- | tests/06sysfs | 11 |
8 files changed, 233 insertions, 4 deletions
diff --git a/tests/03r5assemV1 b/tests/03r5assemV1 new file mode 100644 index 0000000..7c72ad6 --- /dev/null +++ b/tests/03r5assemV1 @@ -0,0 +1,109 @@ + +# create a v-1 raid5 array and assemble in various ways + +mdadm -CR -e1 --name one $md1 -l5 -n3 $dev0 $dev1 $dev2 +tst="check raid5 ;testdev $md1 2 $mdsize1 64 ; mdadm -S $md1" +uuid=`mdadm -Db $md1 | sed 's/.*UUID=//'` +check wait + +eval $tst + +mdadm -A $md1 $dev0 $dev1 $dev2 +eval $tst + +mdadm -A $md1 -u $uuid $devlist +eval $tst + +mdadm -A $md1 --name one $devlist +eval $tst + + +conf=$targetdir/mdadm.conf +{ + echo DEVICE $devlist + echo array $md1 UUID=$uuid +} > $conf + +mdadm -As -c $conf $md1 +eval $tst + +{ + echo DEVICE $devlist + echo array $md1 name=one +} > $conf + +mdadm -As -c $conf +eval $tst + +{ + echo DEVICE $devlist + echo array $md1 devices=$dev0,$dev1,$dev2 +} > $conf + +mdadm -As -c $conf + +echo "DEVICE $devlist" > $conf +mdadm -Db $md1 >> $conf +eval $tst + +mdadm --assemble --scan --config=$conf $md1 +eval $tst + +echo " metadata=1.0 devices=$dev0,$dev1,$dev2" >> $conf +mdadm --assemble --scan --config=$conf $md1 +eval $tst + +### Now with a missing device + +mdadm -AR $md1 $dev0 $dev2 # +check state U_U +eval $tst + +mdadm -A $md1 -u $uuid $devlist +check state U_U +eval $tst + +mdadm -A $md1 --name=one $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 +check state U_U +eval $tst + +{ + echo DEVICE $devlist + echo array $md1 name=one +} > $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 + +echo "DEVICE $devlist" > $conf +mdadm -Db $md1 >> $conf +check state U_U +eval $tst + +mdadm --assemble --scan --config=$conf $md1 +check state U_U +eval $tst + +echo " metadata=1.0 devices=$dev0,$dev1,$dev2" >> $conf +mdadm --assemble --scan --config=$conf $md1 +check state U_U +eval $tst diff --git a/tests/05r1-grow-external b/tests/05r1-grow-external index ba9b3e5..73fccd9 100644 --- a/tests/05r1-grow-external +++ b/tests/05r1-grow-external @@ -8,7 +8,7 @@ testdev $md0 1 $mdsize0 1 bmf=$targetdir/bm rm -f $bmf -mdadm -E $dev1 +#mdadm -E $dev1 mdadm --grow $md0 --bitmap=$bmf --delay=1 || { $mdadm -X $bmf ; exit 1; } dirty1=`mdadm -X $bmf | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'` sleep 4 @@ -19,10 +19,15 @@ dirty3=`mdadm -X $bmf | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'` sleep 4 dirty4=`mdadm -X $bmf | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'` -echo $dirty1 $dirty2 $dirty3 $dirty4 +#echo $dirty1 $dirty2 $dirty3 $dirty4 if [ $dirty2 -ne 0 -o $dirty4 -ne 0 -o $dirty3 -lt 400 ] then echo bad dirty counts exit 1 fi + +# now to remove the bitmap +check bitmap +mdadm --grow $md0 --bitmap=none +check nobitmap mdadm -S $md0 diff --git a/tests/05r1-grow-internal b/tests/05r1-grow-internal new file mode 100644 index 0000000..addae35 --- /dev/null +++ b/tests/05r1-grow-internal @@ -0,0 +1,31 @@ + +# +# create a raid1 array, add an internal bitmap +# +mdadm --create --run $md0 -l 1 -n 2 $dev1 $dev2 +check wait +testdev $md0 1 $mdsize0 1 + +#mdadm -E $dev1 +mdadm --grow $md0 --bitmap=internal --delay=1 || $mdadm -X $dev2 +dirty1=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'` +sleep 4 +dirty2=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'` + +testdev $md0 1 $mdsize0 1 +dirty3=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'` +sleep 4 +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 + echo bad dirty counts + exit 1 +fi + +# now to remove the bitmap +check bitmap +mdadm --grow $md0 --bitmap=none +check nobitmap +mdadm -S $md0 diff --git a/tests/05r1-re-add b/tests/05r1-re-add new file mode 100644 index 0000000..733f8e7 --- /dev/null +++ b/tests/05r1-re-add @@ -0,0 +1,36 @@ + +# +# create a raid1, remove a drive, and readd it. +# resync should be instant. +# Then do some IO first. Resync should still be very fast +# + +mdadm -CR $md0 -l1 -n2 -binternal -d1 $dev1 $dev2 +check resync +check wait +testdev $md0 1 $mdsize0 1 +sleep 4 + +mdadm $md0 -f $dev2 +sleep 1 +mdadm $md0 -r $dev2 +mdadm $md0 -a $dev2 + cat /proc/mdstat +check nosync + +mdadm $md0 -f $dev2 +sleep 1 +mdadm $md0 -r $dev2 +testdev $md0 1 $mdsize0 1 +mdadm $md0 -a $dev2 +check wait +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 +mdadm $md0 -a $dev2 +check recovery +check wait +cmp --bytes=$[$mdsize0*1024] $dev1 $dev2 +mdadm -S $md0 diff --git a/tests/05r1-re-add-nosuper b/tests/05r1-re-add-nosuper new file mode 100644 index 0000000..8025a68 --- /dev/null +++ b/tests/05r1-re-add-nosuper @@ -0,0 +1,37 @@ + +# +# create a raid1, remove a drive, and readd it. +# resync should be instant. +# Then do some IO first. Resync should still be very fast +# +bmf=$targetdir/bitmap2 +rm -f $bmf +mdadm -B $md0 -l1 -n2 -b$bmf -d1 $dev1 $dev2 +check resync +check wait +testdev $md0 1 $size 1 +sleep 4 + +mdadm $md0 -f $dev2 +sleep 1 +mdadm $md0 -r $dev2 +mdadm $md0 --re-add $dev2 +check nosync + +mdadm $md0 -f $dev2 +sleep 1 +mdadm $md0 -r $dev2 +testdev $md0 1 $size 1 +mdadm $md0 --re-add $dev2 +check wait +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 +mdadm $md0 --re-add $dev2 +check recovery +check wait +# should BLKFLSBUF and then read $dev1/$dev2... +cmp --bytes=$[$mdsize0*1024] $file1 $file2 +mdadm -S $md0 diff --git a/tests/06name b/tests/06name index cbcd094..9c749f2 100644 --- a/tests/06name +++ b/tests/06name @@ -8,6 +8,6 @@ mdadm -D $md0 | grep 'Name : Fred$' > /dev/null || exit 1 mdadm -S $md0 mdadm -A $md0 --name="Fred" $devlist -mdadm -Db $md0 +#mdadm -Db $md0 mdadm -S $md0 diff --git a/tests/06r5swap b/tests/06r5swap index 41e8be6..e414f76 100644 --- a/tests/06r5swap +++ b/tests/06r5swap @@ -14,5 +14,5 @@ diff -u $targetdir/d1 $targetdir/d1s mdadm --assemble --update=byteorder $md0 $dev0 $dev1 $dev2 $dev3 sleep 3 -cat /proc/mdstat +check recovery mdadm -S $md0 diff --git a/tests/06sysfs b/tests/06sysfs new file mode 100644 index 0000000..af63ef4 --- /dev/null +++ b/tests/06sysfs @@ -0,0 +1,11 @@ +exit 0 +mdadm -CR $md0 -l1 -n3 $dev1 $dev2 $dev3 + +ls -Rl /sys/block/md0 + +cat /sys/block/md0/md/level +cat /sys/block/md0/md/raid_disks + +mdadm -S $md0 + +exit 1 |