]> git.ipfire.org Git - thirdparty/mdadm.git/blame - tests/10ddf-create-fail-rebuild
mdadm: improve the dlm locking mechanism for clustered raid
[thirdparty/mdadm.git] / tests / 10ddf-create-fail-rebuild
CommitLineData
08b0ef8e
MW
1# sanity check array creation
2
3ddf_check_hold() {
4 if mdadm --remove $1 $2; then
5 echo "$2 removal from $1 should have been blocked" >&2
6 cat /proc/mdstat >&2
7 mdadm -E $2
8 exit 1
9 fi
10}
11
12ddf_check_removal() {
13 if ! mdadm --remove $1 $2 ; then
14 echo "$2 removal from $1 should have succeeded" >&2
15 cat /proc/mdstat >&2
16 mdadm -E $2
17 exit 1
18 fi
19}
20
21. tests/env-ddf-template
22
23num_disks=2
24mdadm -CR $container -e ddf -n $num_disks $dev8 $dev9
25ddf_check container $num_disks
26
27# RAID0 + RAID1
28size=9000
29level=0
30chunk=64
31offset=0
32layout=0
33mdadm -CR $member0 $dev8 $dev9 -n $num_disks -l $level -z $size -c $chunk
34ddf_check member $member0 $num_disks $level $size $((size*2)) $offset $chunk $layout
35testdev $member0 $num_disks $size $chunk
36
37offset=$(((size & ~(chunk - 1))))
38size=4000
39level=1
40chunk=0
41mdadm -CR $member1 $dev8 $dev9 -n $num_disks -l $level -z $size
42ddf_check member $member1 $num_disks $level $size $size $offset $chunk $layout
43testdev $member1 1 $size 1
44check wait
45
46mdadm -Ss
47
48# RAID10 + RAID5
49num_disks=4
50mdadm -CR $container -e ddf -n $num_disks $dev8 $dev9 $dev10 $dev11
51ddf_check container $num_disks
52
53size=9000
54level=10
55chunk=64
56offset=0
57layout=2
58mdadm -CR $member0 $dev8 $dev9 $dev10 $dev11 -n $num_disks -l $level -z $size -c $chunk
59ddf_check member $member0 $num_disks $level $size $((size*2)) $offset $chunk $layout
60testdev $member0 $((num_disks-2)) $size $chunk
61
62offset=$(((size & ~(chunk - 1))))
63size=4000
64level=5
65mdadm -CR $member1 $dev8 $dev9 $dev10 $dev11 -n $num_disks -l $level -z $size -c $chunk
66ddf_check member $member1 $num_disks $level $size $((size*3)) $offset $chunk $layout
67testdev $member1 $((num_disks-1)) $size $chunk
68check wait
69
70# FAIL / REBUILD
71ddf_check_hold $container $dev8
72mdadm --fail $member0 $dev8
3c899cab 73mdadm --wait-clean --scan || true
08b0ef8e
MW
74ddf_check_removal $container $dev8
75mdadm --add $container $dev12
76check wait
77ddf_check_hold $container $dev12