Re: [PATCH] xfs: remove the post-EOF prealloc tests from the auto and quick groups

[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]



On Wed, Oct 23, 2024 at 10:23:51AM -0700, Darrick J. Wong wrote:
> On Wed, Oct 23, 2024 at 12:39:30PM +0200, Christoph Hellwig wrote:
> > These fail for various non-default configs like DAX, alwayscow and
> > small block sizes.
> 
> Shouldn't we selectively _notrun these tests for configurations where
> speculative/delayed allocations don't work?
> 
> I had started on a helper to try to detect the situations where the
> tests cannot ever pass, but never quite finished it:
> 
> diff --git a/common/xfs b/common/xfs
> index 557017c716e32c..5cb2c102e2c04f 100644
> --- a/common/xfs
> +++ b/common/xfs
> @@ -2238,3 +2238,34 @@ _scratch_xfs_scrubbed() {
>  
>  	$XFS_SCRUBBED_PROG "${scrubbed_args[@]}" "$@" $SCRATCH_MNT
>  }
> +
> +# Will this filesystem create speculative post-EOF preallocations for a file?
> +_require_speculative_prealloc()
> +{
> +	local file="$1"
> +	local tries
> +	local overage
> +
> +	# Now that we have background garbage collection processes that can be
> +	# triggered by low space/quota conditions, it's possible that we won't
> +	# succeed in creating a speculative preallocation on the first try.
> +	for ((tries = 0; tries < 5; tries++)); do
> +		rm -f $file
> +
> +		# a few file extending open-write-close cycles should be enough
> +		# to trigger the fs to retain preallocation. write 256k in 32k
> +		# intervals to be sure
> +		for i in $(seq 0 32768 262144); do
> +			$XFS_IO_PROG -f -c "pwrite $i 32k" $file >> $seqres.full
> +
> +			# Do we have more blocks allocated than what we've
> +			# written so far?
> +			overage="$(stat -c '%b * %B - %s' $file | bc)"
> +			test "$overage" -gt 0 && return 0
> +		done
> +	done
> +
> +	_notrun "Warning: No speculative preallocation for $file after " \
> +			"$tries iterations." \
> +			"Check use of the allocsize= mount option."
> +}

Before we remove these cases from auto group, if above function can help these
test cases to be stable passed as expected. I'm glad to consider it at first :)

Thanks,
Zorro

> 
> --D
> 
> > Signed-off-by: Christoph Hellwig <hch@xxxxxx>
> > ---
> >  tests/xfs/629 | 2 +-
> >  tests/xfs/630 | 2 +-
> >  tests/xfs/631 | 2 +-
> >  tests/xfs/632 | 2 +-
> >  4 files changed, 4 insertions(+), 4 deletions(-)
> > 
> > diff --git a/tests/xfs/629 b/tests/xfs/629
> > index 58beedc03a8b..e2f5af085b5f 100755
> > --- a/tests/xfs/629
> > +++ b/tests/xfs/629
> > @@ -8,7 +8,7 @@
> >  #
> >  
> >  . ./common/preamble
> > -_begin_fstest auto quick prealloc rw
> > +_begin_fstest prealloc rw
> >  
> >  . ./common/filter
> >  
> > diff --git a/tests/xfs/630 b/tests/xfs/630
> > index 939d8a4ac37f..df7ca60111d6 100755
> > --- a/tests/xfs/630
> > +++ b/tests/xfs/630
> > @@ -8,7 +8,7 @@
> >  #
> >  
> >  . ./common/preamble
> > -_begin_fstest auto quick prealloc rw
> > +_begin_fstest prealloc rw
> >  
> >  . ./common/filter
> >  
> > diff --git a/tests/xfs/631 b/tests/xfs/631
> > index 55a74297918a..1e50bc033f7c 100755
> > --- a/tests/xfs/631
> > +++ b/tests/xfs/631
> > @@ -8,7 +8,7 @@
> >  #
> >  
> >  . ./common/preamble
> > -_begin_fstest auto quick prealloc rw
> > +_begin_fstest prealloc rw
> >  
> >  . ./common/filter
> >  
> > diff --git a/tests/xfs/632 b/tests/xfs/632
> > index 61041d45a706..3b1c61fdc129 100755
> > --- a/tests/xfs/632
> > +++ b/tests/xfs/632
> > @@ -9,7 +9,7 @@
> >  #
> >  
> >  . ./common/preamble
> > -_begin_fstest auto prealloc rw
> > +_begin_fstest prealloc rw
> >  
> >  . ./common/filter
> >  
> > -- 
> > 2.45.2
> > 
> > 
> 





[Index of Archives]     [Linux Filesystems Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux