]> git.ipfire.org Git - thirdparty/mdadm.git/blob - tests/env-08imsm-overlap
Provide a mdstat_ent to subarray helper
[thirdparty/mdadm.git] / tests / env-08imsm-overlap
1 imsm_check() {
2 case $1 in
3 container )
4 grep -s "$(((418 * $2)/2)) blocks super external:imsm" /proc/mdstat > /dev/null || {
5 echo >&2 "ERROR correctly formed container not found"; cat /proc/mdstat; exit 1;}
6 ;;
7 member )
8 member=$2
9 num_disks=$3
10 level=$4
11 size=$5
12 offset=$6
13 err=0
14
15 eval `stat -L -c "let major=0x%t; let minor=0x%T;" $member`
16 sysfs=/sys/dev/block/${major}:${minor}
17 if [ ! -f ${sysfs}/md/array_state ]; then
18 echo "member array $member not found" >&2
19 cat /proc/mdstat >&2
20 exit 1
21 fi
22 for i in `seq 0 $((num_disks-1))`
23 do
24 _offset=`cat ${sysfs}/md/rd${i}/offset`
25 if [ $offset -ne $((_offset/2)) ]; then
26 echo "offset mismatch expected $offset got $_offset" >&2
27 err=$((err+1))
28 fi
29 _size=`cat ${sysfs}/md/rd${i}/size`
30 if [ $size -ne $_size ]; then
31 echo "offset mismatch expected $size got $_size" >&2
32 err=$((err+1))
33 fi
34 done
35
36 if [ $err -gt 0 ]; then
37 echo "$member failed check" >&2
38 cat /proc/mdstat >&2
39 mdadm -E /dev/loop0 >&2
40 exit 1
41 fi
42 ;;
43 * ) echo >&2 ERROR unknown check $1 ; exit 1;
44 esac
45 }
46
47 setup_env() {
48 export IMSM_DEVNAME_AS_SERIAL=1
49 export IMSM_NO_PLATFORM=1
50 container=/dev/md/container
51 member0=/dev/md/vol0
52 member1=/dev/md/vol1
53 member2=/dev/md/vol2
54 member3=/dev/md/vol3
55 member4=/dev/md/vol4
56 }
57
58 reset_env() {
59 unset IMSM_DEVNAME_AS_SERIAL
60 unset IMSM_NO_PLATFORM
61 unset imsm_check
62 unset container
63 unset member0
64 unset member1
65 unset member2
66 unset member3
67 unset member4
68 }