UNLINKMANY=${UNLINKMANY:-unlinkmany}
LCTL=${LCTL:-lctl}
-MOUNT1=${MOUNT1:-/mnt/lustre1}
+MOUNT=${MOUNT:-/mnt/lustre}
MOUNT2=${MOUNT2:-/mnt/lustre2}
-DIR=${DIR:-$MOUNT1}
+DIR=${DIR:-$MOUNT}
DIR2=${DIR2:-$MOUNT2}
COUNT=${COUNT:-100}
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=0
while [ $FILL -gt 0 ]; do
i=$(($i + 1))
{
[ "$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
- $LSTRIPE -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 162 "path lookup sanity"
+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
init_facets_vars () {
local DEVNAME
- for num in `seq $MDSCOUNT`; do
- DEVNAME=`mdsdevname $num`
- init_facet_vars mds$num $DEVNAME $MDS_MOUNT_OPTS
- done
+ if ! remote_mds_nodsh; then
+ for num in `seq $MDSCOUNT`; do
+ DEVNAME=`mdsdevname $num`
+ init_facet_vars mds$num $DEVNAME $MDS_MOUNT_OPTS
+ done
+ fi
+
+ remote_ost_nodsh && return
for num in `seq $OSTCOUNT`; do
DEVNAME=`ostdevname $num`
}
init_param_vars () {
- export MDSVER=$(do_facet $SINGLEMDS "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 $SINGLEMDS "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 $SINGLEMDS "lctl get_param -n timeout")
- TIMEOUT=$(do_facet $SINGLEMDS "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