]>
Commit | Line | Data |
---|---|---|
d2b9eb59 DW |
1 | # validate the prodigal member disk scenario i.e. a former container |
2 | # member is returned after having been rebuilt on another system | |
3cdcfda4 N |
3 | |
4 | ||
5 | imsm_check_hold() { | |
6 | if mdadm --remove $1 $2; then | |
7 | echo "$2 removal from $1 should have been blocked" >&2 | |
8 | cat /proc/mdstat >&2 | |
9 | mdadm -E $2 | |
10 | exit 1 | |
11 | fi | |
12 | } | |
13 | ||
14 | imsm_check_removal() { | |
15 | if ! mdadm --remove $1 $2 ; then | |
16 | echo "$2 removal from $1 should have succeeded" >&2 | |
17 | cat /proc/mdstat >&2 | |
18 | mdadm -E $2 | |
19 | exit 1 | |
20 | fi | |
21 | } | |
22 | ||
23 | export IMSM_DEVNAME_AS_SERIAL=1 | |
24 | export IMSM_TEST_OROM=1 | |
152b2231 | 25 | export IMSM_NO_PLATFORM=1 |
3cdcfda4 N |
26 | container=/dev/md/container |
27 | member=/dev/md/vol0 | |
28 | ||
29 | ||
d2b9eb59 DW |
30 | num_disks=4 |
31 | size=$((10*1024)) | |
32 | mdadm -CR $container -e imsm -n $num_disks $dev0 $dev1 $dev2 $dev3 | |
33 | mdadm -CR $member $dev0 $dev2 -n 2 -l 1 -z $size | |
34 | mdadm --wait $member | |
35 | mdadm -Ss | |
36 | ||
37 | # make dev0 and dev1 a new rebuild family | |
38 | mdadm -A $container $dev0 $dev1 | |
c61c4dd0 | 39 | mdadm -IR $container |
d2b9eb59 DW |
40 | mdadm --wait ${member}_0 |
41 | mdadm -Ss | |
42 | ||
43 | # make dev2 and dev3 a new rebuild family | |
44 | mdadm -A $container $dev2 $dev3 | |
c61c4dd0 | 45 | mdadm -IR $container |
d2b9eb59 DW |
46 | mdadm --wait ${member}_0 |
47 | mdadm -Ss | |
48 | ||
49 | # reassemble and make sure one of the families falls out | |
50 | mdadm -A $container $dev0 $dev1 $dev2 $dev3 | |
c61c4dd0 | 51 | mdadm -IR $container |
ae6c05ad | 52 | testdev ${member}_0 1 $size 64 |
d2b9eb59 DW |
53 | if mdadm --remove $container $dev0 ; then |
54 | # the dev[23] family won | |
55 | imsm_check_removal $container $dev1 | |
56 | imsm_check_hold $container $dev2 | |
57 | imsm_check_hold $container $dev3 | |
58 | else | |
59 | # the dev[01] family won | |
60 | imsm_check_hold $container $dev1 | |
61 | imsm_check_removal $container $dev2 | |
62 | imsm_check_removal $container $dev3 | |
63 | fi | |
64 | mdadm -Ss | |
65 | ||
66 | # reassemble with a new id for the dev[23] family | |
67 | mdadm -A $container $dev0 $dev1 | |
c61c4dd0 | 68 | mdadm -IR $container |
d2b9eb59 | 69 | mdadm -A ${container}2 $dev2 $dev3 --update=uuid |
c61c4dd0 | 70 | mdadm -IR ${container}2 |
d2b9eb59 | 71 | |
ae6c05ad N |
72 | testdev ${member}_0 1 $size 64 |
73 | testdev ${member}_1 1 $size 64 |