-#!/bin/sh
+#!/bin/bash
set -e
+#set -v
#
# This test needs to be run on the client
LUSTRE=${LUSTRE:-`dirname $0`/..}
. $LUSTRE/tests/test-framework.sh
-
init_test_env $@
-
. ${CONFIG:=$LUSTRE/tests/cfg/lmv.sh}
+
# Skip these tests
ALWAYS_EXCEPT=""
-
-
-gen_config() {
- rm -f $XMLCONFIG
-
- if [ "$MDSCOUNT" -gt 1 ]; then
- add_lmv lmv1
- for num in `seq $MDSCOUNT`; do
- MDSDEV=$TMP/mds${num}-`hostname`
- add_mds mds$num --dev $MDSDEV --size $MDSSIZE --lmv lmv1
- done
- add_lov_to_lmv lov1 lmv1 --stripe_sz $STRIPE_BYTES \
- --stripe_cnt $STRIPES_PER_OBJ --stripe_pattern 0
- add_ost ost --lov lov1 --dev $OSTDEV --size $OSTSIZE
- add_ost ost2 --lov lov1 --dev ${OSTDEV}-2 --size $OSTSIZE
- add_client client --lmv lmv1 --lov lov1 --path $MOUNT
- else
- add_mds mds1 --dev $MDSDEV --size $MDSSIZE
- if [ ! -z "$mdsfailover_HOST" ]; then
- add_mdsfailover mds --dev $MDSDEV --size $MDSSIZE
- fi
-
- add_lov lov1 mds1 --stripe_sz $STRIPE_BYTES \
- --stripe_cnt $STRIPES_PER_OBJ --stripe_pattern 0
- add_ost ost --lov lov1 --dev $OSTDEV --size $OSTSIZE
- add_ost ost2 --lov lov1 --dev ${OSTDEV}-2 --size $OSTSIZE
- add_client client --mds mds1_svc --lov lov1 --path $MOUNT
- fi
-}
-
build_test_filter
-cleanup() {
- # make sure we are using the primary MDS, so the config log will
- # be able to clean up properly.
- activemds=`facet_active mds`
- if [ $activemds != "mds" ]; then
- fail mds
- fi
- zconf_umount `hostname` $MOUNT
- if [ "$MDSCOUNT" -gt 1 ]; then
- for num in `seq $MDSCOUNT`; do
- stop mds$num ${FORCE} $MDSLCONFARGS
- done
- else
- stop mds ${FORCE} $MDSLCONFARGS
- fi
- stop ost2 ${FORCE} --dump cleanup.log
- stop ost ${FORCE} --dump cleanup.log
-}
+SETUP=${SETUP:-"setup"}
+CLEANUP=${CLEANUP:-"stopall"}
if [ "$ONLY" == "cleanup" ]; then
- sysctl -w portals.debug=0 || true
- cleanup
- exit
+ lctl set_param debug=0 || true
+ $CLEANUP
+ exit 0
fi
-SETUP=${SETUP:-"setup"}
-CLEANUP=${CLEANUP:-"cleanup"}
-
setup() {
- gen_config
-
- start ost --reformat $OSTLCONFARGS
- start ost2 --reformat $OSTLCONFARGS
- [ "$DAEMONFILE" ] && $LCTL debug_daemon start $DAEMONFILE $DAEMONSIZE
- start mds1 $MDSLCONFARGS --reformat
- start mds2 $MDSLCONFARGS --reformat
- start mds3 $MDSLCONFARGS --reformat
- grep " $MOUNT " /proc/mounts || zconf_mount `hostname` $MOUNT
+ formatall
+ setupall
}
$SETUP
mkdir -p $DIR
+# LU-482 Avert LVM and VM inability to flush caches in pre .33 kernels
+if [ $LINUX_VERSION_CODE -lt $(version_code 2.6.33) ]; then
+ sync
+ do_facet $SINGLEMDS sync
+fi
+
test_0() {
replay_barrier mds1
fail mds1
test_0b() {
# this test attempts to trigger a race in the precreation code,
# and must run before any other objects are created on the filesystem
- fail ost
+ fail ost1
createmany -o $DIR/$tfile 20 || return 1
unlinkmany $DIR/$tfile 20 || return 2
}
}
run_test 2a "unlink cross-node file (fail mds with name)"
-
test_3a() {
replay_barrier mds2
mkdir $DIR/dir3a1
run_test 3a "mkdir cross-node dir (fail mds with inode)"
test_3b() {
- mkdir $DIR/dir13
replay_barrier mds1
- $CHECKSTAT -t dir $DIR/dir13 || return 1
- rmdir $DIR/dir13
+ mkdir $DIR/dir3b1
+ $LCTL mark "FAILOVER mds1"
fail mds1
- stat $DIR/dir13
+ stat $DIR
+ $CHECKSTAT -t dir $DIR/dir3b1 || return 1
}
-run_test 3b "mkdir cross-node dir (fail mds with name)"
+run_test 3b "mkdir cross-node dir (fail mds with inode)"
-equals_msg test complete, cleaning up
+complete $SECONDS
$CLEANUP