Re: [PATCH] xfs/291: fix spurious ENOSPC errors

Eric Sandeen
2014-01-22T21:52:53Z

On 1/22/14, 12:46 AM, Dave Chinner wrote:
> 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.

Hm so you've set the log size to 5m (-l size=5m) but how does that
interact with any "-l size=XXX" set in MKFS_OPTS ?

(It's certainly no worse than what I had in my original test; I just
wonder if we should ignore MKFS_OPTS altogether in this test, and
completely manually specify all options?)

((but I guess that would restrict this test too much, wouldn't it))

Fine for now, I suppose:

Reviewed-by: Eric Sandeen <sandeen@redhat.com>

-Eric

> 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
>