5 LUSTRE=${LUSTRE:-`dirname $0`/..}
6 . $LUSTRE/tests/test-framework.sh
10 . ${CONFIG:=$LUSTRE/tests/cfg/local.sh}
15 # Allow us to override the setup if we already have a mounted system by
16 # setting SETUP=" " and CLEANUP=" "
17 SETUP=${SETUP:-"setup"}
18 CLEANUP=${CLEANUP:-"cleanup"}
23 add_mds mds --dev $MDSDEV --size $MDSSIZE
24 add_lov lov1 mds --stripe_sz $STRIPE_BYTES\
25 --stripe_cnt $STRIPES_PER_OBJ --stripe_pattern 0
26 add_ost ost --lov lov1 --dev $OSTDEV --size $OSTSIZE
27 add_ost ost2 --lov lov1 --dev ${OSTDEV}-2 --size $OSTSIZE
28 add_client client mds --lov lov1 --path $MOUNT
33 start ost --reformat $OSTLCONFARGS
34 start ost2 --reformat $OSTLCONFARGS
35 [ "$DAEMONFILE" ] && $LCTL debug_daemon start $DAEMONFILE $DAEMONSIZE
36 start mds $MDSLCONFARGS --reformat
42 stop mds ${FORCE} $MDSLCONFARGS
43 stop ost2 ${FORCE} --dump cleanup.log
44 stop ost ${FORCE} --dump cleanup.log
49 do_mds 'echo -e "device \$mds1\\nprobe\\nnotransno\\nreadonly" | lctl'
54 do_client "df -h $MOUNT" # trigger failover, if we haven't already
57 if [ ! -z "$EVAL" ]; then
62 REFORMAT=--reformat $SETUP
66 drop_request "mcreate $MOUNT/1" || return 1
67 drop_reply "mcreate $MOUNT/2" || return 2
69 run_test 1 "mcreate: drop req, drop rep"
72 drop_request "tchmod 111 $MOUNT/2" || return 1
73 drop_reply "tchmod 666 $MOUNT/2" || return 2
75 run_test 2 "chmod: drop req, drop rep"
78 drop_request "statone $MOUNT/2" || return 1
79 drop_reply "statone $MOUNT/2" || return 2
81 run_test 3 "stat: drop req, drop rep"
84 do_facet client "cp /etc/resolv.conf $MOUNT/resolv.conf" || return 1
85 drop_request "cat $MOUNT/resolv.conf > /dev/null" || return 2
86 drop_reply "cat $MOUNT/resolv.conf > /dev/null" || return 3
88 run_test 4 "open: drop req, drop rep"
91 drop_request "mv $MOUNT/resolv.conf $MOUNT/renamed" || return 1
92 drop_reply "mv $MOUNT/renamed $MOUNT/renamed-again" || return 2
94 run_test 5 "rename: drop req, drop rep"
97 drop_request "mlink $MOUNT/renamed-again $MOUNT/link1" || return 1
98 drop_reply "mlink $MOUNT/renamed-again $MOUNT/link2" || return 2
100 run_test 6 "link: drop req, drop rep"
103 drop_request "munlink $MOUNT/link1" || return 1
104 drop_reply "munlink $MOUNT/link2" || return 2
106 run_test 7 "unlink: drop req, drop rep"
111 drop_reply "touch $MOUNT/renamed" || return 1
113 run_test 8 "touch: drop rep (bug 1423)"
118 pause_bulk "cp /etc/profile $MOUNT" || return 1
119 do_facet client "cp /etc/termcap $MOUNT" || return 2
120 do_facet client "sync"
121 do_facet client "rm $MOUNT/termcap $MOUNT/profile" || return 3
123 run_test 9 "pause bulk on OST (bug 1420)"
127 do_facet client mcreate $MOUNT/f10 || return 1
128 drop_bl_callback "chmod 0777 $MOUNT/f10" || return 2
129 # wait for the mds to evict the client
130 #echo "sleep $(($TIMEOUT*2))"
131 #sleep $(($TIMEOUT*2))
132 do_facet client touch $MOUNT/f10 || echo "touch failed, evicted"
133 do_facet client checkstat -v -p 0777 $MOUNT/f10 || return 3
134 do_facet client "munlink $MOUNT/f10"
136 run_test 10 "finish request on server after client eviction (bug 1521)"
139 # wake up a thead waiting for completion after eviction
141 do_facet client multiop $MOUNT/$tfile Ow || return 1
142 do_facet client multiop $MOUNT/$tfile or || return 2
146 do_facet client multiop $MOUNT/$tfile or || return 3
147 drop_bl_callback multiop $MOUNT/$tfile Ow ||
148 echo "client evicted, as expected"
150 do_facet client unlink $MOUNT/$tfile || return 4
152 run_test 11 "wake up a thead waiting for completion after eviction (b=2460)"