]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
DDF tests: allow to run on systems without /dev/sda
authormwilck@arcor.de <mwilck@arcor.de>
Sat, 14 Sep 2013 20:47:10 +0000 (22:47 +0200)
committerNeilBrown <neilb@suse.de>
Wed, 16 Oct 2013 04:29:42 +0000 (15:29 +1100)
Some ddf tests scripts assume that /dev/sda is always present.
That's wrong e.g. on VMs. Use a more general approach.

Signed-off-by: NeilBrown <neilb@suse.de>
tests/10ddf-create
tests/10ddf-fail-two-spares
tests/env-ddf-template

index 50c85ae9dd8130732d491adde35993bf450817a7..2f7747cda67a118e1cf2b31f3d316ef583874f59 100644 (file)
@@ -9,6 +9,8 @@
 # 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 r5 -l5 -n5 /dev/md/ddf0 -z 5000
@@ -23,10 +25,10 @@ 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=/dev/sda of=/dev/md/r0 || true
-dd if=/dev/sda of=/dev/md/r10 || true
-dd if=/dev/sda of=/dev/md/r1 || true
-dd if=/dev/sda of=/dev/md/r5 || true
+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`
index cc2cbb416d1b15202cde4ccdbda650e199d6addb..fa6e2e8ceb5b4a0039be8547a8e2243fd00e22e9 100644 (file)
@@ -1,5 +1,6 @@
 # Simulate two disks failing shorty after each other
 . tests/env-ddf-template
+sda=$(get_rootdev) || exit 1
 tmp=$(mktemp /tmp/mdtest-XXXXXX)
 
 mdadm --zero-superblock $dev8 $dev9 $dev10 $dev11 $dev12 $dev13
@@ -13,8 +14,8 @@ mdadm -CR $member0 -l raid6 -n 4 $dev10 $dev11 $dev12 $dev13 -z 16384
 #          >/tmp/mdmon.txt 2>&1
 mdadm -CR $member1 -l raid10 -n 4 $dev10 $dev11 $dev12 $dev13 -z 16384
 
-dd if=/dev/sda of=$member0 bs=1M
-dd if=/dev/sda of=$member1 bs=1M skip=16
+dd if=$sda of=$member0 bs=1M
+dd if=$sda of=$member1 bs=1M skip=16
 
 check wait
 
index 1c1ca124729ca4edaf314aa3a5a4e97110426369..aa57fab4bf2745c63f46d46a63f1e2e22067c49b 100644 (file)
@@ -1,3 +1,12 @@
+get_rootdev() {
+    local dev=$(stat -c %D /)
+    local maj=$(expr $dev : '\(..\)')
+    local min=${dev#$maj}
+    local bd=/dev/$(basename $(readlink /sys/dev/block/$((0x$maj)):$((0x$min))))
+    [ -b $bd ] || exit 1
+    echo $bd
+}
+
 get_sysdir() {
     local mddev=$1
     [ -L $mddev ] && mddev=$(readlink -f $mddev)