]> git.ipfire.org Git - thirdparty/mdadm.git/blob - tests/10ddf-fail-readd-readonly
Merge https://github.com/makelinux/mdadm
[thirdparty/mdadm.git] / tests / 10ddf-fail-readd-readonly
1 # Simple fail / re-add test
2 . tests/env-ddf-template
3
4 tmp=$(mktemp /tmp/mdtest-XXXXXX)
5 rm -f $tmp
6
7 mdadm --zero-superblock $dev8 $dev9
8 mdadm -CR $container -e ddf -l container -n 2 $dev8 $dev9
9
10 mdadm -CR $member0 -l raid1 -n 2 $container
11 #$dir/mdadm -CR $member0 -l raid1 -n 2 $container >/tmp/mdmon.txt 2>&1
12
13 check wait
14
15 set -- $(get_raiddisks $member0)
16 fail0=$1
17 mdadm $member0 --fail $fail0
18
19 sleep 1
20 set -- $(get_raiddisks $member0)
21 case $1 in MISSING) shift;; esac
22 good0=$1
23
24 # Check that the meta data now show one disk as failed
25 ret=0
26 for x in $@; do
27 mdadm -E $x >$tmp
28 if ! grep -q 'state\[0\] : Degraded, Consistent' $tmp; then
29 echo ERROR: member 0 should be degraded in meta data on $x
30 ret=1
31 fi
32 phys=$(grep $x $tmp)
33 case $x:$phys in
34 $fail0:*active/Offline,\ Failed);;
35 $good0:*active/Online);;
36 *) echo ERROR: wrong phys disk state for $x
37 ret=1
38 ;;
39 esac
40 done
41
42 mdadm $container --remove $fail0
43
44 # We re-add the disk now
45 mdadm $container --add $fail0
46
47 sleep 1
48 mdadm --wait $member0 || true
49
50 set -- $(get_raiddisks $member0)
51 case $1:$2 in
52 $dev8:$dev9|$dev9:$dev8);;
53 *) echo ERROR: bad raid disks "$@"; ret=1;;
54 esac
55
56 mdadm -Ss
57 for x in $@; do
58 mdadm -E $x >$tmp
59 if ! grep -q 'state\[0\] : Optimal, Consistent' $tmp; then
60 echo ERROR: member 0 should be optimal in meta data on $x
61 ret=1
62 fi
63 done
64
65 rm -f $tmp
66 if [ $ret -ne 0 ]; then
67 mdadm -E $dev8
68 mdadm -E $dev9
69 fi
70
71 [ $ret -eq 0 ]