FORMAT=${FORMAT:-formatall}
CLEANUP=${CLEANUP:-stopall}
-fail() {
- echo "ERROR: $1" 1>&2
- [ $2 ] && RC=$2 || RC=1
- exit $RC
-}
-
ERROR=
RUNTESTS_SRC=${RUNTESTS_SRC:-"/etc /bin"}
[ "$COUNT" ] || COUNT=1000
# let's start slowly here...
START=`date +%s`
log "touching $MOUNT at `date`"
-touch $MOUNT || fail "can't touch $MOUNT" 2
+touch $MOUNT || error "can't touch $MOUNT" 2
HOSTS=$MOUNT/hosts.$$
TRUNCSIZE=123
log "create an empty file $HOSTS"
mcreate $HOSTS
log "copying /etc/hosts to $HOSTS"
- cp /etc/hosts $HOSTS || fail "can't cp /etc/hosts to $HOSTS" 3
+ cp /etc/hosts $HOSTS || error "can't cp /etc/hosts to $HOSTS" 3
log "comparing /etc/hosts and $HOSTS"
- diff -u /etc/hosts $HOSTS || fail "$HOSTS different" 4
+ diff -u /etc/hosts $HOSTS || error "$HOSTS different" 4
log "renaming $HOSTS to $HOSTS.ren"
- mv $HOSTS $HOSTS.ren || fail "can't rename $HOSTS to $HOSTS.ren" 5
+ mv $HOSTS $HOSTS.ren || error "can't rename $HOSTS to $HOSTS.ren" 5
log "copying /etc/hosts to $HOSTS again"
- cp /etc/hosts $HOSTS || fail "can't cp /etc/hosts to $HOSTS again" 6
+ cp /etc/hosts $HOSTS || error "can't cp /etc/hosts to $HOSTS again" 6
log "truncating $HOSTS"
- > $HOSTS || fail "can't truncate $HOSTS" 8
+ > $HOSTS || error "can't truncate $HOSTS" 8
log "removing $HOSTS"
- rm $HOSTS || fail "can't remove $HOSTS" 9
- cp /etc/hosts $HOSTS.2 || fail "can't cp /etc/hosts to $HOSTS.2" 7
+ rm $HOSTS || error "can't remove $HOSTS" 9
+ cp /etc/hosts $HOSTS.2 || error "can't cp /etc/hosts to $HOSTS.2" 7
log "truncating $HOSTS.2 to $TRUNCSIZE bytes"
truncate $HOSTS.2 $TRUNCSIZE
fi
DST=$MOUNT/runtest.$$
# let's start slowly here...
log "creating $DST"
-mkdir $DST || fail "can't mkdir $DST" 10
+mkdir $DST || error "can't mkdir $DST" 10
# ok, that hopefully worked, so let's do a little more, with files that
# haven't changed in the last day (hopefully they don't change during test)
FILES=`find $RUNTESTS_SRC -type f -mtime +1 | head -n $COUNT`
-[ -z "$FILES" ] && fail "No unchanged files - is $RUNTESTS_SRC a new dir?"
+[ -z "$FILES" ] && error "No unchanged files - is $RUNTESTS_SRC a new dir?"
log "copying files from $RUNTESTS_SRC to $DST$RUNTESTS_SRC at `date`"
-tar cf - $FILES | tar xvf - -C $DST > /dev/null || fail "copying $RUNTESTS_SRC" 11
+tar cf - $FILES | tar xvf - -C $DST > /dev/null || error "copying $RUNTESTS_SRC" 11
log "comparing newly copied files at `date`"
for f in $FILES; do
diff -q $f $DST/$f || ERROR=11
done
-[ "$ERROR" ] && fail "old and new files are different" $ERROR
+[ "$ERROR" ] && error "old and new files are different" $ERROR
log "finished at `date` ($(($(date +%s) - START)))"
$CLEANUP || exit 19
diff -q $f $DST/$f || ERROR=22
done
-[ "$ERROR" ] && fail "old and new files are different on second diff" $ERROR
+[ "$ERROR" ] && error "old and new files are different on second diff" $ERROR
$CLEANUP || exit 19
$SETUP || exit 20
log "removing $DST"
-rm -r $V $DST || fail "can't remove $DST" 37
+rm -r $V $DST || error "can't remove $DST" 37
if [ $COUNT -gt 10 -o $COUNT -eq 0 ]; then
log "renaming $HOSTS.ren to $HOSTS"
- mv $HOSTS.ren $HOSTS || fail "can't rename $HOSTS.ren to $HOSTS" 32
+ mv $HOSTS.ren $HOSTS || error "can't rename $HOSTS.ren to $HOSTS" 32
log "truncating $HOSTS"
- > $HOSTS || fail "can't truncate $HOSTS" 34
+ > $HOSTS || error "can't truncate $HOSTS" 34
log "removing $HOSTS"
- rm $HOSTS || fail "can't remove $HOSTS again" 36
+ rm $HOSTS || error "can't remove $HOSTS again" 36
log "verifying $HOSTS.2 is $TRUNCSIZE bytes"
checkstat -s $TRUNCSIZE $HOSTS.2 || \
- fail "$HOSTS.2 isn't $TRUNCSIZE bytes" 37
- rm $HOSTS.2 || fail "can't remove $HOSTS.2" 38
+ error "$HOSTS.2 isn't $TRUNCSIZE bytes" 37
+ rm $HOSTS.2 || error "can't remove $HOSTS.2" 38
fi
# mkdirmany test (bug 589)
log "running $MKDIRMANY $MOUNT/base$$ 100"
-$MKDIRMANY $MOUNT/base$$ 100 || fail "mkdirmany failed"
+$MKDIRMANY $MOUNT/base$$ 100 || error "mkdirmany failed"
log "removing mkdirmany directories"
-rmdir $MOUNT/base$$* || fail "mkdirmany cleanup failed"
+rmdir $MOUNT/base$$* || error "mkdirmany cleanup failed"
log "done"
$SETSTRIPE $DIR/d27/f12 -c 2 && error "lstripe succeeded twice"
$CHECKSTAT -t file $DIR/d27/f12 || error "checkstat failed"
}
-run_test 27e "lstripe existing file (should return error) ======"
+run_test 27e "setstripe existing file (should return error) ======"
test_27f() {
mkdir -p $DIR/d27
dd if=/dev/zero of=$DIR/d27/f12 bs=4k count=4 || error "dd failed"
$GETSTRIPE $DIR/d27/fbad || error "lfs getstripe failed"
}
-run_test 27f "lstripe with bad stripe size (should return error)"
+run_test 27f "setstripe with bad stripe size (should return error)"
test_27g() {
mkdir -p $DIR/d27
mkdir -p $DIR/d27
$SETSTRIPE $DIR/d27/f27j -i $OSTCOUNT && error "lstripe failed"||true
}
-run_test 27j "lstripe with bad stripe offset (should return error)"
+run_test 27j "setstripe with bad stripe offset (should return error)"
test_27k() { # bug 2844
mkdir -p $DIR/d27
echo "get/set/list trusted.lov xattr ..."
[ "$OSTCOUNT" -lt "2" ] && skip "skipping 2-stripe test" && return
local testfile=$DIR/$tfile
- $SETSTRIPE $testfile -s 65536 -i 1 -c 2
+ $SETSTRIPE -s 65536 -i 1 -c 2 $testfile || error "setstripe failed"
getfattr -d -m "^trusted" $testfile 2> /dev/null | \
grep "trusted.lov" || error "can't get trusted.lov from $testfile"
mkdir -p $DIR/$tdir
chown $RUNAS_ID $DIR/$tdir
local testfile=$DIR/$tdir/$tfile
- $RUNAS $SETSTRIPE $testfile -s 65536 -i 1 -c 2
+ $RUNAS $SETSTRIPE -s 65536 -i 1 -c 2 $testfile||error "setstripe failed"
$RUNAS getfattr -d -m "^lustre" $testfile 2> /dev/null | \
grep "lustre.lov" || error "can't get lustre.lov from $testfile"
declare -i FILL
FILL=$(($MINV / 4))
echo "Filling 25% remaining space in OST${MINI} with ${FILL}Kb"
- $SETSTRIPE $DIR/$tdir/OST${MINI} -i $MINI -c 1
+ $SETSTRIPE -i $MINI -c 1 $DIR/$tdir/OST${MINI}||error "setstripe failed"
i=1
while [ $FILL -gt 0 ]; do
dd if=/dev/zero of=$DIR/$tdir/OST${MINI}/$tfile-$i bs=2M count=1 2>/dev/null
{
[ "$OSTCOUNT" -lt "2" ] && skip "skipping 2-stripe test" && return
- $SETSTRIPE $DIR/$tfile -c 2
+ $SETSTRIPE -c 2 $DIR/$tfile || error "setstripe failed"
dd if=/dev/zero of=$DIR/$tfile bs=1M count=1 seek=1 || error "dd failed"
sync
multiop $DIR/$tfile oO_RDONLY:O_DIRECT:r$((2048 * 1024)) || \
run_test 126 "check that the fsgid provided by the client is taken into account"
test_127() { # bug 15521
- $SETSTRIPE -i 0 -c 1 $DIR/$tfile
+ $SETSTRIPE -i 0 -c 1 $DIR/$tfile || error "setstripe failed"
$LCTL set_param osc.*.stats=0
FSIZE=$((2048 * 1024))
dd if=/dev/zero of=$DIR/$tfile bs=$FSIZE count=1
}
run_test 153 "test if fdatasync does not crash ======================="
+test_154() {
+ # do directio so as not to populate the page cache
+ log "creating a 10 Mb file"
+ multiop $DIR/$tfile oO_CREAT:O_DIRECT:O_RDWR:w$((10*1048576))c || error "multiop failed while creating a file"
+ log "starting reads"
+ dd if=$DIR/$tfile of=/dev/null bs=4096 &
+ log "truncating the file"
+ multiop $DIR/$tfile oO_TRUNC:c || error "multiop failed while truncating the file"
+ log "killing dd"
+ kill %+ || true # reads might have finished
+ echo "wait until dd is finished"
+ wait
+ log "removing the temporary file"
+ rm -rf $DIR/$tfile || error "tmp file removal failed"
+}
+run_test 154 "parallel read and truncate should not deadlock ==="
+
test_170() {
$LCTL clear # bug 18514
$LCTL debug_daemon start $TMP/${tfile}_log_good
POOL_DIR=$POOL_ROOT/dir_tst
POOL_FILE=$POOL_ROOT/file_tst
-skip_pools()
+test_pools()
{
[ -z "$($LCTL get_param -n mdc.*.connect_flags | grep pools)" ] &&
skip "missing pools support on server" && return 1
remote_mgs_nodsh && skip "remote MGS with nodsh" && return 1
+ [ -z "$mdtlov" ] && mdtlov=$(get_mdtlov_proc_path $FSNAME)
return 0
}
return 0
}
-mdtlov=$(get_mdtlov_proc_path $FSNAME)
+export mdtlov=
test_200a() {
- skip_pools || return
+ test_pools || return 0
do_facet mgs $LCTL pool_new $FSNAME.$POOL
# get param should return err until pool is created
wait_update $HOSTNAME "lctl get_param -n lov.$FSNAME-*.pools.$POOL 2>/dev/null || echo foo" "" || error "Pool creation of $POOL failed"
run_test 200a "Create new pool =========================================="
test_200b() {
- skip_pools || return
+ test_pools || return 0
TGT=$(for i in `seq $TGTPOOL_FIRST $TGTPOOL_STEP $TGTPOOL_MAX`; do printf "$FSNAME-OST%04x_UUID " $i; done)
do_facet mgs $LCTL pool_add $FSNAME.$POOL \
$FSNAME-OST[$TGTPOOL_FIRST-$TGTPOOL_MAX/$TGTPOOL_STEP]
run_test 200b "Add targets to a pool ===================================="
test_200c() {
- skip_pools || return
+ test_pools || return 0
mkdir -p $POOL_DIR
$SETSTRIPE -c 2 -p $POOL $POOL_DIR
[ $? = 0 ] || error "Cannot set pool $POOL to $POOL_DIR"
run_test 200c "Set pool on a directory ================================="
test_200d() {
- skip_pools || return
+ test_pools || return 0
res=$($GETSTRIPE $POOL_DIR | grep pool: | cut -f8 -d " ")
[ "$res" = $POOL ] || error "Pool on $POOL_DIR is not $POOL"
}
run_test 200d "Check pool on a directory ==============================="
test_200e() {
- skip_pools || return
+ test_pools || return 0
failed=0
for i in $(seq -w 1 $(($TGT_COUNT * 3))); do
file=$POOL_DIR/file-$i
run_test 200e "Check files allocation from directory pool =============="
test_200f() {
- skip_pools || return
+ test_pools || return 0
mkdir -p $POOL_FILE
failed=0
for i in $(seq -w 1 $(($TGT_COUNT * 3))); do
run_test 200f "Create files in a pool ==================================="
test_200g() {
- skip_pools || return
+ test_pools || return 0
TGT=$($LCTL get_param -n lov.$FSNAME-*.pools.$POOL | head -1)
do_facet mgs $LCTL pool_remove $FSNAME.$POOL $TGT
wait_update $HOSTNAME "lctl get_param -n lov.$FSNAME-*.pools.$POOL | grep $TGT" "" || error "$TGT not removed from $FSNAME.$POOL"
run_test 200g "Remove a target from a pool ============================="
test_200h() {
- skip_pools || return
+ test_pools || return 0
for TGT in $($LCTL get_param -n lov.$FSNAME-*.pools.$POOL | sort -u)
do
do_facet mgs $LCTL pool_remove $FSNAME.$POOL $TGT
run_test 200h "Remove all targets from a pool =========================="
test_200i() {
- skip_pools || return
+ test_pools || return 0
do_facet mgs $LCTL pool_destroy $FSNAME.$POOL
# get param should return err once pool is gone
wait_update $HOSTNAME "lctl get_param -n lov.$FSNAME-*.pools.$POOL 2>/dev/null || echo foo" "foo" && return 0
}
run_test 200i "Remove a pool ============================================"
-test_154() {
- # do directio so as not to populate the page cache
- log "creating a 10 Mb file"
- multiop $DIR/$tfile oO_CREAT:O_DIRECT:O_RDWR:w$((10*1048576))c || error "multiop failed while creating a file"
- log "starting reads"
- dd if=$DIR/$tfile of=/dev/null bs=4096 &
- log "truncating the file"
- multiop $DIR/$tfile oO_TRUNC:c || error "multiop failed while truncating the file"
- log "killing dd"
- kill %+ || true # reads might have finished
- echo "wait until dd is finished"
- wait
- log "removing the temporary file"
- rm -rf $DIR/$tfile || error "tmp file removal failed"
-}
-run_test 154 "parallel read and truncate should not deadlock ======================="
-
#
# tests that do cleanup/setup should be run at the end
#
}
init_facets_vars () {
- init_facet_vars mds $MDSDEV $MDS_MOUNT_OPTS
+ remote_mds_nodsh ||
+ init_facet_vars mds $MDSDEV $MDS_MOUNT_OPTS
+
+ remote_ost_nodsh && return
for num in `seq $OSTCOUNT`; do
DEVNAME=`ostdevname $num`
}
init_param_vars () {
- export MDSVER=$(do_facet mds "lctl get_param version" | cut -d. -f1,2)
- export OSTVER=$(do_facet ost1 "lctl get_param version" | cut -d. -f1,2)
- export CLIVER=$(lctl get_param version | cut -d. -f 1,2)
+ if ! remote_ost_nodsh && ! remote_mds_nodsh; then
+ export MDSVER=$(do_facet mds "lctl get_param version" | cut -d. -f1,2)
+ export OSTVER=$(do_facet ost1 "lctl get_param version" | cut -d. -f1,2)
+ export CLIVER=$(lctl get_param version | cut -d. -f 1,2)
+ fi
+
+ remote_mds_nodsh ||
+ TIMEOUT=$(do_facet mds "lctl get_param -n timeout")
- TIMEOUT=$(do_facet mds "lctl get_param -n timeout")
log "Using TIMEOUT=$TIMEOUT"
if [ "$ENABLE_QUOTA" ]; then
setup_quota $MOUNT || return 2
fi
-
}
check_config () {
lsmod | grep lnet > /dev/null || load_modules
local MSG="$*"
- # Get rif of '
+ # Get rid of '
MSG=${MSG//\'/\\\'}
MSG=${MSG//\(/\\\(}
MSG=${MSG//\)/\\\)}
umask 0022
local BEFORE=`date +%s`
- log "== test $testnum: $message ============ `date +%H:%M:%S` ($BEFORE)"
+ log "== test $testnum: $message == `date +%H:%M:%S` ($BEFORE)"
#check_mds
export TESTNAME=test_$testnum
TEST_FAILED=false