]>
Commit | Line | Data |
---|---|---|
cceebc67 DW |
1 | # sanity check array creation |
2 | ||
3cdcfda4 N |
3 | imsm_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 | imsm_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 | ||
67480d75 | 21 | . tests/env-imsm-template |
3cdcfda4 | 22 | |
6636f0ef N |
23 | # IMSM rounds to multiples of one mebibyte - 1024K |
24 | DEV_ROUND_K=1024 | |
25 | ||
cceebc67 DW |
26 | num_disks=2 |
27 | mdadm -CR $container -e imsm -n $num_disks $dev0 $dev1 | |
28 | imsm_check container $num_disks | |
29 | ||
30 | # RAID0 + RAID1 | |
17f7da2f | 31 | size=9000 |
cceebc67 DW |
32 | level=0 |
33 | chunk=64 | |
34 | offset=0 | |
35 | mdadm -CR $member0 $dev0 $dev1 -n $num_disks -l $level -z $size -c $chunk | |
67480d75 | 36 | imsm_check member $member0 $num_disks $level $size $((size*2)) $offset $chunk |
cceebc67 DW |
37 | testdev $member0 $num_disks $size $chunk |
38 | ||
39 | offset=$(((size & ~(chunk - 1)) + 2048)) | |
17f7da2f | 40 | size=4000 |
cceebc67 DW |
41 | level=1 |
42 | chunk=0 | |
43 | mdadm -CR $member1 $dev0 $dev1 -n $num_disks -l $level -z $size | |
67480d75 | 44 | imsm_check member $member1 $num_disks $level $size $size $offset $chunk |
ae6c05ad | 45 | testdev $member1 1 $size 64 |
cceebc67 DW |
46 | check wait |
47 | ||
48 | mdadm -Ss | |
49 | ||
50 | # RAID10 + RAID5 | |
51 | num_disks=4 | |
52 | mdadm -CR $container -e imsm -n $num_disks $dev0 $dev1 $dev2 $dev3 | |
53 | imsm_check container $num_disks | |
54 | ||
17f7da2f | 55 | size=9000 |
cceebc67 DW |
56 | level=10 |
57 | chunk=64 | |
58 | offset=0 | |
59 | mdadm -CR $member0 $dev0 $dev1 $dev2 $dev3 -n $num_disks -l $level -z $size -c $chunk | |
67480d75 | 60 | imsm_check member $member0 $num_disks $level $size $((size*2)) $offset $chunk |
cceebc67 DW |
61 | testdev $member0 $((num_disks-2)) $size $chunk |
62 | ||
63 | offset=$(((size & ~(chunk - 1)) + 2048)) | |
17f7da2f | 64 | size=4000 |
cceebc67 DW |
65 | level=5 |
66 | mdadm -CR $member1 $dev0 $dev1 $dev2 $dev3 -n $num_disks -l $level -z $size -c $chunk | |
67480d75 | 67 | imsm_check member $member1 $num_disks $level $size $((size*3)) $offset $chunk |
cceebc67 DW |
68 | testdev $member1 $((num_disks-1)) $size $chunk |
69 | check wait | |
70 | ||
71 | # FAIL / REBUILD | |
72 | imsm_check_hold $container $dev0 | |
73 | mdadm --fail $member0 $dev0 | |
3c899cab | 74 | mdadm --wait-clean --scan || true |
cceebc67 DW |
75 | imsm_check_removal $container $dev0 |
76 | mdadm --add $container $dev4 | |
77 | check wait | |
78 | imsm_check_hold $container $dev4 |