| #!/bin/bash |
| # SPDX-License-Identifier: GPL-2.0 |
| # Copyright (c) 2000-2002 Silicon Graphics, Inc. All Rights Reserved. |
| # |
| |
| # get standard environment, filters and checks |
| . ./common/rc |
| . ./common/filter |
| |
| tmp=/tmp/$$ |
| seq=soak |
| status=1 # failure is the default! |
| |
| _cleanup() |
| { |
| echo " *** umount" |
| _scratch_unmount >/dev/null 2>&1 |
| } |
| |
| trap "_cleanup; exit \$status" 0 1 2 3 15 |
| |
| ROOT="." |
| LOG="$ROOT/soak.log" |
| FULL="$ROOT/soak.full" |
| |
| _log() |
| { |
| echo "$*" 1>&2 |
| echo "$*" >>$LOG |
| echo "$*" >>$FULL |
| } |
| |
| _logp() |
| { |
| tee -a $FULL |
| } |
| |
| _fail() |
| { |
| _log "$*" |
| status=1 |
| exit 1 |
| } |
| |
| _require_scratch |
| |
| passes=-1 |
| stress=100000 |
| proc=1 |
| |
| if [ $# -gt 0 ] |
| then |
| passes=$1 |
| if [ $# -gt 1 ] |
| then |
| stress=$2 |
| if [ $# -gt 2 ] |
| then |
| proc=$3 |
| fi |
| fi |
| fi |
| |
| echo "" >$FULL |
| echo "" >$LOG |
| _log "*** soak test started (passes=$passes, stress=$stress, proc=$proc)" |
| _log "*** (`date`)" |
| |
| |
| _log " *** init" |
| _log " *** unmounting scratch device" |
| |
| _scratch_unmount 2>&1 >>$FULL |
| |
| _log " *** clean scratch device" |
| |
| mkfs_xfs -f $SCRATCH_DEV 2>&1 >>$FULL \ |
| || _fail " !!! failed to mkfs SCRATCH_DEV" |
| |
| pass=1 |
| |
| while [ $pass -le $passes -o $passes -lt 0 ] |
| do |
| _log " *** pass $pass (`date`)" |
| |
| _log " *** check" |
| _check_scratch_fs |
| |
| _log " *** mounting scratch device" |
| |
| if ! _scratch_mount 2>&1 | _logp |
| then |
| _fail " !!! failed to mount" |
| fi |
| |
| if [ $pass != 1 ] |
| then |
| _log " *** cleanup" |
| rm -rf $SCRATCH_MNT/soak_test \ |
| || _fail " !!! couldn't delete old dir" |
| |
| _log " *** check" |
| _check_scratch_fs |
| fi |
| |
| _log " *** mkdir" |
| mkdir $SCRATCH_MNT/soak_test \ |
| || _fail " !!! couldn't delete old dir" |
| |
| _log " *** stress" |
| ltp/fsstress -d $SCRATCH_MNT/soak_test -p $proc -n $stress $FSSTRESS_AVOID 2>&1 | \ |
| >>$FULL |
| |
| _log " *** unmounting scratch device" |
| |
| _scratch_unmount 2>&1 | _logp \ |
| || _fail " !!! failed to umount" |
| |
| let "pass = pass + 1" |
| done |
| |