From 01b46074f237a9792eafa2eb797f7918da5a2360 Mon Sep 17 00:00:00 2001 From: "Darrick J. Wong" Date: Mon, 2 Jun 2025 12:22:11 -0700 Subject: [PATCH] generic/765: adjust various things Fix some bugs when detecting the atomic write geometry, record what atomic write geometry we're testing each time through the loop, and create a group for atomic writes tests. Signed-off-by: Darrick J. Wong Signed-off-by: Catherine Hoang Reviewed-by: John Garry Reviewed-by: Ritesh Harjani (IBM) Reviewed-by: Ojaswin Mujoo Signed-off-by: Zorro Lang --- common/rc | 4 ++-- doc/group-names.txt | 1 + tests/generic/765 | 25 ++++++++++++++++++++++++- 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/common/rc b/common/rc index d34763ff..f7d38894 100644 --- a/common/rc +++ b/common/rc @@ -5452,13 +5452,13 @@ _get_atomic_write_unit_min() _get_atomic_write_unit_max() { $XFS_IO_PROG -c "statx -r -m $STATX_WRITE_ATOMIC" $1 | \ - grep atomic_write_unit_max | grep -o '[0-9]\+' + grep -w atomic_write_unit_max | grep -o '[0-9]\+' } _get_atomic_write_segments_max() { $XFS_IO_PROG -c "statx -r -m $STATX_WRITE_ATOMIC" $1 | \ - grep atomic_write_segments_max | grep -o '[0-9]\+' + grep -w atomic_write_segments_max | grep -o '[0-9]\+' } _require_scratch_write_atomic() diff --git a/doc/group-names.txt b/doc/group-names.txt index 58502131..10b49e50 100644 --- a/doc/group-names.txt +++ b/doc/group-names.txt @@ -12,6 +12,7 @@ acl Access Control Lists admin xfs_admin functionality aio general libaio async io tests atime file access time +atomicwrites RWF_ATOMIC testing attr extended attributes attr2 xfs v2 extended aributes balance btrfs tree rebalance diff --git a/tests/generic/765 b/tests/generic/765 index 8695a306..84381730 100755 --- a/tests/generic/765 +++ b/tests/generic/765 @@ -7,7 +7,7 @@ # Validate atomic write support # . ./common/preamble -_begin_fstest auto quick rw +_begin_fstest auto quick rw atomicwrites _require_scratch_write_atomic _require_xfs_io_command pwrite -A @@ -34,6 +34,10 @@ get_supported_bsize() _notrun "$FSTYP does not support atomic writes" ;; esac + + echo "fs config ------------" >> $seqres.full + echo "min_bsize $min_bsize" >> $seqres.full + echo "max_bsize $max_bsize" >> $seqres.full } get_mkfs_opts() @@ -70,6 +74,11 @@ test_atomic_writes() file_max_write=$(_get_atomic_write_unit_max $testfile) file_max_segments=$(_get_atomic_write_segments_max $testfile) + echo "test $bsize --------------" >> $seqres.full + echo "file awu_min $file_min_write" >> $seqres.full + echo "file awu_max $file_max_write" >> $seqres.full + echo "file awu_segments $file_max_segments" >> $seqres.full + # Check that atomic min/max = FS block size test $file_min_write -eq $bsize || \ echo "atomic write min $file_min_write, should be fs block size $bsize" @@ -145,6 +154,15 @@ test_atomic_write_bounds() testfile=$SCRATCH_MNT/testfile touch $testfile + file_min_write=$(_get_atomic_write_unit_min $testfile) + file_max_write=$(_get_atomic_write_unit_max $testfile) + file_max_segments=$(_get_atomic_write_segments_max $testfile) + + echo "test awb $bsize --------------" >> $seqres.full + echo "file awu_min $file_min_write" >> $seqres.full + echo "file awu_max $file_max_write" >> $seqres.full + echo "file awu_segments $file_max_segments" >> $seqres.full + $XFS_IO_PROG -dc "pwrite -A -D -V1 -b $bsize 0 $bsize" $testfile 2>> $seqres.full && \ echo "atomic write should fail when bsize is out of bounds" @@ -157,6 +175,11 @@ sys_max_write=$(cat "/sys/block/$(_short_dev $SCRATCH_DEV)/queue/atomic_write_un bdev_min_write=$(_get_atomic_write_unit_min $SCRATCH_DEV) bdev_max_write=$(_get_atomic_write_unit_max $SCRATCH_DEV) +echo "sysfs awu_min $sys_min_write" >> $seqres.full +echo "sysfs awu_min $sys_max_write" >> $seqres.full +echo "bdev awu_min $bdev_min_write" >> $seqres.full +echo "bdev awu_min $bdev_max_write" >> $seqres.full + # Test that statx atomic values are the same as sysfs values if [ "$sys_min_write" -ne "$bdev_min_write" ]; then echo "bdev min write != sys min write" -- 2.39.5