X-Git-Url: http://git.apps.os.sepia.ceph.com/?p=xfstests-dev.git;a=blobdiff_plain;f=tests%2Fgeneric%2F388;h=9cd737e8ebfd997d5f0ef6b008c2c5869655621e;hp=3729aa5b2f524d04511b113163dbab129cc89f3d;hb=a8b4f1be7d401ecfb364afe8a2079b7a51f98011;hpb=3e42a35711e1331b7c625946b630a0450264a7f5 diff --git a/tests/generic/388 b/tests/generic/388 index 3729aa5b..9cd737e8 100755 --- a/tests/generic/388 +++ b/tests/generic/388 @@ -1,4 +1,7 @@ #! /bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2016 Red Hat, Inc. All Rights Reserved. +# # FS QA Test No. 388 # # Test XFS log recovery ordering on v5 superblock filesystems. XFS had a problem @@ -11,33 +14,10 @@ # Ensure that log recovery does not recover stale modifications and cause # spurious corruption reports and/or mount failures. # -#----------------------------------------------------------------------- -# Copyright (c) 2016 Red Hat, Inc. All Rights Reserved. -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation. -# -# This program is distributed in the hope that it would be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -#----------------------------------------------------------------------- -# - -seq=`basename $0` -seqres=$RESULT_DIR/$seq -echo "QA output created by $seq" - -here=`pwd` -tmp=/tmp/$$ -status=1 # failure is the default! -trap "_cleanup; exit \$status" 0 1 2 3 15 +. ./common/preamble +_begin_fstest shutdown auto log metadata recoveryloop +# Override the default cleanup function. _cleanup() { cd / @@ -46,32 +26,30 @@ _cleanup() _scratch_unmount > /dev/null 2>&1 } -# get standard environment, filters and checks -. ./common/rc +# Import common functions. # Modify as appropriate. _supported_fs generic -_supported_os Linux _require_scratch +_require_local_device $SCRATCH_DEV _require_scratch_shutdown _require_command "$KILLALL_PROG" "killall" -rm -f $seqres.full - echo "Silence is golden." _scratch_mkfs >> $seqres.full 2>&1 -_scratch_mount || _fail "mount failed" +_require_metadata_journaling $SCRATCH_DEV +_scratch_mount -for i in $(seq 1 50); do +for i in $(seq 1 $((50 * TIME_FACTOR)) ); do ($FSSTRESS_PROG $FSSTRESS_AVOID -d $SCRATCH_MNT -n 999999 -p 4 >> $seqres.full &) \ > /dev/null 2>&1 # purposely include 0 second sleeps to test shutdown immediately after # recovery sleep $((RANDOM % 3)) - ./src/godown $SCRATCH_MNT + _scratch_shutdown ps -e | grep fsstress > /dev/null 2>&1 while [ $? -eq 0 ]; do @@ -80,8 +58,14 @@ for i in $(seq 1 50); do ps -e | grep fsstress > /dev/null 2>&1 done - # quit if mount fails so we don't shutdown the host fs - _scratch_cycle_mount || _fail "cycle mount failed" + # Toggle between rw and ro mounts for recovery. Quit if any mount + # attempt fails so we don't shutdown the host fs. + if [ $((RANDOM % 2)) -eq 0 ]; then + _scratch_cycle_mount || _fail "cycle mount failed" + else + _scratch_cycle_mount "ro" || _fail "cycle ro mount failed" + _scratch_cycle_mount || _fail "cycle rw mount failed" + fi done # success, all done