]> git.ipfire.org Git - thirdparty/mdadm.git/blob - tests/10ddf-fail-stop-readd
mdadm/tests: add one test case for failfast of raid1
[thirdparty/mdadm.git] / tests / 10ddf-fail-stop-readd
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 # Write to the array
14 mke2fs -F $member0
15 check wait
16
17 set -- $(get_raiddisks $member0)
18 fail0=$1
19 mdadm $member0 --fail $fail0
20
21 sleep 1
22 mdadm $container --remove $fail0
23
24 set -- $(get_raiddisks $member0)
25 case $1 in MISSING) shift;; esac
26 good0=$1
27
28 mdadm -Ss
29
30 sleep 1
31 # Now simulate incremental assembly
32 mdadm -I $good0
33 mdadm -IRs || true
34
35 # Write to the array
36 mke2fs -F $member0
37
38 # We re-add the disk now
39 mdadm $container --add $fail0
40
41 sleep 1
42 mdadm --wait $member0 || true
43
44 ret=0
45 set -- $(get_raiddisks $member0)
46 case $1:$2 in
47 $dev8:$dev9|$dev9:$dev8);;
48 *) echo ERROR: bad raid disks "$@"; ret=1;;
49 esac
50
51 mdadm -Ss
52 for x in $@; do
53 mdadm -E $x >$tmp
54 if ! grep -q 'state\[0\] : Optimal, Consistent' $tmp; then
55 echo ERROR: member 0 should be optimal in meta data on $x
56 ret=1
57 fi
58 done
59
60 rm -f $tmp
61 if [ $ret -ne 0 ]; then
62 mdadm -E $dev8
63 mdadm -E $dev9
64 fi
65
66 [ $ret -eq 0 ]