]> git.ipfire.org Git - thirdparty/mdadm.git/blob - tests/10ddf-create-fail-rebuild
Free map to avoid resource leak issues
[thirdparty/mdadm.git] / tests / 10ddf-create-fail-rebuild
1 # sanity check array creation
2
3 ddf_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
12 ddf_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
23 num_disks=2
24 mdadm -CR $container -e ddf -n $num_disks $dev8 $dev9
25 ddf_check container $num_disks
26
27 # RAID0 + RAID1
28 size=9000
29 level=0
30 chunk=64
31 offset=0
32 layout=0
33 mdadm -CR $member0 $dev8 $dev9 -n $num_disks -l $level -z $size -c $chunk
34 ddf_check member $member0 $num_disks $level $size $((size*2)) $offset $chunk $layout
35 testdev $member0 $num_disks $size $chunk
36
37 offset=$(((size & ~(chunk - 1))))
38 size=4000
39 level=1
40 chunk=0
41 mdadm -CR $member1 $dev8 $dev9 -n $num_disks -l $level -z $size
42 ddf_check member $member1 $num_disks $level $size $size $offset $chunk $layout
43 testdev $member1 1 $size 1
44 check wait
45
46 mdadm -Ss
47
48 # RAID10 + RAID5
49 num_disks=4
50 mdadm -CR $container -e ddf -n $num_disks $dev8 $dev9 $dev10 $dev11
51 ddf_check container $num_disks
52
53 size=9000
54 level=10
55 chunk=64
56 offset=0
57 layout=2
58 mdadm -CR $member0 $dev8 $dev9 $dev10 $dev11 -n $num_disks -l $level -z $size -c $chunk
59 ddf_check member $member0 $num_disks $level $size $((size*2)) $offset $chunk $layout
60 testdev $member0 $((num_disks-2)) $size $chunk
61
62 offset=$(((size & ~(chunk - 1))))
63 size=4000
64 level=5
65 mdadm -CR $member1 $dev8 $dev9 $dev10 $dev11 -n $num_disks -l $level -z $size -c $chunk
66 ddf_check member $member1 $num_disks $level $size $((size*3)) $offset $chunk $layout
67 testdev $member1 $((num_disks-1)) $size $chunk
68 check wait
69
70 # FAIL / REBUILD
71 ddf_check_hold $container $dev8
72 mdadm --fail $member0 $dev8
73 mdadm --wait-clean --scan || true
74 ddf_check_removal $container $dev8
75 mdadm --add $container $dev12
76 check wait
77 ddf_check_hold $container $dev12