6 # This test needs to be run on the client
9 LUSTRE=${LUSTRE:-`dirname $0`/..}
10 . $LUSTRE/tests/test-framework.sh
14 . ${CONFIG:=$LUSTRE/tests/cfg/local.sh}
21 add_mds mds --dev $MDSDEV --size $MDSSIZE
22 if [ ! -z "$mdsfailover_HOST" ]; then
23 add_mdsfailover mds --dev $MDSDEV --size $MDSSIZE
26 add_lov lov1 mds --stripe_sz $STRIPE_BYTES \
27 --stripe_cnt $STRIPES_PER_OBJ --stripe_pattern 0
28 add_ost ost --lov lov1 --dev $OSTDEV --size $OSTSIZE
29 add_ost ost2 --lov lov1 --dev ${OSTDEV}-2 --size $OSTSIZE
30 add_client client mds --lov lov1 --path $MOUNT
36 # make sure we are using the primary MDS, so the config log will
37 # be able to clean up properly.
38 activemds=`facet_active mds`
39 if [ $activemds != "mds" ]; then
42 zconf_umount `hostname` $MOUNT
43 stop mds ${FORCE} $MDSLCONFARGS
44 stop ost2 ${FORCE} --dump cleanup.log
45 stop ost ${FORCE} --dump cleanup.log
48 if [ "$ONLY" == "cleanup" ]; then
49 sysctl -w portals.debug=0 || true
54 SETUP=${SETUP:-"setup"}
55 CLEANUP=${CLEANUP:-"cleanup"}
60 start ost --reformat $OSTLCONFARGS
61 start ost2 --reformat $OSTLCONFARGS
62 [ "$DAEMONFILE" ] && $LCTL debug_daemon start $DAEMONFILE $DAEMONSIZE
63 start mds $MDSLCONFARGS --reformat
64 grep " $MOUNT " /proc/mounts || zconf_mount `hostname` $MOUNT
69 if [ "$ONLY" == "setup" ]; then
75 # bug 3488 - test MDS replay more intensely
85 run_test 1 "fail MDS during dbench"
89 bonnie++ -u root -d $DIR/$tdir -s 0 -n 1 &
98 run_test 2 "fail MDS during bonnie++"
100 if [ $UID -ne 0 ]; then
104 RUNAS_ID=${RUNAS_ID:-500}
105 RUNAS=${RUNAS:-"runas -u $RUNAS_ID"}
113 [ $RUNAS_ID -ne $UID ] && HOME=/tmp
116 cvsroot=$DIR/${tdir}-csvroot
119 chown $RUNAS_ID $cvsroot
120 $RUNAS cvs -d $cvsroot init || error
123 # some versions of cvs import exit(1) when asked to import links or
124 # files they can't read. ignore those files.
125 TOIGNORE=$(find . -type l -printf '-I %f\n' -o \
126 ! -perm +4 -printf '-I %f\n')
127 $RUNAS cvs -d $cvsroot import -m "nomesg" $TOIGNORE \
132 chown $RUNAS_ID $DIR/$repos
133 $RUNAS cvs -d $cvsroot co $repos
137 for i in `seq 1 20`; do
138 $RUNAS touch ${tfile}-$i
139 $RUNAS cvs add -m 'addmsg' ${tfile}-$i
144 $RUNAS cvs commit -m 'nomsg' ${tfile}-*
148 run_test 3 "fail MDS during cvs commit"
156 ln $DIR/$tfile-1 $DIR/$tfile-2 || return 1
159 multiop $DIR/$tfile-2 Ouc
162 $CHECKSTAT -t file $DIR/$tfile-1 || return 2
165 run_test 4 "|X| unlink file with multiple links while open"
170 ln $DIR/$tfile-1 $DIR/$tfile-2 || return 1
171 multiop $DIR/$tfile-2 Ouc
175 $CHECKSTAT -t file $DIR/$tfile-1 || return 2
178 run_test 5 "|X| unlink file with multiple links while open"
182 ln $DIR/$tfile-1 $DIR/$tfile-2
185 multiop $DIR/$tfile-1 O_uc &
187 multiop $DIR/$tfile-2 Ouc
192 wait $MUTLIPID || return 1
194 [ -e $DIR/$tfile-1 ] && return 2
195 [ -e $DIR/$tfile-2 ] && return 3
198 run_test 6 "|X| open-unlink file with multiple links"
203 ln $DIR/$tfile-1 $DIR/$tfile-2
204 multiop $DIR/$tfile-1 O_uc &
207 multiop $DIR/$tfile-2 Ouc
211 wait $MUTLIPID || return 1
214 [ -e $DIR/$tfile-1 ] && return 2
215 [ -e $DIR/$tfile-2 ] && return 3
218 run_test 7 "|X| open-unlink file with multiple links"
222 opendirunlink $DIR/$tdir $DIR/$tdir || return 1
224 $CHECKSTAT -a $DIR/$tdir || return 2
226 run_test 8 "|X| remove of open directory"
228 check_kernel_version() {
229 VERSION_FILE=/proc/fs/lustre/kernel_version
231 [ ! -f $VERSION_FILE ] && echo "can't find kernel version" && return 1
232 GOT_VER=`cat $VERSION_FILE`
233 [ $GOT_VER -ge $WANT_VER ] && return 0
234 log "test needs at least kernel version $WANT_VER, running $GOT_VER"
239 check_kernel_version 34 || return 0
241 openfilleddirunlink $DIR/$tdir || return 1
244 run_test 9 "|X| remove of open non-empty directory"
246 equals_msg test complete, cleaning up