]> git.ipfire.org Git - thirdparty/mdadm.git/blame - tests/10ddf-geometry
tests: add test that DDF marks missing devices as failed on assembly.
[thirdparty/mdadm.git] / tests / 10ddf-geometry
CommitLineData
5c416845 1#
2# Test various RAID geometries, creation and deletion of subarrays
3#
4
5assert_fail() {
6 if mdadm "$@"; then
7 echo mdadm "$@" must fail
8 return 1
9 else
10 return 0
11 fi
12}
13
14assert_kill() {
15 local dev=$1 n=$2
16 mdadm -S $dev
17 mdadm --kill-subarray=$n /dev/md/ddf0
18 if mdadm -Dbs | grep -q $dev; then
19 echo >&2 $dev should be deleted
20 return 1
21 fi
22 return 0
23}
24
25set -e
26mdadm -CR /dev/md/ddf0 -e ddf -n 6 $dev8 $dev9 $dev10 $dev11 $dev12 $dev13
27
28# RAID1 geometries
29# Use different sizes to make offset calculation harder
30mdadm -CR l1s -l1 -n2 /dev/md/ddf0 -z 8000
31mdadm -CR l1m -l1 -n3 $dev8 $dev9 $dev10 -z 10000
32assert_fail -CR badl1 -l1 -n4 /dev/md/ddf0
33
34# RAID10 geometries
35assert_fail -CR badl10 -l10 -n3 /dev/md/ddf0
36assert_fail -CR badl10 -l10 -n5 /dev/md/ddf0
37assert_fail -CR badl10 -l10 -n4 -pn3 /dev/md/ddf0
38mdadm -CR l10_2 -l10 -n6 -pn2 /dev/md/ddf0 -z 5000
39mdadm -CR l10_3 -l10 -n6 -pn3 /dev/md/ddf0 -z 5000
40
41assert_fail -CR l10_2 -l10 -n6 -pn2 /dev/md/ddf0 -z 5000
42assert_kill /dev/md/l10_2 2
43# gone now, must be able to create it again
44mdadm -CR l10_2 -l10 -n6 -pn2 /dev/md/ddf0 -z 5000
45
46# Now stop and reassemble
47mdadm -Ss
48mdadm -A /dev/md/ddf0 $dev8 $dev9 $dev10 $dev11 $dev12 $dev13
49
50# Same as above, on inactive container
51assert_fail -CR l10_3 -l10 -n6 -pn2 /dev/md/ddf0 -z 5000
52# Kill subarray without having started anything (no mdmon)
53mdadm --kill-subarray=3 /dev/md/ddf0
54mdadm -I /dev/md/ddf0
55mdadm -CR l10_3 -l10 -n6 -pn3 /dev/md/ddf0 -z 5000
56
57assert_kill /dev/md/l10_2 2
58assert_kill /dev/md/l10_3 3
59
60# RAID5 geometries
61mdadm -CR l5la -l5 -n3 --layout=ddf-N-restart /dev/md/ddf0 -z 5000
62mdadm -CR l5ra -l5 -n3 --layout=ddf-zero-restart /dev/md/ddf0 -z 5000
63mdadm -CR l5ls -l5 -n3 --layout=ddf-N-continue /dev/md/ddf0 -z 5000
64assert_fail -CR l5rs -l5 -n3 -prs /dev/md/ddf0 -z 5000
65
66# Stop and reassemble
67mdadm -Ss
68mdadm -A /dev/md/ddf0 $dev8 $dev9 $dev10 $dev11 $dev12 $dev13
69mdadm -I /dev/md/ddf0
70
71assert_kill /dev/md/l5la 2
72assert_kill /dev/md/l5ls 4
73assert_kill /dev/md/l5ra 3
74
75# RAID6 geometries
76assert_fail -CR l6la -l6 -n3 -pla /dev/md/ddf0 -z 5000
77assert_fail -CR l6rs -l5 -n4 -prs /dev/md/ddf0 -z 5000
78mdadm -CR l6la -l6 -n4 --layout=ddf-N-restart /dev/md/ddf0 -z 5000
79mdadm -CR l6ra -l6 -n4 --layout=ddf-zero-restart $dev8 $dev9 $dev10 $dev11 -z 5000
80mdadm -CR l6ls -l6 -n4 --layout=ddf-N-continue $dev13 $dev8 $dev9 $dev12 -z 5000
81
82mdadm -Ss