#
# This test needs to be run on the client
#
-
+SAVE_PWD=$PWD
LUSTRE=${LUSTRE:-`dirname $0`/..}
+SETUP=${SETUP:-}
+CLEANUP=${CLEANUP:-}
. $LUSTRE/tests/test-framework.sh
init_test_env $@
. ${CONFIG:=$LUSTRE/tests/cfg/$NAME.sh}
+CHECK_GRANT=${CHECK_GRANT:-"yes"}
+GRANT_CHECK_LIST=${GRANT_CHECK_LIST:-""}
# Skip these tests
# bug number: 2766 4176
ALWAYS_EXCEPT="0b 39 $REPLAY_SINGLE_EXCEPT"
-gen_config() {
- rm -f $XMLCONFIG
- add_mds $SINGLEMDS --dev $MDSDEV --size $MDSSIZE
- if [ ! -z "$mdsfailover_HOST" ]; then
- add_mdsfailover $SINGLEMDS --dev $MDSDEV --size $MDSSIZE
- fi
-
- add_lov lov1 $SINGLEMDS --stripe_sz $STRIPE_BYTES \
- --stripe_cnt $STRIPES_PER_OBJ --stripe_pattern 0
- add_ost ost --lov lov1 --dev `ostdevname 1` --size $OSTSIZE
- add_ost ost2 --lov lov1 --dev `ostdevname 2` --size $OSTSIZE
- add_client client $SINGLEMDS --lov lov1 --path $MOUNT
-}
+# 63 min 7 min AT AT AT AT"
+[ "$SLOW" = "no" ] && EXCEPT="$EXCEPT 1 2 3 4 6 6b 12 16 44 44b 65 66 67 68"
build_test_filter
-SETUP=${SETUP:-"setup"}
-CLEANUP=${CLEANUP:-"cleanupall"}
-
-if [ "$ONLY" == "cleanup" ]; then
- sysctl -w lnet.debug=0 || true
- $CLEANUP
- exit 0
-fi
-
-setup() {
- [ "$REFORMAT" ] && formatall
- setupall
-}
-
-$SETUP
-
-if [ "$ONLY" == "setup" ]; then
- exit 0
-fi
+cleanup_and_setup_lustre
mkdir -p $DIR
+rm -rf $DIR/${TESTSUITE}/[df][0-9]* # bug 13798 new t-f tdir staff
+rm -rf $DIR/[df][0-9]*
+
test_0() {
sleep 10
mkdir $DIR/$tfile
run_test 2a "touch"
test_2b() {
- ./mcreate $DIR/$tfile
+ mcreate $DIR/$tfile
replay_barrier $SINGLEMDS
touch $DIR/$tfile
fail $SINGLEMDS
test_6() {
replay_barrier $SINGLEMDS
- mkdir $DIR/$tdir
mcreate $DIR/$tdir/$tfile
fail $SINGLEMDS
$CHECKSTAT -t dir $DIR/$tdir || return 1
run_test 6b "|X| rmdir"
test_7() {
- mkdir $DIR/$tdir
replay_barrier $SINGLEMDS
mcreate $DIR/$tdir/$tfile
fail $SINGLEMDS
fail $SINGLEMDS # start orphan recovery
df -P $DIR || df -P $DIR || true # reconnect
- sleep 2
+ wait_mds_recovery_done || error "MDS recovery not done"
+ # FIXME just because recovery is done doesn't mean we've finished
+ # orphan cleanup. Fake it with a sleep for now...
+ sleep 10
AFTERUSED=`df -P $DIR | tail -1 | awk '{ print $3 }'`
log "before $BEFOREUSED, after $AFTERUSED"
[ $AFTERUSED -gt $((BEFOREUSED + 20)) ] && \
- error "after $AFTERUSED > before $BEFOREUSED" && return 5
+ error "after $AFTERUSED > before $BEFOREUSED"
return 0
}
run_test 20b "write, unlink, eviction, replay, (test mds_cleanup_orphans)"
test_20c() { # bug 10480
- dd if=/dev/zero of=$DIR/$tfile bs=4k count=10000
-
- exec 100< $DIR/$tfile
+ multiop $DIR/$tfile Ow_c &
+ pid=$!
+ # give multiop a chance to open
+ sleep 1
ls -la $DIR/$tfile
df -P $DIR || df -P $DIR || true # reconnect
- exec 100<&-
-
+ kill -USR1 $pid
test -s $DIR/$tfile || error "File was truncated"
return 0
# the page, guarnateeing that the unlock from the RPC completion would
# assert on trying to unlock the unlocked page.
test_41() {
+ [ $OSTCOUNT -lt 2 ] && \
+ skip "skipping test 41: we don't have a second OST to test with" && \
+ return
+
local f=$MOUNT/$tfile
# make sure the start of the file is ost1
lfs setstripe $f $((128 * 1024)) 0 0
createmany -o $DIR/$tfile-%d 800
replay_barrier ost1
unlinkmany $DIR/$tfile-%d 0 400
- DEBUG42=`sysctl -n lnet.debug`
+ debugsave
sysctl -w lnet.debug=-1
facet_failover ost1
#[ $blocks_after -lt $blocks ] || return 1
echo wait for MDS to timeout and recover
sleep $((TIMEOUT * 2))
- sysctl -w lnet.debug="$DEBUG42"
+ debugrestore
unlinkmany $DIR/$tfile-%d 400 400
$CHECKSTAT -t file $DIR/$tfile-* && return 2 || true
}
run_test 48 "MDS->OSC failure during precreate cleanup (2824)"
test_50() {
- local oscdev=`grep ${ost1_svc}-osc-MDT0000 $LPROC/devices | awk '{print $1}'`
+ local oscdev=`do_facet $SINGLEMDS grep ${ost1_svc}-osc-MDT0000 $LPROC/devices | awk '{print $1}'`
[ "$oscdev" ] || return 1
- $LCTL --device $oscdev recover && $LCTL --device $oscdev recover
+ do_facet $SINGLEMDS $LCTL --device $oscdev recover || return 2
+ do_facet $SINGLEMDS $LCTL --device $oscdev recover || return 3
# give the mds_lov_sync threads a chance to run
sleep 5
}
test_58() {
#define OBD_FAIL_MDS_OST_SETATTR 0x12c
do_facet $SINGLEMDS "sysctl -w lustre.fail_loc=0x8000012c"
- mkdir $DIR/$tdir
createmany -o $DIR/$tdir/$tfile-%d 2500
replay_barrier $SINGLEMDS
fail $SINGLEMDS
sleep 2
- $CHECKSTAT -t file $DIR/$tdir/$tfile-* || return 1
+ $CHECKSTAT -t file $DIR/$tdir/$tfile-* >/dev/null || return 1
do_facet $SINGLEMDS "sysctl -w lustre.fail_loc=0x0"
unlinkmany $DIR/$tdir/$tfile-%d 2500
rmdir $DIR/$tdir
# log_commit_thread vs filter_destroy race used to lead to import use after free
# bug 11658
test_59() {
- mkdir $DIR/$tdir
createmany -o $DIR/$tdir/$tfile-%d 200
sync
unlinkmany $DIR/$tdir/$tfile-%d 200
# race between add unlink llog vs cat log init in post_recovery (only for b1_6)
# bug 12086: should no oops and No ctxt error for this test
test_60() {
- mkdir $DIR/$tdir
createmany -o $DIR/$tdir/$tfile-%d 200
replay_barrier $SINGLEMDS
unlinkmany $DIR/$tdir/$tfile-%d 0 100
run_test 60 "test llog post recovery init vs llog unlink"
equals_msg `basename $0`: test complete, cleaning up
-$CLEANUP
+check_and_cleanup_lustre
+[ -f "$TESTSUITELOG" ] && cat $TESTSUITELOG || true