summaryrefslogtreecommitdiff
path: root/tests/10ddf-fail-twice
blob: 042b77b2b2207bae05ecb384d7fc0b04f897341b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# sanity check array creation

ddf_check_hold() {
   if mdadm --remove $1 $2; then
       echo "$2 removal from $1 should have been blocked" >&2
       cat /proc/mdstat >&2
       mdadm -E $2
       exit 1
   fi
}

ddf_check_removal() {
   if ! mdadm --remove $1 $2 ; then
       echo "$2 removal from $1 should have succeeded" >&2
       cat /proc/mdstat >&2
       mdadm -E $2
       exit 1
   fi
}

. tests/env-ddf-template

num_disks=5
mdadm -CR $container -e ddf -n $num_disks $dev8 $dev9 $dev10 $dev11 $dev12
ddf_check container $num_disks

mdadm -CR $member0 -n 2 -l 1 $container
mdadm -CR $member1 -n 3 -l 5 $container

mdadm --wait $member1 $member0 || mdadm --wait $member1 $member0

mdadm $member0 --fail $dev11
mdadm $member1 --fail $dev9

mdadm $container --add $dev13

mdadm --wait $member1 $member0 || mdadm --wait $member1 $member0

{ grep -q 'external:/md127/1.*\[3/3\]' /proc/mdstat &&
  grep -q 'external:/md127/0.*\[2/1\]' /proc/mdstat; } || {
     echo unexpected states in /proc/mdstat
     cat /proc/mdstat
     mdadm -Ss
     exit 1
}

{ mdadm -E $dev10 | grep -q 'state\[0\] : Degraded, Consistent' &&
  mdadm -E $dev10 | grep -q 'state\[1\] : Optimal, Consistent'; } || {
     echo unexpected meta data state
     mdadm -E $dev10
     mdadm -Ss
     exit 1
}

mdadm -Ss
exit 0