Whamcloud - gitweb
LU-734 tests: save recovery-*-scale debug logs into $LOGDIR
[fs/lustre-release.git] / lustre / tests / run_dd.sh
1 #!/bin/bash
2 set -x
3
4 TMP=${TMP:-/tmp}
5
6 TESTLOG_PREFIX=${TESTLOG_PREFIX:-$TMP/recovery-mds-scale}
7 LOG=$TESTLOG_PREFIX.$(basename $0 .sh)_stdout.$(hostname -s).log
8 DEBUGLOG=$(echo $LOG | sed 's/\(.*\)stdout/\1debug/')
9
10 mkdir -p ${LOG%/*}
11
12 rm -f $LOG $DEBUGLOG
13 exec 2>$DEBUGLOG
14
15 . $(dirname $0)/functions.sh
16
17 assert_env MOUNT END_RUN_FILE LOAD_PID_FILE
18
19 trap signaled TERM
20
21 # recovery-*-scale scripts use this to signal the client loads to die
22 echo $$ >$LOAD_PID_FILE
23
24 TESTDIR=$MOUNT/d0.dd-$(hostname)
25
26 CONTINUE=true
27 while [ ! -e "$END_RUN_FILE" ] && $CONTINUE; do
28     echoerr "$(date +'%F %H:%M:%S'): dd run starting"
29     mkdir -p $TESTDIR
30     cd $TESTDIR
31     # suppress dd xfer stat to workaround buggy coreutils/gettext
32     # combination in RHEL5 and OEL5, see BZ 21264
33     dd bs=4k count=1000000 status=noxfer if=/dev/zero of=$TESTDIR/dd-file 1>$LOG &
34     load_pid=$!
35     wait $load_pid
36
37     if [ $? -eq 0 ]; then
38         echoerr "$(date +'%F %H:%M:%S'): dd succeeded"
39         cd $TMP
40         rm -rf $TESTDIR
41         echoerr "$(date +'%F %H:%M:%S'): dd run finished"
42     else
43         echoerr "$(date +'%F %H:%M:%S'): dd failed"
44         if [ -z "$ERRORS_OK" ]; then
45             echo $(hostname) >> $END_RUN_FILE
46         fi
47         if [ $BREAK_ON_ERROR ]; then
48             # break
49             CONTINUE=false
50         fi
51     fi
52 done
53
54 echoerr "$(date +'%F %H:%M:%S'): dd run exiting"