]>
Commit | Line | Data |
---|---|---|
5c416845 | 1 | # |
2 | # Test various RAID geometries, creation and deletion of subarrays | |
3 | # | |
4 | ||
5 | assert_fail() { | |
6 | if mdadm "$@"; then | |
7 | echo mdadm "$@" must fail | |
8 | return 1 | |
9 | else | |
10 | return 0 | |
11 | fi | |
12 | } | |
13 | ||
14 | assert_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 | ||
25 | set -e | |
26 | mdadm -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 | |
30 | mdadm -CR l1s -l1 -n2 /dev/md/ddf0 -z 8000 | |
31 | mdadm -CR l1m -l1 -n3 $dev8 $dev9 $dev10 -z 10000 | |
32 | assert_fail -CR badl1 -l1 -n4 /dev/md/ddf0 | |
33 | ||
34 | # RAID10 geometries | |
35 | assert_fail -CR badl10 -l10 -n3 /dev/md/ddf0 | |
36 | assert_fail -CR badl10 -l10 -n5 /dev/md/ddf0 | |
37 | assert_fail -CR badl10 -l10 -n4 -pn3 /dev/md/ddf0 | |
38 | mdadm -CR l10_2 -l10 -n6 -pn2 /dev/md/ddf0 -z 5000 | |
39 | mdadm -CR l10_3 -l10 -n6 -pn3 /dev/md/ddf0 -z 5000 | |
40 | ||
41 | assert_fail -CR l10_2 -l10 -n6 -pn2 /dev/md/ddf0 -z 5000 | |
42 | assert_kill /dev/md/l10_2 2 | |
43 | # gone now, must be able to create it again | |
44 | mdadm -CR l10_2 -l10 -n6 -pn2 /dev/md/ddf0 -z 5000 | |
45 | ||
46 | # Now stop and reassemble | |
47 | mdadm -Ss | |
48 | mdadm -A /dev/md/ddf0 $dev8 $dev9 $dev10 $dev11 $dev12 $dev13 | |
49 | ||
50 | # Same as above, on inactive container | |
51 | assert_fail -CR l10_3 -l10 -n6 -pn2 /dev/md/ddf0 -z 5000 | |
52 | # Kill subarray without having started anything (no mdmon) | |
53 | mdadm --kill-subarray=3 /dev/md/ddf0 | |
54 | mdadm -I /dev/md/ddf0 | |
55 | mdadm -CR l10_3 -l10 -n6 -pn3 /dev/md/ddf0 -z 5000 | |
56 | ||
57 | assert_kill /dev/md/l10_2 2 | |
58 | assert_kill /dev/md/l10_3 3 | |
59 | ||
60 | # RAID5 geometries | |
61 | mdadm -CR l5la -l5 -n3 --layout=ddf-N-restart /dev/md/ddf0 -z 5000 | |
62 | mdadm -CR l5ra -l5 -n3 --layout=ddf-zero-restart /dev/md/ddf0 -z 5000 | |
63 | mdadm -CR l5ls -l5 -n3 --layout=ddf-N-continue /dev/md/ddf0 -z 5000 | |
64 | assert_fail -CR l5rs -l5 -n3 -prs /dev/md/ddf0 -z 5000 | |
65 | ||
66 | # Stop and reassemble | |
67 | mdadm -Ss | |
68 | mdadm -A /dev/md/ddf0 $dev8 $dev9 $dev10 $dev11 $dev12 $dev13 | |
69 | mdadm -I /dev/md/ddf0 | |
70 | ||
71 | assert_kill /dev/md/l5la 2 | |
72 | assert_kill /dev/md/l5ls 4 | |
73 | assert_kill /dev/md/l5ra 3 | |
74 | ||
75 | # RAID6 geometries | |
76 | assert_fail -CR l6la -l6 -n3 -pla /dev/md/ddf0 -z 5000 | |
77 | assert_fail -CR l6rs -l5 -n4 -prs /dev/md/ddf0 -z 5000 | |
78 | mdadm -CR l6la -l6 -n4 --layout=ddf-N-restart /dev/md/ddf0 -z 5000 | |
79 | mdadm -CR l6ra -l6 -n4 --layout=ddf-zero-restart $dev8 $dev9 $dev10 $dev11 -z 5000 | |
80 | mdadm -CR l6ls -l6 -n4 --layout=ddf-N-continue $dev13 $dev8 $dev9 $dev12 -z 5000 | |
81 | ||
82 | mdadm -Ss |