]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - tests/10ddf-create
Create: tell udev md device is not ready when first created.
[thirdparty/mdadm.git] / tests / 10ddf-create
index a32dc0f54aaf53dd375836824498be686ca634a5..44e95441faabe52748f54c843bcedacf3f327c7d 100644 (file)
@@ -2,25 +2,36 @@
 # Test basic DDF functionality.
 #
 # Create a container with 5 drives
-# create a small raid0 across them all, then a 2disk raid1
+# create a small raid0 across them all,
+# then a small raid10 using 4 drives, then a 2disk raid1
 # and a 3disk raid5 using the remaining space
 #
 # add some data, tear down the array, reassemble
 # and make sure it is still there.
+set -e
+. tests/env-ddf-template
+sda=$(get_rootdev) || exit 1
 
 mdadm -CR /dev/md/ddf0 -e ddf -n 5 $dev8 $dev9 $dev10 $dev11 $dev12
-mdadm -CR r0 -l0 -n5 /dev/md/ddf0 -z 5000
+mdadm -CR r5 -l5 -n5 /dev/md/ddf0 -z 5000
+if mdadm -CR r5 -l1 -n2 /dev/md/ddf0 -z 5000
+then echo >&2 create with same name should fail ; exit 1
+fi
+mdadm -CR r10 -l10 -n4 -pn2 /dev/md/ddf0 -z 5000
 mdadm -CR r1 -l1 -n2 /dev/md/ddf0
-mdadm -CR r5 -l5 -n3 /dev/md/ddf0
-testdev /dev/md/r0 5 5000 64
-# r0 will use 4992 due to chunk size, so that leave 27776 for the rest
-testdev /dev/md/r1 1 27776 1
-testdev /dev/md/r5 2 27776 64
-dd if=/dev/sda of=/dev/md/r0 || true
-dd if=/dev/sda of=/dev/md/r1 || true
-dd if=/dev/sda of=/dev/md/r5 || true
+mdadm -CR r0 -l0 -n3 /dev/md/ddf0
+testdev /dev/md/r5 4 5000 512
+testdev /dev/md/r10 2 5000 512
+# r0/r10 will use 4608 due to chunk size, so that leaves 23552 for the rest
+testdev /dev/md/r1 1 23552 64
+testdev /dev/md/r0 3 23552 512
+dd if=$sda of=/dev/md/r0 || true
+dd if=$sda of=/dev/md/r10 || true
+dd if=$sda of=/dev/md/r1 || true
+dd if=$sda of=/dev/md/r5 || true
 
 s0=`sha1sum /dev/md/r0`
+s10=`sha1sum /dev/md/r10`
 s1=`sha1sum /dev/md/r1`
 s5=`sha1sum /dev/md/r5`
 
@@ -29,13 +40,18 @@ mdadm -Ss
 mdadm -A /dev/md/ddf0  $dev8 $dev9 $dev10 $dev11 $dev12
 mdadm -I /dev/md/ddf0
 
+udevadm settle
 s0a=`sha1sum /dev/md/r0`
+s10a=`sha1sum /dev/md/r10`
 s1a=`sha1sum /dev/md/r1`
 s5a=`sha1sum /dev/md/r5`
 
 if [ "$s0" != "$s0a" ]; then
    echo r0 did not match ; exit 1;
 fi
+if [ "$s10" != "$s10a" ]; then
+   echo r10 did not match ; exit 1;
+fi
 if [ "$s1" != "$s1a" ]; then
    echo r1 did not match ; exit 1;
 fi
@@ -45,6 +61,7 @@ fi
 
 # failure status just means it has completed already, so ignore it.
 mdadm --wait /dev/md/r1 || true
+mdadm --wait /dev/md/r10 || true
 mdadm --wait /dev/md/r5 || true
 
 mdadm -Dbs > /var/tmp/mdadm.conf
@@ -54,22 +71,18 @@ mdadm -Ss
 # Now try to assemble using mdadm.conf
 mdadm -Asc /var/tmp/mdadm.conf
 check nosync  # This failed once. The raid5 was resyncing.
-
+udevadm settle
 mdadm -Dbs | sort > /tmp/mdadm.conf
 sort /var/tmp/mdadm.conf | diff /tmp/mdadm.conf -
 mdadm -Ss
 
 # and now assemble fully incrementally.
 for i in  $dev8 $dev9 $dev10 $dev11 $dev12
-do 
-  #./mdadm -I $i -vv 2>&1 | wc -l > /tmp/cnt
-  ./mdadm -I $i 2> /tmp/thing
-  wc -l < /tmp/thing > /tmp/cnt
-  # should find container and 2 devices, so 3 lines.
-  [ `cat /tmp/cnt` -eq 3 ]
+do
+   mdadm -I $i -c /var/tmp/mdadm.conf
 done
 check nosync
-
+udevadm settle
 mdadm -Dbs | sort > /tmp/mdadm.conf
 sort /var/tmp/mdadm.conf | diff /tmp/mdadm.conf -
 mdadm -Ss