Whamcloud - gitweb
b=18804
authorgrev <grev>
Tue, 17 Mar 2009 15:54:38 +0000 (15:54 +0000)
committergrev <grev>
Tue, 17 Mar 2009 15:54:38 +0000 (15:54 +0000)
o=Adilger
i=grev
t-f and tests remote_* nodsh cleanup

lustre/tests/lockorder.sh
lustre/tests/runtests
lustre/tests/sanity.sh
lustre/tests/test-framework.sh

index 4d4e7e1..122df46 100644 (file)
@@ -7,9 +7,9 @@ STATMANY=${STATMANY:-statmany}
 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}
 
index 8080e31..122a006 100755 (executable)
@@ -18,12 +18,6 @@ SETUP=${SETUP:-setupall}
 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
@@ -59,7 +53,7 @@ USED=`expr $USED + 16`        # Some space for the status file
 # 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
 
@@ -68,18 +62,18 @@ if [ $COUNT -gt 10 -o $COUNT -eq 0 ]; then
        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
@@ -87,15 +81,15 @@ 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
@@ -103,7 +97,7 @@ 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
@@ -115,32 +109,32 @@ for f in $FILES; do
        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"
 
index cb427b2..c357ec8 100644 (file)
@@ -854,7 +854,7 @@ test_27e() {
        $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
@@ -862,7 +862,7 @@ test_27f() {
        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
@@ -881,7 +881,7 @@ test_27j() {
        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
@@ -4012,7 +4012,7 @@ test_102b() {
        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"
 
@@ -4039,7 +4039,7 @@ test_102c() {
        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"
 
@@ -4441,7 +4441,7 @@ test_116() {
        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))
@@ -4900,7 +4900,7 @@ test_119b() # bug 11737
 {
         [ "$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)) || \
@@ -5437,7 +5437,7 @@ test_126() { # bug 12829/13455
 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
@@ -6169,6 +6169,23 @@ test_162() {
 }
 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
index 6c08618..920e6af 100644 (file)
@@ -1570,10 +1570,14 @@ init_facet_vars () {
 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`
@@ -1582,17 +1586,20 @@ init_facets_vars () {
 }
 
 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 () {
@@ -2071,7 +2078,7 @@ log() {
     lsmod | grep lnet > /dev/null || load_modules
 
     local MSG="$*"
-    # Get rif of '
+    # Get rid of '
     MSG=${MSG//\'/\\\'}
     MSG=${MSG//\(/\\\(}
     MSG=${MSG//\)/\\\)}
@@ -2124,7 +2131,7 @@ run_one() {
     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