mirror of
https://github.com/linux-apfs/apfstests.git
synced 2026-05-01 15:01:44 -07:00
2fd273886b
Create a new helper function to discover the minimum log size that will work with the mkfs options provided, then remove all the hardcoded block sizes from various xfs tests. This will be necessary when we turn on reflink or rmap by default and the minimum log size increases. Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com> Tested-by: Yang Xu<xuyang2018.jy@cn.fujitsu.com> Signed-off-by: Eryu Guan <guaneryu@gmail.com>
74 lines
1.8 KiB
Bash
Executable File
74 lines
1.8 KiB
Bash
Executable File
#! /bin/bash
|
|
# SPDX-License-Identifier: GPL-2.0
|
|
# Copyright (c) 2013 Red Hat, Inc. All Rights Reserved.
|
|
#
|
|
# FS QA Test No. 297
|
|
#
|
|
# Test freeze/unfreeze file system randomly under fsstress
|
|
# Regression test for commit:
|
|
# 437a255 xfs: fix direct IO nested transaction deadlock.
|
|
#
|
|
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
|
|
|
|
_cleanup()
|
|
{
|
|
cd /
|
|
rm -f $tmp.*
|
|
}
|
|
|
|
# get standard environment, filters and checks
|
|
. ./common/rc
|
|
. ./common/filter
|
|
|
|
# real QA test starts here
|
|
_supported_fs xfs
|
|
_supported_os Linux
|
|
|
|
_require_scratch
|
|
_require_freeze
|
|
_require_command "$KILLALL_PROG" killall
|
|
|
|
rm -f $seqres.full
|
|
logblks=$(_scratch_find_xfs_min_logblocks -d agcount=16,su=256k,sw=12 -l su=256k)
|
|
_scratch_mkfs_xfs -d agcount=16,su=256k,sw=12 -l su=256k,size=${logblks}b >/dev/null 2>&1
|
|
_scratch_mount
|
|
|
|
STRESS_DIR="$SCRATCH_MNT/testdir"
|
|
mkdir -p $STRESS_DIR
|
|
|
|
$FSSTRESS_PROG -d $STRESS_DIR -n 100 -p 1000 $FSSTRESS_AVOID >/dev/null 2>&1 &
|
|
|
|
# Freeze/unfreeze file system randomly
|
|
echo "Start freeze/unfreeze randomly" | tee -a $seqres.full
|
|
LOOP=10
|
|
while [ $LOOP -gt 0 ];do
|
|
TIMEOUT=`expr $RANDOM % 5`
|
|
sleep $TIMEOUT
|
|
echo "* Freeze file system after sleeping $TIMEOUT seconds" >>$seqres.full
|
|
xfs_freeze -f $SCRATCH_MNT
|
|
if [ $? -ne 0 ];then
|
|
echo " - Error: freeze filesystem failed" | tee -a $seqres.full
|
|
fi
|
|
TIMEOUT=`expr $RANDOM % 3`
|
|
sleep $TIMEOUT
|
|
echo "* Unfreeze file system after sleeping $TIMEOUT seconds" >>$seqres.full
|
|
xfs_freeze -u $SCRATCH_MNT
|
|
if [ $? -ne 0 ];then
|
|
echo " - Error: unfreeze filesystem failed" | tee -a $seqres.full
|
|
fi
|
|
let LOOP=$LOOP-1
|
|
done
|
|
echo "Test done" | tee -a $seqres.full
|
|
$KILLALL_PROG -q $FSSTRESS_PROG
|
|
wait
|
|
|
|
status=0
|
|
exit
|