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