]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - test
super1: reserve at least 2 chunks for reshape headroom.
[thirdparty/mdadm.git] / test
diff --git a/test b/test
index 277f94a8b2eb621821c97e0a244569d5beab8880..2964b3bb834257065b1ec25d120068a0c67726f2 100755 (executable)
--- a/test
+++ b/test
@@ -48,6 +48,8 @@ mdsize12=19988
 # ddf needs bigger devices as 32Meg is reserved!
 ddfsize=65536
 
+config=/tmp/mdadm.conf
+
 cleanup() {
        udevadm settle
        $mdadm -Ssq 2> /dev/null
@@ -101,6 +103,9 @@ mdadm() {
         * )   $mdadm 2> $targetdir/stderr --quiet "$@"
     esac
     rv=$?
+    case $* in
+       *-S* ) udevadm settle;;
+    esac
     cat >&2 $targetdir/stderr
     return $rv
 }
@@ -185,9 +190,10 @@ testdev() {
       rasize=$[rasize*DEV_ROUND_K*2]
    fi
    if [ `/sbin/blockdev --getsize $dev` -eq 0 ]; then sleep 2 ; fi
-   if [ $rasize -ne `/sbin/blockdev --getsize $dev` ]
+   _sz=`/sbin/blockdev --getsize $dev`
+   if [ $rasize -lt $_sz -o $[rasize*4/5] -gt $_sz ]
    then
-     echo "ERROR: size is wrong for $dev: $cnt * $dvsize (chunk=$chunk) = $rasize, not `/sbin/blockdev --getsize $dev`"
+     echo "ERROR: size is wrong for $dev: $cnt * $dvsize (chunk=$chunk) = $rasize, not $_sz"
      exit 1
    fi
 }
@@ -197,21 +203,6 @@ rotest() {
   fsck -fn $dev >&2
 }
 
-setup_environment() {
-   if [ -f $1 ]; then
-      . $environment
-      setup_env
-   fi
-}
-
-reset_environment() {
-   if [ -f $1 ]; then
-      reset_env
-      unset setup_env
-      unset reset_env
-   fi
-}
-
 for script in tests/$prefix tests/$prefix*[^~]
 do
   if [ -f "$script" ]
@@ -221,18 +212,14 @@ do
    $mdadm -Ssq 2> /dev/null
    mdadm --zero $devlist 2> /dev/null
    mdadm --zero $devlist 2> /dev/null
-   environment="tests/env-`basename $script`"
-   setup_environment $environment
    # source script in a subshell, so it has access to our
    # namespace, but cannot change it.
    echo -ne "$script... "
    if ( set -ex ; . $script )  2> $targetdir/log
    then echo "succeeded"
-   else echo "FAILED"
-       reset_environment $environment
+   else echo "FAILED - see $targetdir/log for details"
        exit 1
    fi
-   reset_environment $environment
   fi
 done
 exit 0