diff mbox series

[1/3] xfs/108: allow slightly higher block usage

Message ID 168609054837.2590724.6227482661383718314.stgit@frogsfrogsfrogs (mailing list archive)
State New, archived
Headers show
Series fstests: random fixes for v2023.05.28 | expand

Commit Message

Darrick J. Wong June 6, 2023, 10:29 p.m. UTC
From: Darrick J. Wong <djwong@kernel.org>

With pmem and fsdax enabled, I occasionally see this test fail on XFS:

   Mode: (0600/-rw-------)         Uid: (1)  Gid: (2)
 Disk quotas for User #1 (1)
 Filesystem Blocks Quota Limit Warn/Time Mounted on
-SCRATCH_DEV 48M 0 0 00 [------] SCRATCH_MNT
+SCRATCH_DEV 48.0M 0 0 00 [------] SCRATCH_MNT
 Disk quotas for User #1 (1)
 Filesystem Files Quota Limit Warn/Time Mounted on
 SCRATCH_DEV 3 0 0 00 [------] SCRATCH_MNT

The cause of this failure is fragmentation in the file mappings that
results in a block mapping structure that no longer fits in the inode.
Hence the block usage is 49160K instead of the 49152K that was written.
Use some fugly sed duct tape to make this test accomodate this
possiblity.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
---
 tests/xfs/108 |   14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

Comments

Bill O'Donnell June 7, 2023, 1:51 a.m. UTC | #1
On Tue, Jun 06, 2023 at 03:29:08PM -0700, Darrick J. Wong wrote:
> From: Darrick J. Wong <djwong@kernel.org>
> 
> With pmem and fsdax enabled, I occasionally see this test fail on XFS:
> 
>    Mode: (0600/-rw-------)         Uid: (1)  Gid: (2)
>  Disk quotas for User #1 (1)
>  Filesystem Blocks Quota Limit Warn/Time Mounted on
> -SCRATCH_DEV 48M 0 0 00 [------] SCRATCH_MNT
> +SCRATCH_DEV 48.0M 0 0 00 [------] SCRATCH_MNT
>  Disk quotas for User #1 (1)
>  Filesystem Files Quota Limit Warn/Time Mounted on
>  SCRATCH_DEV 3 0 0 00 [------] SCRATCH_MNT
> 
> The cause of this failure is fragmentation in the file mappings that
> results in a block mapping structure that no longer fits in the inode.
> Hence the block usage is 49160K instead of the 49152K that was written.
> Use some fugly sed duct tape to make this test accomodate this
> possiblity.
> 
> Signed-off-by: Darrick J. Wong <djwong@kernel.org>

LGTM.
Reviewed-by: Bill O'Donnell <bodonnel@redhat.com>

> ---
>  tests/xfs/108 |   14 +++++++++++---
>  1 file changed, 11 insertions(+), 3 deletions(-)
> 
> 
> diff --git a/tests/xfs/108 b/tests/xfs/108
> index 4607000544..8593edbdd2 100755
> --- a/tests/xfs/108
> +++ b/tests/xfs/108
> @@ -32,6 +32,14 @@ test_files()
>  	done
>  }
>  
> +# Some filesystem configurations fragment the file mapping more than others,
> +# which leads to the quota block counts being slightly higher than the 48MB
> +# written.
> +filter_quota()
> +{
> +	sed -e 's/48\.[01]M/48M/g' | _filter_quota
> +}
> +
>  test_accounting()
>  {
>  	echo "### some controlled buffered, direct and mmapd IO (type=$type)"
> @@ -49,9 +57,9 @@ test_accounting()
>  		$here/src/lstat64 $file | head -3 | _filter_scratch
>  	done
>  	$XFS_IO_PROG -c syncfs $SCRATCH_MNT
> -	$XFS_QUOTA_PROG -c "quota -hnb -$type $id" $QARGS | _filter_quota
> -	$XFS_QUOTA_PROG -c "quota -hni -$type $id" $QARGS | _filter_quota
> -	$XFS_QUOTA_PROG -c "quota -hnr -$type $id" $QARGS | _filter_quota
> +	$XFS_QUOTA_PROG -c "quota -hnb -$type $id" $QARGS | filter_quota
> +	$XFS_QUOTA_PROG -c "quota -hni -$type $id" $QARGS | filter_quota
> +	$XFS_QUOTA_PROG -c "quota -hnr -$type $id" $QARGS | filter_quota
>  }
>  
>  export MOUNT_OPTIONS="-opquota"
>
diff mbox series

Patch

diff --git a/tests/xfs/108 b/tests/xfs/108
index 4607000544..8593edbdd2 100755
--- a/tests/xfs/108
+++ b/tests/xfs/108
@@ -32,6 +32,14 @@  test_files()
 	done
 }
 
+# Some filesystem configurations fragment the file mapping more than others,
+# which leads to the quota block counts being slightly higher than the 48MB
+# written.
+filter_quota()
+{
+	sed -e 's/48\.[01]M/48M/g' | _filter_quota
+}
+
 test_accounting()
 {
 	echo "### some controlled buffered, direct and mmapd IO (type=$type)"
@@ -49,9 +57,9 @@  test_accounting()
 		$here/src/lstat64 $file | head -3 | _filter_scratch
 	done
 	$XFS_IO_PROG -c syncfs $SCRATCH_MNT
-	$XFS_QUOTA_PROG -c "quota -hnb -$type $id" $QARGS | _filter_quota
-	$XFS_QUOTA_PROG -c "quota -hni -$type $id" $QARGS | _filter_quota
-	$XFS_QUOTA_PROG -c "quota -hnr -$type $id" $QARGS | _filter_quota
+	$XFS_QUOTA_PROG -c "quota -hnb -$type $id" $QARGS | filter_quota
+	$XFS_QUOTA_PROG -c "quota -hni -$type $id" $QARGS | filter_quota
+	$XFS_QUOTA_PROG -c "quota -hnr -$type $id" $QARGS | filter_quota
 }
 
 export MOUNT_OPTIONS="-opquota"