Whamcloud - gitweb
b=2460
[fs/lustre-release.git] / lustre / tests / recovery-small.sh
1 #!/bin/sh
2
3 set -e
4
5 LUSTRE=${LUSTRE:-`dirname $0`/..}
6 . $LUSTRE/tests/test-framework.sh
7
8 init_test_env $@
9
10 . ${CONFIG:=$LUSTRE/tests/cfg/local.sh}
11
12 build_test_filter
13
14
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"}
19
20
21 make_config() {
22     rm -f $XMLCONFIG
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
29 }
30
31 setup() {
32     make_config
33     start ost --reformat $OSTLCONFARGS 
34     start ost2 --reformat $OSTLCONFARGS 
35     [ "$DAEMONFILE" ] && $LCTL debug_daemon start $DAEMONFILE $DAEMONSIZE
36     start mds $MDSLCONFARGS --reformat
37     zconf_mount $MOUNT
38 }
39
40 cleanup() {
41     zconf_umount $MOUNT
42     stop mds ${FORCE} $MDSLCONFARGS
43     stop ost2 ${FORCE} --dump cleanup.log
44     stop ost ${FORCE} --dump cleanup.log
45 }
46
47 replay() {
48     do_mds "sync"
49     do_mds 'echo -e "device \$mds1\\nprobe\\nnotransno\\nreadonly" | lctl'
50     do_client "$1" &
51     shutdown_mds -f
52     start_mds
53     wait
54     do_client "df -h $MOUNT" # trigger failover, if we haven't already
55 }
56
57 if [ ! -z "$EVAL" ]; then
58     eval "$EVAL"
59     exit $?
60 fi
61
62 REFORMAT=--reformat $SETUP
63 unset REFORMAT
64
65 test_1() {
66     drop_request "mcreate $MOUNT/1"  || return 1
67     drop_reply "mcreate $MOUNT/2"    || return 2
68 }
69 run_test 1 "mcreate: drop req, drop rep"
70
71 test_2() {
72     drop_request "tchmod 111 $MOUNT/2"  || return 1
73     drop_reply "tchmod 666 $MOUNT/2"    || return 2
74 }
75 run_test 2 "chmod: drop req, drop rep"
76
77 test_3() {
78     drop_request "statone $MOUNT/2" || return 1
79     drop_reply "statone $MOUNT/2"   || return 2
80 }
81 run_test 3 "stat: drop req, drop rep"
82
83 test_4() {
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
87 }
88 run_test 4 "open: drop req, drop rep"
89
90 test_5() {
91     drop_request "mv $MOUNT/resolv.conf $MOUNT/renamed" || return 1
92     drop_reply "mv $MOUNT/renamed $MOUNT/renamed-again" || return 2
93 }
94 run_test 5 "rename: drop req, drop rep"
95
96 test_6() {
97     drop_request "mlink $MOUNT/renamed-again $MOUNT/link1" || return 1
98     drop_reply "mlink $MOUNT/renamed-again $MOUNT/link2"   || return 2
99 }
100 run_test 6 "link: drop req, drop rep"
101
102 test_7() {
103     drop_request "munlink $MOUNT/link1"   || return 1
104     drop_reply "munlink $MOUNT/link2"     || return 2
105 }
106 run_test 7 "unlink: drop req, drop rep"
107
108
109 #bug 1423
110 test_8() {
111     drop_reply "touch $MOUNT/renamed"    || return 1
112 }
113 run_test 8 "touch: drop rep (bug 1423)"
114
115
116 #bug 1420
117 test_9() {
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
122 }
123 run_test 9 "pause bulk on OST (bug 1420)"
124
125 #bug 1521
126 test_10() {
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"
135 }
136 run_test 10 "finish request on server after client eviction (bug 1521)"
137
138 #bug 2460
139 # wake up a thead waiting for completion after eviction
140 test_11(){
141     do_facet client multiop $MOUNT/$tfile Ow  || return 1
142     do_facet client multiop $MOUNT/$tfile or  || return 2
143
144     cancel_lru_locks OSC
145
146     do_facet client multiop $MOUNT/$tfile or  || return 3
147     drop_bl_callback multiop $MOUNT/$tfile Ow  || 
148         echo "client evicted, as expected"
149
150     do_facet client unlink $MOUNT/$tfile  || return 4
151 }
152 run_test 11 "wake up a thead waiting for completion after eviction (b=2460)"
153 $CLEANUP
154