summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2009-10-12 16:57:55 +1100
committerNeilBrown <neilb@suse.de>2009-10-12 16:57:55 +1100
commit471ac41e4690a9138520ec25f58b898cc34ba2c3 (patch)
tree0771104941bde14c6084e6dc58d05ccd8a7e91e4 /tests
parentcc50ccdc2960d9feb322002f6ebfd8fba950b79f (diff)
downloadmdadm-471ac41e4690a9138520ec25f58b898cc34ba2c3.tar.gz
mdadm-471ac41e4690a9138520ec25f58b898cc34ba2c3.tar.xz
mdadm-471ac41e4690a9138520ec25f58b898cc34ba2c3.zip
test changelevel: add tests for changing degraded arrays.
Signed-off-by: NeilBrown <neilb@suse.de>
Diffstat (limited to 'tests')
-rw-r--r--tests/07changelevels56
1 files changed, 56 insertions, 0 deletions
diff --git a/tests/07changelevels b/tests/07changelevels
index 0355b52..af27918 100644
--- a/tests/07changelevels
+++ b/tests/07changelevels
@@ -19,6 +19,27 @@ dotest() {
dd if=/tmp/RandFile of=$md0
}
+checkgeo() {
+ # check the geometry of an array
+ # level raid_disks chunk_size layout
+ dev=$1
+ shift
+ sleep 0.5
+ check wait
+ for attr in level raid_disks chunk_size layout
+ do
+ if [ $# -gt 0 ] ; then
+ val=$1
+ shift
+ if [ " `cat /sys/block/$dev/md/$attr`" != " $val" ]
+ then echo "$attr doesn't match for $dev"
+ exit 1
+ fi
+ fi
+ done
+}
+
+
bu=/tmp/md-test-backup
rm -f $bu
mdadm -CR $md0 -l1 -n2 -x1 $dev0 $dev1 $dev2
@@ -49,3 +70,38 @@ dotest 1
mdadm -G --level=1 $md0
dotest 1
+
+# now repeat that last few steps only with a degraded array.
+mdadm -S $md0
+mdadm -CR $md0 -l6 -n5 $dev0 $dev1 $dev2 $dev3 $dev4
+dd if=/tmp/RandFile of=$md0
+dotest 3
+
+mdadm $md0 --fail $dev0
+
+mdadm -G /dev/md0 --array-size $[mdsize0*2]
+mdadm -G $md0 -n4 --backup-file $bu
+dotest 2
+mdadm $md0 --fail $dev4
+
+mdadm $md0 --fail $dev3
+# now double-degraded.
+# switch layout to a DDF layout and back to make sure that works.
+
+mdadm -G /dev/md0 --layout=ddf-N-continue --backup-file $bu
+checkgeo md0 raid6 4 $[64*1024] 10
+dotest 2
+mdadm -G /dev/md0 --layout=ra --backup-file $bu
+checkgeo md0 raid6 4 $[64*1024] 1
+dotest 2
+
+mdadm -G $md0 -l5 --backup-file $bu
+dotest 2
+
+mdadm -G /dev/md0 --array-size $mdsize0
+mdadm -G $md0 -n2 --backup-file $bu
+dotest 1
+mdadm $md0 --fail $dev2
+
+mdadm -G --level=1 $md0
+dotest 1