Whamcloud - gitweb
96a49507c63e53d0515ba5baebabed1e4f448d89
[fs/lustre-release.git] / lustre / tests / run_dd.sh
1 #!/bin/bash
2 set -x
3
4 TMP=${TMP:-/tmp}
5
6 TESTSUITELOG=${TESTSUITELOG:-$TMP/recovery-mds-scale}
7 LOG=${TESTSUITELOG}_$(basename $0)-$(hostname)
8 DEBUGLOG=${LOG}.debug
9
10 mkdir -p ${LOG%/*}
11
12 rm -f $LOG $DEBUGLOG
13 exec 2>$DEBUGLOG
14
15 if [ -z "$MOUNT" -o -z "$END_RUN_FILE" -o -z "$LOAD_PID_FILE" ]; then
16     echo "The following must be set: MOUNT END_RUN_FILE LOAD_PID_FILE"
17     exit 1
18 fi
19
20 echoerr () { echo "$@" 1>&2 ; }
21
22 signaled() {
23     echoerr "$(date +'%F %H:%M:%S'): client load was signaled to terminate"
24     kill -TERM -$PPID
25     sleep 5
26     kill -KILL -$PPID
27 }
28
29 trap signaled TERM
30
31 # recovery-mds-scale uses this to signal the client loads to die
32 echo $$ >$LOAD_PID_FILE
33
34 TESTDIR=$MOUNT/dd-$(hostname)
35
36 CONTINUE=true
37 while [ ! -e "$END_RUN_FILE" ] && $CONTINUE; do
38     echoerr "$(date +'%F %H:%M:%S'): dd run starting"
39     mkdir -p $TESTDIR
40     cd $TESTDIR
41     dd bs=4k count=1000000 if=/dev/zero of=$TESTDIR/dd-file 1>$LOG &
42     load_pid=$!
43     wait $load_pid
44
45     if [ $? -eq 0 ]; then
46         echoerr "$(date +'%F %H:%M:%S'): dd succeeded"
47         cd $TMP
48         rm -rf $TESTDIR
49         echoerr "$(date +'%F %H:%M:%S'): dd run finished"
50     else
51         echoerr "$(date +'%F %H:%M:%S'): dd failed"
52         if [ -z "$ERRORS_OK" ]; then
53             echo $(hostname) >> $END_RUN_FILE
54         fi
55         if [ $BREAK_ON_ERROR ]; then
56             # break
57             CONTINUE=false
58         fi
59     fi
60 done
61
62 echoerr "$(date +'%F %H:%M:%S'): dd run exiting"