mirror of
https://github.com/linux-apfs/apfstests.git
synced 2026-05-01 15:01:44 -07:00
80015accd0
I'm getting enospc errors on a 4GB test device after a while of running. Part of the issue is that many tests can't or don't clean up previous failed runs when they start or if the run to success. Hence while we want to slowly age the test filesystem, we don't really want that aging to unintentionally run the filesystem out of space. To that end: $ sudo du -s /mnt/test/* | sort -nr |head -10 1929160 /mnt/test/fsfile 512000 /mnt/test/247.8133 512000 /mnt/test/247.4713 512000 /mnt/test/247.4488 466752 /mnt/test/fstest.9850.2 40000 /mnt/test/resv 29804 /mnt/test/fsstress.12144.1 26208 /mnt/test/populate_root 26208 /mnt/test/mnt 23216 /mnt/test/fsstress.4491.1 We can see that there are a few tests that using most of the space. These are often left behind due to kernel failures during tests or reboots while tests are in progress, so make sure that they at least clean up such mess the next time they run. Test generic/247, xfs/020 (fsfile) and generic/074 (fstest.$$.n) are the worst offenders, so just target these to being with. Signed-off-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Eric Sandeen <sandeen@redhat.com> Signed-off-by: Dave Chinner <david@fromorbit.com>
86 lines
2.2 KiB
Bash
Executable File
86 lines
2.2 KiB
Bash
Executable File
#! /bin/bash
|
|
# FS QA Test No. 247
|
|
#
|
|
# Test for race between direct I/O and mmap
|
|
#
|
|
#-----------------------------------------------------------------------
|
|
# Copyright (c) 2010 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 7 15
|
|
|
|
_cleanup()
|
|
{
|
|
cd /
|
|
rm -f $tmp.* $testfile
|
|
wait
|
|
}
|
|
|
|
# get standard environment, filters and checks
|
|
. ./common/rc
|
|
. ./common/filter
|
|
|
|
# real QA test starts here
|
|
|
|
# Modify as appropriate.
|
|
_supported_fs generic
|
|
_supported_os Linux
|
|
_require_test
|
|
|
|
# this test leaves a 512MB file around if we abort the test during the run via a
|
|
# reboot or kernel panic. Hence just name the file $seq so that we can always
|
|
# clean up on the next run and not leave large stale files around on the testdir
|
|
# that can lead to ENOSPC issues over time.
|
|
testfile=$TEST_DIR/$seq
|
|
rm -f $testfile
|
|
|
|
loops=500
|
|
iosize=1048576
|
|
|
|
# Initialise file
|
|
dd if=/dev/zero of=$testfile bs=$iosize count=$loops &> /dev/null
|
|
[ $? -ne 0 ] && exit
|
|
sync
|
|
|
|
# Direct I/O overwriter
|
|
dd if=/dev/zero of=$testfile oflag=direct bs=$iosize count=$loops conv=notrunc &> /dev/null &
|
|
[ $? -ne 0 ] && exit
|
|
|
|
# Mmap writer
|
|
start=`expr $loops - 1`
|
|
for i in `seq $start -1 0`
|
|
do
|
|
offset=`expr $i \* $iosize`
|
|
$XFS_IO_PROG -f -c "mmap -w $offset $iosize" -c "mwrite $offset $iosize" $testfile
|
|
[ $? -ne 0 ] && exit
|
|
done
|
|
|
|
wait
|
|
|
|
echo "Silence is golden."
|
|
|
|
# success, all done
|
|
status=0
|
|
exit
|