# assume md0, md1, md2 exist in /dev
md0=/dev/md0 md1=/dev/md1 md2=/dev/md2
+mdp0=/dev/md_d0
+mdp1=/dev/md_d1
# We test mdadm on loop-back block devices.
# dir for storing files should be settable by command line maybe
targetdir=/var/tmp
size=20000
+# super0, round down to multiple of 64 and substract 64
mdsize0=19904
+# super00 is nested, subtract 128
+mdsize00=19840
+# super1.0 round down to multiple of 2, subtract 8
mdsize1=19992
-mdsize11=19996
-mdsize12=19992
+# subtract another 4 for bitmaps
+mdsize1b=19988
+mdsize11=19992
+mdsize12=19988
cleanup() {
$mdadm -Ss
# mdadm always adds --quiet, and we want to see any unexpected messages
mdadm() {
+ rm -f $targetdir/stderr
case $* in
- *-C* ) $mdadm --quiet "$@" --auto=yes;;
- * ) $mdadm --quiet "$@"
+ *-C* ) $mdadm 2> $targetdir/stderr --quiet "$@" --auto=yes;;
+ * ) $mdadm 2> $targetdir/stderr --quiet "$@"
esac
+ cat >&2 $targetdir/stderr
}
# check various things
esac
}
+no_errors() {
+ if [ -s $targetdir/stderr ]
+ then echo Bad errors from mdadm: ; cat $targetdir/stderr; exit 2;
+ fi
+}
# basic device test
testdev() {
mkfs -j $dev > /dev/null 2>&1 && fsck -fn $dev >&2
dsize=$[dvsize/chunk]
dsize=$[dsize*chunk]
- rasize=$[dsize*1024*cnt]
- if [ $rasize -ne `/sbin/blockdev --getsize64 $dev` ]
+ rasize=$[dsize*2*cnt]
+ if [ $rasize -ne `/sbin/blockdev --getsize $dev` ]
then
- echo "ERROR: size is wrong for $dev: $cnt * $dvsize (chunk=$chunk) = $rasize, not `/sbin/blockdev --getsize64 $dev`"
+ echo "ERROR: size is wrong for $dev: $cnt * $dvsize (chunk=$chunk) = $rasize, not `/sbin/blockdev --getsize $dev`"
exit 1
fi
}
do
if [ -f "$script" ]
then
+ rm -f $targetdir/stderr
+ # stop all arrays, just incase some script left an array active.
+ mdadm -Ssq
# source script in a subshell, so it has access to our
# namespace, but cannot change it.
if ( set -ex ; . $script ) 2> $targetdir/log
then echo "$script succeeded"
- else cat $targetdir/log
+ else cat $targetdir/log ; cat $targetdir/stderr
echo "$script failed"
exit 1
fi