Re: [PATCH 2/2] generic: increase file size to match CoW delayed allocation for XFS 64k bs

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



On Thu, Oct 24, 2024 at 01:23:11PM +0200, Pankaj Raghav wrote:
> generic/305,326,328 have been failing for 32k and 64k blocksizes.
> 
> We do the following in the test 305 and 326 (highlighting only the part
> that is related to failure):
> 
> - create a 1M test-1/file1
> - reflink test-1/file2 and test-1/file3 based on test-1/file1
> - Overwrite first half of test-1/file2 to do a CoW operation
> - Expect the size of the test-1 dir to be 3M
> 
> The test is failing for 32k and 64k blocksizes as the number of blocks
> (direct + delayed) is higher than number of blocks allocated for
> blocksizes < 32k in XFS, resulting in size of test-1 to be more than 3M.
> Though generic/328 has a different IO pattern, the reason for failure is
> the same.
> 
> This is the failure output :
>     --- tests/generic/305.out   2024-06-05 11:52:27.430262812 +0000
>     +++ /root/results//64k_4ks/generic/305.out.bad      2024-10-23 10:56:57.643986870 +0000
>     @@ -11,7 +11,7 @@
>      CoW one of the files
>      root 0 0 0
>      nobody 0 0 0
>     -fsgqa 3072 0 0
>     +fsgqa 4608 0 0
>      Remount the FS to see if accounting changes
>      root 0 0 0
> 
> In these tests, XFS is doing a delayed allocation of
> XFS_DEFAULT_COWEXTSIZE_HINT(32). Increase the size of the file so that
> the CoW write(sz/2) matches the maximum size of the delayed allocation
> for the max blocksize of 64k. This will ensure that all parts of the
> delayed extents are converted to real extents for all blocksizes.
> 
> Even though this is not the most complete solution to fix these tests,
> the objective of these tests are to test quota and not the effect of delayed
> allocations.
> 
> Signed-off-by: Pankaj Raghav <p.raghav@xxxxxxxxxxx>
> ---
>  tests/generic/305     |  2 +-
>  tests/generic/305.out | 12 ++++++------
>  tests/generic/326     |  2 +-
>  tests/generic/326.out | 12 ++++++------
>  tests/generic/328     |  2 +-
>  tests/generic/328.out | 16 +++++++++-------
>  6 files changed, 24 insertions(+), 22 deletions(-)
> 
> diff --git a/tests/generic/305 b/tests/generic/305
> index c89bd821..6ccbb3d0 100755
> --- a/tests/generic/305
> +++ b/tests/generic/305
> @@ -32,7 +32,7 @@ quotaon $SCRATCH_MNT 2> /dev/null
>  testdir=$SCRATCH_MNT/test-$seq
>  mkdir $testdir
>  
> -sz=1048576
> +sz=4194304

Hm, so you're increasing the filesize so that it exceeds 32*64k?
Hence 4M for some nice round numbers?

If so then I think I'm fine with that.  Let's see what testing thinks.
:)
Reviewed-by: Darrick J. Wong <djwong@xxxxxxxxxx>

--D

>  echo "Create the original files"
>  $XFS_IO_PROG -f -c "pwrite -S 0x61 -b $sz 0 $sz" $testdir/file1 >> $seqres.full
>  _cp_reflink $testdir/file1 $testdir/file2 >> $seqres.full
> diff --git a/tests/generic/305.out b/tests/generic/305.out
> index fbd4e241..1c348d1e 100644
> --- a/tests/generic/305.out
> +++ b/tests/generic/305.out
> @@ -1,22 +1,22 @@
>  QA output created by 305
>  Format and mount
>  Create the original files
> -root 3072 0 0
> +root 12288 0 0
>  nobody 0 0 0
>  fsgqa 0 0 0
>  Change file ownership
>  root 0 0 0
>  nobody 0 0 0
> -fsgqa 3072 0 0
> +fsgqa 12288 0 0
>  CoW one of the files
>  root 0 0 0
>  nobody 0 0 0
> -fsgqa 3072 0 0
> +fsgqa 12288 0 0
>  Remount the FS to see if accounting changes
>  root 0 0 0
>  nobody 0 0 0
> -fsgqa 3072 0 0
> +fsgqa 12288 0 0
>  Chown one of the files
>  root 0 0 0
> -nobody 1024 0 0
> -fsgqa 2048 0 0
> +nobody 4096 0 0
> +fsgqa 8192 0 0
> diff --git a/tests/generic/326 b/tests/generic/326
> index 1783fbf2..321e7dc6 100755
> --- a/tests/generic/326
> +++ b/tests/generic/326
> @@ -33,7 +33,7 @@ quotaon $SCRATCH_MNT 2> /dev/null
>  testdir=$SCRATCH_MNT/test-$seq
>  mkdir $testdir
>  
> -sz=1048576
> +sz=4194304
>  echo "Create the original files"
>  $XFS_IO_PROG -f -c "pwrite -S 0x61 -b $sz 0 $sz" $testdir/file1 >> $seqres.full
>  _cp_reflink $testdir/file1 $testdir/file2 >> $seqres.full
> diff --git a/tests/generic/326.out b/tests/generic/326.out
> index de7f20b5..4ccb3250 100644
> --- a/tests/generic/326.out
> +++ b/tests/generic/326.out
> @@ -1,22 +1,22 @@
>  QA output created by 326
>  Format and mount
>  Create the original files
> -root 3072 0 0
> +root 12288 0 0
>  nobody 0 0 0
>  fsgqa 0 0 0
>  Change file ownership
>  root 0 0 0
>  nobody 0 0 0
> -fsgqa 3072 0 0
> +fsgqa 12288 0 0
>  CoW one of the files
>  root 0 0 0
>  nobody 0 0 0
> -fsgqa 3072 0 0
> +fsgqa 12288 0 0
>  Remount the FS to see if accounting changes
>  root 0 0 0
>  nobody 0 0 0
> -fsgqa 3072 0 0
> +fsgqa 12288 0 0
>  Chown one of the files
>  root 0 0 0
> -nobody 1024 0 0
> -fsgqa 2048 0 0
> +nobody 4096 0 0
> +fsgqa 8192 0 0
> diff --git a/tests/generic/328 b/tests/generic/328
> index 0c8e1986..25e1f2a0 100755
> --- a/tests/generic/328
> +++ b/tests/generic/328
> @@ -32,7 +32,7 @@ quotaon $SCRATCH_MNT 2> /dev/null
>  testdir=$SCRATCH_MNT/test-$seq
>  mkdir $testdir
>  
> -sz=1048576
> +sz=4194304
>  echo "Create the original files"
>  $XFS_IO_PROG -f -c "pwrite -S 0x61 -b $sz 0 $sz" $testdir/file1 >> $seqres.full
>  chown $qa_user $testdir/file1
> diff --git a/tests/generic/328.out b/tests/generic/328.out
> index b7fe9f8c..0167637e 100644
> --- a/tests/generic/328.out
> +++ b/tests/generic/328.out
> @@ -2,24 +2,26 @@ QA output created by 328
>  Format and mount
>  Create the original files
>  root 0 0 0
> -fsgqa 3072 0 0
> +fsgqa 12288 0 0
>  Set hard quota to prevent rewrite
>  root 0 0 0
> -fsgqa 3072 0 1024
> +fsgqa 12288 0 1024
>  Try to dio write the whole file
>  pwrite: Disk quota exceeded
>  root 0 0 0
> -fsgqa 3072 0 1024
> +fsgqa 12288 0 1024
>  Try to write the whole file
>  pwrite: Disk quota exceeded
>  root 0 0 0
> -fsgqa 3072 0 1024
> +fsgqa 12288 0 1024
>  Set hard quota to allow rewrite
>  root 0 0 0
> -fsgqa 3072 0 8192
> +fsgqa 12288 0 8192
>  Try to dio write the whole file
> +pwrite: Disk quota exceeded
>  root 0 0 0
> -fsgqa 3072 0 8192
> +fsgqa 12288 0 8192
>  Try to write the whole file
> +pwrite: Disk quota exceeded
>  root 0 0 0
> -fsgqa 3072 0 8192
> +fsgqa 12288 0 8192
> -- 
> 2.44.1
> 
> 




[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