]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - test
fix load_super/free_super mismatch in util.c
[thirdparty/mdadm.git] / test
diff --git a/test b/test
index 696e68218ee69ef6d56eb5a7e0fbace8a1cb8b14..d2719854717a08ffbf2eaa5a292886f7b8dee9f6 100644 (file)
--- a/test
+++ b/test
@@ -21,15 +21,21 @@ fi
 
 # 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
+# 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
@@ -65,10 +71,12 @@ fi
 
 # 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
@@ -126,6 +134,11 @@ check() {
    esac
 }
 
+no_errors() {
+  if [ -s $targetdir/stderr ]
+  then echo Bad errors from mdadm: ; cat $targetdir/stderr; exit 2;
+  fi
+}
 # basic device test
 
 testdev() {
@@ -136,10 +149,10 @@ 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
 }
@@ -155,11 +168,12 @@ for script in tests/$prefix tests/$prefix*[^~]
 do
   if [ -f "$script" ]
   then
+   rm -f $targetdir/stderr
    # 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