Whamcloud - gitweb
Revert my use of the configure_flags macro in the lustre.spec file and just
[fs/lustre-release.git] / lustre / tests / sanity-cmobd.sh
1 #!/bin/sh
2
3 set -e
4
5 #
6 # This test needs to be run on the client
7 #
8
9 LUSTRE=${LUSTRE:-`dirname $0`/..}
10
11 . ${CONFIG:=$LUSTRE/tests/cfg/smfs.sh}
12
13 . $LUSTRE/tests/test-framework.sh
14
15 init_test_env $@
16
17
18 build_test_filter
19
20 assert_env MDSCOUNT
21
22 lsync() {
23         name=$1
24         device=`$LCTL device_list | grep " $name " | awk '{print $1}'`
25         
26         [ -z $device ] && {
27                 echo "Can't find device $name"
28                 return 1
29         }
30 ${LCTL} << EOF
31 device $device
32 lsync
33 EOF
34         return $?
35 }
36 gen_config() {
37         rm -f $XMLCONFIG
38
39         add_lmv cache_lmv_svc
40         set -vx 
41         add_mds $CACHE_MDS --dev $MDS_CACHE_DEV --size $MDSSIZE --lmv cache_lmv_svc \
42             --mountfsoptions $MDS_MOUNT_OPS  || exit 10
43         set -e
44         add_lmv master_lmv_svc
45         add_mds $MASTER1_MDS --dev $MDS_MASTER1_DEV --size $MDSSIZE --lmv master_lmv_svc
46
47         add_lov_to_cache_master_lmv lov1 cache_lmv_svc master_lmv_svc --stripe_sz $STRIPE_BYTES \
48                                 --stripe_cnt $STRIPES_PER_OBJ --stripe_pattern 0
49
50         add_ost ost --lov lov1 --dev $OSTDEV --size $OSTSIZE
51
52         add_cmobd cmobd_mds ${CACHE_MDS}_svc master_lmv_svc  
53
54         do_lmc --add cobd --node client_facet --cobd cobd_svc --cache_obd cache_lmv_svc \
55                    --master_obd master_lmv_svc  
56     
57         add_client client cobd --lov lov1 --path $MOUNT
58 }
59
60 build_test_filter
61
62 cleanup() {
63         zconf_umount `hostname` $MOUNT
64         stop $CACHE_MDS ${FORCE} $MDSLCONFARGS
65         stop $MASTER1_MDS ${FORCE} $MDSLCONFARGS
66         stop ost ${FORCE} --dump cleanup.log
67 }
68
69 if [ "$ONLY" == "cleanup" ]; then
70         sysctl -w portals.debug=0 || true
71         cleanup
72         exit
73 fi
74
75 SETUP=${SETUP:-"setup"}
76 CLEANUP=${CLEANUP:-"cleanup"}
77
78 setup() {
79         gen_config
80         start ost --reformat $OSTLCONFARGS 
81         [ "$DAEMONFILE" ] && $LCTL debug_daemon start $DAEMONFILE $DAEMONSIZE
82     
83         start $MASTER1_MDS --reformat $MDSLCONFARGS
84         start $CACHE_MDS   --reformat $MDSLCONFARGS
85     
86         grep " $MOUNT " /proc/mounts || zconf_mount `hostname` $MOUNT
87 }
88
89 $SETUP
90
91 if [ "$ONLY" == "setup" ]; then
92     exit 0
93 fi
94
95 mkdir -p $DIR
96
97 test_1a() {
98         rm -fr $DIR/1a0 > /dev/null
99
100         echo "mkdir $DIR/1a0"
101         mkdir $DIR/1a0 || error
102         echo "cache flush on $NAME"
103         lsync $CMOBD_NAME >/dev/null || error
104         
105         echo "touch $DIR/1a0/f0"
106         touch $DIR/1a0/f0 || error
107         echo "cache flush on $NAME"
108         lsync $CMOBD_NAME >/dev/null || error
109         
110         echo "chmod +x $DIR/1a0/f0"
111         chmod +x $DIR/1a0/f0 || error
112         echo "cache flush on $NAME"
113         lsync $CMOBD_NAME >/dev/null || error
114         
115         echo "mv $DIR/1a0/f0 $DIR/1a0/f01"
116         mv $DIR/1a0/f0 $DIR/1a0/f01 || error
117         echo "cache flush on $NAME"
118         lsync $CMOBD_NAME >/dev/null || error
119         
120         echo "rm $DIR/1a0/f01"
121         rm $DIR/1a0/f01 || error
122         echo "cache flush on $NAME"
123         lsync $CMOBD_NAME >/dev/null || error
124         
125         echo "touch $DIR/1a0/f01"
126         touch $DIR/1a0/f01 || error
127         echo "cache flush on $NAME"
128         lsync $CMOBD_NAME >/dev/null || error
129         
130         echo "ln $DIR/1a0/f01 $DIR/1a0/f01h"
131         ln $DIR/1a0/f01 $DIR/1a0/f01h || error
132         echo "cache flush on $NAME"
133         lsync $CMOBD_NAME >/dev/null || error
134         
135         echo "ln -s $DIR/1a0/f01 $DIR/1a0/f01s"
136         ln -s $DIR/1a0/f01 $DIR/1a0/f01s || error
137
138         rm -fr $DIR/1a0 > /dev/null
139         echo "cache flush on $NAME"
140         lsync $CMOBD_NAME >/dev/null || error
141 }
142 run_test 1a " WB test (lsync after each MD operation)============="
143
144 test_1b() {
145         echo "mkdir $DIR/1b0"
146         mkdir $DIR/1b0 || error
147         echo "touch $DIR/1b0/f0"
148         touch $DIR/1b0/f0 || error
149         echo "chmod +x $DIR/1b0/f0"
150         chmod +x $DIR/1b0/f0 || error
151         echo "mv $DIR/1b0/f0 $DIR/1b0/f01"
152         mv $DIR/1b0/f0 $DIR/1b0/f01 || error
153         echo "rm $DIR/1b0/f01"
154         rm $DIR/1b0/f01 || error
155         echo "touch $DIR/1b0/f01"
156         touch $DIR/1b0/f01 || error
157         echo "ln $DIR/1b0/f01 $DIR/1b0/f01h"
158         ln $DIR/1b0/f01 $DIR/1b0/f01h || error
159         echo "ln -s $DIR/1b0/f01 $DIR/1b0/f01s"
160         ln -s $DIR/1b0/f01 $DIR/1b0/f01s || error
161
162         rm -fr $DIR/1b0 > /dev/null
163         echo "cache flush on $NAME"
164         lsync $CMOBD_NAME >/dev/null || error
165 }
166 run_test 1b " WB test (lsync after bunch of MD operarions)============="
167
168 test_2a() {
169         echo "mkdir $DIR/2a0"
170         mkdir $DIR/2a0 || error 
171         echo "createmany -o $DIR/2a0/f 4000"
172         createmany -o $DIR/2a0/f 4000
173         echo "cache flush on $NAME"
174         lsync $CMOBD_NAME >/dev/null || error
175 }
176
177 run_test 2a " WB test (flush createmany on master LMV) ======================"
178 test_2b() {
179         echo "find $DIR/2a0 -type f -exec rm -f {} \;"
180         find $DIR/2a0 -type f -exec rm -f {} \;
181         rmdir $DIR/2a0 || error
182         echo "cache flush on $NAME"
183         lsync $CMOBD_NAME >/dev/null || error
184 }
185 run_test 2b " WB test (flush delmany on master LMV) ========================="
186
187 $CLEANUP
188