[PATCH] xfs/291: fix spurious ENOSPC errors

Dave Chinner
2014-01-22T06:46:57Z

From: Dave Chinner <dchinner@redhat.com>

xfs/291 tries to fill the filesystem almost full, so if the log size
changes with mkfs defaults then it's free space calculations are not
longer valid and so it throws lots of ENOSPC errors during a run.
This is not fatal for this test, but it does increase the runtime of
it and fill the 291.full file with unnecessary errors.

The number of frag files it creates is also too many for a 512 byte
inode filesystem (by about 900) so reduce the number of inodes
initially created so the test works ofr 512 byte inodes. With 512
byte inodes, the free space histogram looks like this after the frag
phase:

from to extents blocks pct
1 1 10730 10730 100.00

And for 256 byte inodes:

from to extents blocks pct
1 1 12388 12388 100.00

So these changes do not affect the intended operation of the test.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
---
tests/xfs/291 | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/tests/xfs/291 b/tests/xfs/291
index d5a9b08..0f3f051 100755
--- a/tests/xfs/291
+++ b/tests/xfs/291
@@ -46,7 +46,7 @@ _supported_os IRIX Linux
# real QA test starts here
rm -f $seqres.full
_require_scratch
-_scratch_mkfs_xfs -n size=16k -d size=128m >> $seqres.full 2>&1
+_scratch_mkfs_xfs -n size=16k -l size=5m -d size=128m >> $seqres.full 2>&1
_scratch_mount

# First we cause very badly fragmented freespace, then
@@ -54,13 +54,16 @@ _scratch_mount
# should come out very fragmented as a result

# Step 1: Cause badly fragmented free space
+#
+# XXX: this needs to be factored to match what generic/204 does to support
+# different inode sizes without ENOSPC
mkdir $SCRATCH_MNT/fragdir
-for I in `seq 0 27200`; do
+for I in `seq 0 26200`; do
(echo data > $SCRATCH_MNT/fragdir/f$I) >> $seqres.full 2>&1
done
sync

-for I in `seq 0 2 27200`; do
+for I in `seq 0 2 26200`; do
rm -f $SCRATCH_MNT/fragdir/f$I >> $seqres.full 2>&1
done
sync
--
1.8.4.rc3