6 # This test needs to be run on the client
9 LUSTRE=${LUSTRE:-`dirname $0`/..}
11 . ${CONFIG:=$LUSTRE/tests/cfg/smfs.sh}
13 . $LUSTRE/tests/test-framework.sh
24 device=`$LCTL device_list | grep " $name " | awk '{print $1}'`
27 echo "Can't find device $name"
41 add_mds $CACHE_MDS --dev $MDS_CACHE_DEV --size $MDSSIZE --lmv cache_lmv_svc \
42 --mountfsoptions $MDS_MOUNT_OPS || exit 10
44 add_lmv master_lmv_svc
45 add_mds $MASTER1_MDS --dev $MDS_MASTER1_DEV --size $MDSSIZE --lmv master_lmv_svc
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
50 add_ost ost --lov lov1 --dev $OSTDEV --size $OSTSIZE
52 add_cmobd cmobd_mds ${CACHE_MDS}_svc master_lmv_svc
54 do_lmc --add cobd --node client_facet --cobd cobd_svc --cache_obd cache_lmv_svc \
55 --master_obd master_lmv_svc
57 add_client client cobd --lov lov1 --path $MOUNT
63 zconf_umount `hostname` $MOUNT
64 stop $CACHE_MDS ${FORCE} $MDSLCONFARGS
65 stop $MASTER1_MDS ${FORCE} $MDSLCONFARGS
66 stop ost ${FORCE} --dump cleanup.log
69 if [ "$ONLY" == "cleanup" ]; then
70 sysctl -w portals.debug=0 || true
75 SETUP=${SETUP:-"setup"}
76 CLEANUP=${CLEANUP:-"cleanup"}
80 start ost --reformat $OSTLCONFARGS
81 [ "$DAEMONFILE" ] && $LCTL debug_daemon start $DAEMONFILE $DAEMONSIZE
83 start $MASTER1_MDS --reformat $MDSLCONFARGS
84 start $CACHE_MDS --reformat $MDSLCONFARGS
86 grep " $MOUNT " /proc/mounts || zconf_mount `hostname` $MOUNT
91 if [ "$ONLY" == "setup" ]; then
98 rm -fr $DIR/1a0 > /dev/null
100 echo "mkdir $DIR/1a0"
101 mkdir $DIR/1a0 || error
102 echo "cache flush on $NAME"
103 lsync $CMOBD_NAME >/dev/null || error
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
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
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
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
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
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
135 echo "ln -s $DIR/1a0/f01 $DIR/1a0/f01s"
136 ln -s $DIR/1a0/f01 $DIR/1a0/f01s || error
138 rm -fr $DIR/1a0 > /dev/null
139 echo "cache flush on $NAME"
140 lsync $CMOBD_NAME >/dev/null || error
142 run_test 1a " WB test (lsync after each MD operation)============="
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
162 rm -fr $DIR/1b0 > /dev/null
163 echo "cache flush on $NAME"
164 lsync $CMOBD_NAME >/dev/null || error
166 run_test 1b " WB test (lsync after bunch of MD operarions)============="
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
177 run_test 2a " WB test (flush createmany on master LMV) ======================"
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
185 run_test 2b " WB test (flush delmany on master LMV) ========================="