5 LUSTRE=${LUSTRE:-`dirname $0`/..}
6 LTESTDIR=${LTESTDIR:-$LUSTRE/../ltest}
7 PATH=$PATH:$LUSTRE/utils:$LUSTRE/tests
9 RLUSTRE=${RLUSTRE:-$LUSTRE}
12 . $LTESTDIR/functional/llite/common/common.sh
14 # Allow us to override the setup if we already have a mounted system by
15 # setting SETUP=" " and CLEANUP=" "
16 SETUP=${SETUP:-"setup"}
17 CLEANUP=${CLEANUP:-"cleanup"}
19 PDSH=${PDSH:-'pdsh -S -w'}
21 # XXX I wish all this stuff was in some default-config.sh somewhere
22 MDSNODE=${MDSNODE:-mdev6}
23 OSTNODE=${OSTNODE:-mdev7}
24 CLIENT=${CLIENT:-mdev8}
25 NETWORKTYPE=${NETWORKTYPE:-tcp}
26 MOUNTPT=${MOUNTPT:-/mnt/lustre}
27 CONFIG=${CONFIG:-recovery-small.xml}
28 MDSDEV=${MDSDEV:-/tmp/mds-`hostname`}
29 MDSSIZE=${MDSSIZE:-100000}
30 OSTDEV=${OSTDEV:-/tmp/ost-`hostname`}
31 OSTSIZE=${OSTSIZE:-100000}
32 UPCALL=${UPCALL:-$RPWD/recovery-small-upcall.sh}
33 FSTYPE=${FSTYPE:-ext3}
36 $PDSH $MDSNODE "PATH=\$PATH:$RLUSTRE/utils:$RLUSTRE/tests; cd $RPWD; $@" || exit $?
40 $PDSH $CLIENT "PATH=\$PATH:$RLUSTRE/utils:$RLUSTRE/tests; cd $RPWD; $@" || exit $?
44 $PDSH $OSTNODE "PATH=\$PATH:$RLUSTRE/utils:$RLUSTRE/tests; cd $RPWD; $@" || exit $?
48 # OBD_FAIL_MDS_ALL_REQUEST_NET
49 do_mds "echo 0x121 > /proc/sys/lustre/fail_loc"
51 do_mds "echo 0 > /proc/sys/lustre/fail_loc"
55 # OBD_FAIL_MDS_ALL_REPLY_NET
56 do_mds "echo 0x120 > /proc/sys/lustre/fail_loc"
58 do_mds "echo 0 > /proc/sys/lustre/fail_loc"
62 #define OBD_FAIL_OST_BRW_PAUSE_BULK 0x214
63 do_ost "echo 0x214 > /proc/sys/lustre/fail_loc"
66 do_ost "echo 0 > /proc/sys/lustre/fail_loc"
70 for NODE in $CLIENT $MDSNODE $OSTNODE; do
71 lmc -m $CONFIG --add net --node $NODE --nid `h2$NETWORKTYPE $NODE` \
72 --nettype $NETWORKTYPE || exit 4
74 lmc -m $CONFIG --add mds --node $MDSNODE --mds mds1 --dev $MDSDEV \
75 --size $MDSSIZE --fstype $FSTYPE || exit 5
76 lmc -m $CONFIG --add ost --node $OSTNODE --ost ost1 --dev $OSTDEV \
77 --size $OSTSIZE --fstype $FSTYPE || exit 6
78 lmc -m $CONFIG --add mtpt --node $CLIENT --path $MOUNTPT --mds mds1 \
83 do_mds "lconf $@ $CONFIG"
87 do_mds "lconf $@ --cleanup $CONFIG"
91 do_ost "lconf $@ $CONFIG"
95 do_ost "lconf $@ --cleanup $CONFIG"
99 do_client "lconf $@ $CONFIG"
103 do_client "lconf $@ --cleanup $CONFIG"
107 start_mds --timeout=$TIMEOUT ${REFORMAT}
108 start_ost --timeout=$TIMEOUT ${REFORMAT}
109 # XXX we should write our own upcall, when we move this somewhere better.
110 mount_client --timeout=${TIMEOUT} \
111 --lustre_upcall=$UPCALL
115 do_mds "echo 0 > /proc/sys/lustre/fail_loc"
116 unmount_client $@ || true
117 shutdown_mds $@ || true
118 shutdown_ost $@ || true
123 do_mds 'echo -e "device \$mds1\\nprobe\\nnotransno\\nreadonly" | lctl'
128 do_client "df -h $MOUNTPT" # trigger failover, if we haven't already
131 if [ ! -z "$ONLY" ]; then
138 REFORMAT=--reformat $SETUP
141 drop_request "mcreate /mnt/lustre/1"
142 drop_reply "mcreate /mnt/lustre/2"
143 # replay "mcreate /mnt/lustre/3"
145 drop_request "tchmod 111 /mnt/lustre/2"
146 drop_reply "tchmod 666 /mnt/lustre/2"
147 # replay "tchmod 444 /mnt/lustre/2"
149 drop_request "statone /mnt/lustre/2"
150 drop_reply "statone /mnt/lustre/2"
151 # replay "statone /mnt/lustre/2"
153 do_client "cp /etc/resolv.conf /mnt/lustre/resolv.conf"
154 drop_request "cat /mnt/lustre/resolv.conf > /dev/null"
155 drop_reply "cat /mnt/lustre/resolv.conf > /dev/null"
157 drop_request "mv /mnt/lustre/resolv.conf /mnt/lustre/renamed"
158 drop_reply "mv /mnt/lustre/renamed /mnt/lustre/renamed-again"
160 drop_request "mlink /mnt/lustre/renamed-again /mnt/lustre/link1"
161 drop_reply "mlink /mnt/lustre/renamed-again /mnt/lustre/link2"
163 drop_request "munlink /mnt/lustre/link1"
164 drop_reply "munlink /mnt/lustre/link2"
167 drop_reply "touch /mnt/lustre/renamed"