X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Ftests%2Frun_dd.sh;h=e805f62d3fe73491ccd2b1f05b886160b0504d74;hb=99d7a8ed43be126b2769ad8bb0b5350cd328ed7f;hp=d50150e7b7ed1d5353cbbf54c0ef9dadad304d67;hpb=abf2237387d0d94ed623c64e1a44962242203aea;p=fs%2Flustre-release.git diff --git a/lustre/tests/run_dd.sh b/lustre/tests/run_dd.sh index d50150e..e805f62 100755 --- a/lustre/tests/run_dd.sh +++ b/lustre/tests/run_dd.sh @@ -1,20 +1,23 @@ #!/bin/bash -set -x TMP=${TMP:-/tmp} -TESTSUITELOG=${TESTSUITELOG:-$TMP/recovery-mds-scale} -LOG=${TESTSUITELOG}_$(basename $0)-$(hostname) -DEBUGLOG=${LOG}.debug +TESTLOG_PREFIX=${TESTLOG_PREFIX:-$TMP/recovery-mds-scale} +TESTNAME=${TESTNAME:-""} +[ -n "$TESTNAME" ] && TESTLOG_PREFIX=$TESTLOG_PREFIX.$TESTNAME + +LOG=$TESTLOG_PREFIX.$(basename $0 .sh)_stdout.$(hostname -s).log +DEBUGLOG=$(echo $LOG | sed 's/\(.*\)stdout/\1debug/') mkdir -p ${LOG%/*} rm -f $LOG $DEBUGLOG exec 2>$DEBUGLOG +set -x . $(dirname $0)/functions.sh -assert_env MOUNT END_RUN_FILE LOAD_PID_FILE +assert_env MOUNT END_RUN_FILE LOAD_PID_FILE LFS CLIENT_COUNT trap signaled TERM @@ -25,28 +28,36 @@ TESTDIR=$MOUNT/d0.dd-$(hostname) CONTINUE=true while [ ! -e "$END_RUN_FILE" ] && $CONTINUE; do - echoerr "$(date +'%F %H:%M:%S'): dd run starting" - mkdir -p $TESTDIR - cd $TESTDIR - dd bs=4k count=1000000 if=/dev/zero of=$TESTDIR/dd-file 1>$LOG & - load_pid=$! - wait $load_pid - - if [ $? -eq 0 ]; then - echoerr "$(date +'%F %H:%M:%S'): dd succeeded" - cd $TMP - rm -rf $TESTDIR - echoerr "$(date +'%F %H:%M:%S'): dd run finished" - else - echoerr "$(date +'%F %H:%M:%S'): dd failed" - if [ -z "$ERRORS_OK" ]; then - echo $(hostname) >> $END_RUN_FILE - fi - if [ $BREAK_ON_ERROR ]; then - # break - CONTINUE=false + echoerr "$(date +'%F %H:%M:%S'): dd run starting" + mkdir -p $TESTDIR + $LFS setstripe -c -1 $TESTDIR + cd $TESTDIR + sync + + # suppress dd xfer stat to workaround buggy coreutils/gettext + # combination in RHEL5 and OEL5, see BZ 21264 + FREE_SPACE=$(df -P $TESTDIR | awk '/:/ { print $4 }') + BLKS=$((FREE_SPACE * 9 / 40 / CLIENT_COUNT)) + echoerr "Total free disk space is $FREE_SPACE, 4k blocks to dd is $BLKS" + + df $TESTDIR || true + dd bs=4k count=$BLKS status=noxfer if=/dev/zero of=$TESTDIR/dd-file \ + 1>$LOG + if [ $? -eq 0 ]; then + echoerr "$(date +'%F %H:%M:%S'): dd succeeded" + cd $TMP + rm -rf $TESTDIR + echoerr "$(date +'%F %H:%M:%S'): dd run finished" + else + echoerr "$(date +'%F %H:%M:%S'): dd failed" + if [ -z "$ERRORS_OK" ]; then + echo $(hostname) >> $END_RUN_FILE + fi + if [ $BREAK_ON_ERROR ]; then + # break + CONTINUE=false + fi fi - fi done echoerr "$(date +'%F %H:%M:%S'): dd run exiting"