]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
testreshape5 - add tests for RAID6
authorNeilBrown <neilb@suse.de>
Mon, 12 Oct 2009 05:55:05 +0000 (16:55 +1100)
committerNeilBrown <neilb@suse.de>
Mon, 12 Oct 2009 05:55:05 +0000 (16:55 +1100)
.. to make sure our raid6 calculations are working.

Signed-off-by: NeilBrown <neilb@suse.de>
tests/07testreshape5

index 03609886e9c181c48a7abf93e360aac32dceb82c..7c2bfc1c6e54eec405743dccc55a96aee9ceac5c 100644 (file)
@@ -5,35 +5,42 @@
 # shaped md arrays.
 set -x
 layouts=(la ra ls rs)
+for level in 5 6
+do
 for chunk in 4 8 16 32 64 128
 do
   devs="$dev1"
   for disks in 2 3 4 5 6
   do
     eval devs=\"$devs \$dev$disks\"
+    if [ " $level $disks" = " 6 3" -o " $level $disks" = " 6 2" ]
+    then continue
+    fi
     for nlayout in 0 1 2 3
     do
       layout=${layouts[$nlayout]}
 
-      size=$[chunk*(disks-1)*disks]
+      size=$[chunk*(disks-(level-4))*disks]
 
       # test restore: make a raid5 from a file, then do a compare
       dd if=/dev/urandom of=/tmp/RandFile bs=1024 count=$size
-      $dir/test_stripe restore /tmp/RandFile $disks $[chunk*1024] 5 $nlayout 0 $[size*1024] $devs
-      mdadm -CR $md0 -amd -l5 -n$disks --assume-clean -c $chunk -p $layout $devs
+      $dir/test_stripe restore /tmp/RandFile $disks $[chunk*1024] $level $nlayout 0 $[size*1024] $devs
+      mdadm -CR $md0 -amd -l$level -n$disks --assume-clean -c $chunk -p $layout $devs
       cmp -s -n $[size*1024] $md0 /tmp/RandFile || { echo cmp failed ; exit 2; }
 
       # FIXME check parity
 
       # test save
       dd if=/dev/urandom of=$md0 bs=1024 count=$size
-      blockdev --flushbufs $md0 $devs
+      blockdev --flushbufs $md0 $devs; sync
       > /tmp/NewRand
-      $dir/test_stripe save /tmp/NewRand $disks $[chunk*1024] 5 $nlayout 0 $[size*1024] $devs
+      $dir/test_stripe save /tmp/NewRand $disks $[chunk*1024] $level $nlayout 0 $[size*1024] $devs
       cmp -s -n $[size*1024] $md0 /tmp/NewRand || { echo cmp failed ; exit 2; }
       mdadm -S $md0
+      udevadm settle
     done
   done
 done
+done
 exit 0