]> git-server-git.apps.pok.os.sepia.ceph.com Git - xfstests-dev.git/commitdiff
ext4/061,062: Minor fixes and refactoring
authorOjaswin Mujoo <ojaswin@linux.ibm.com>
Fri, 10 Apr 2026 06:36:01 +0000 (12:06 +0530)
committerZorro Lang <zlang@kernel.org>
Mon, 13 Apr 2026 17:42:41 +0000 (01:42 +0800)
Fix 2 issues in the tests:

1. Use fs atomic write limits instead of bdev's

The tests use block device's limits instead of limits advertised
by filesystem. This can cause failures because block device might
advertise a higher maximum than the FS.  Fix the tests to use
filesystem's limits instead.

2. Fix the test loop range

Fix the test loop start and end so that our calculations for
blocksize, clustersize and iosize are correct.

Reported-by: Disha Goel <disgoel@linux.ibm.com>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Ojaswin Mujoo <ojaswin@linux.ibm.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
tests/ext4/061
tests/ext4/062

index 1d61c8b04ebe530c6621d94bf9b3563ee455277d..69ddeaca12556501bc6f102dbf26c5c800b94bf7 100755 (executable)
@@ -31,10 +31,19 @@ _require_aiodio
 FIO_LOAD=$(($(nproc) * 2 * LOAD_FACTOR))
 SIZE=$((100*1024*1024))
 
-# Calculate fsblocksize as per bdev atomic write units.
-bdev_awu_min=$(_get_atomic_write_unit_min $SCRATCH_DEV)
-bdev_awu_max=$(_get_atomic_write_unit_max $SCRATCH_DEV)
-bs=$(_max 4096 "$bdev_awu_min")
+_scratch_mkfs > /dev/null 2>&1 || \
+       _notrun "mkfs failed"
+_try_scratch_mount || \
+       _notrun "mount failed"
+
+touch $SCRATCH_MNT/f
+
+fs_awu_min=$(_get_atomic_write_unit_min $SCRATCH_MNT/f)
+fs_awu_max=$(_get_atomic_write_unit_max $SCRATCH_MNT/f)
+bs=$(_max 4096 "$fs_awu_min")
+ps=$(_get_page_size)
+
+_scratch_unmount
 
 function create_fio_configs()
 {
@@ -97,10 +106,11 @@ run_test_one() {
        local cs=$2
        local iosize=$3
 
+       echo "== Testing: bs=$bs cs=$cs iosize=$iosize ==" >> $seqres.full
+
        MKFS_OPTIONS="-O bigalloc -b $bs -C $cs"
        _scratch_mkfs_ext4  >> $seqres.full 2>&1 || return
        if _try_scratch_mount >> $seqres.full 2>&1; then
-               echo "== Testing: bs=$bs cs=$cs iosize=$iosize ==" >> $seqres.full
 
                touch $SCRATCH_MNT/f1
                create_fio_configs $iosize
@@ -127,7 +137,7 @@ run_test() {
        # cluster sizes above 16 x blocksize are experimental so avoid them
        # Also, cap cluster size at 128kb to keep it reasonable for large
        # blocks size
-       max_cs=$(_min $((16 * bs)) "$bdev_awu_max" $((128 * 1024)))
+       max_cs=$(_min $((16 * bs)) "$fs_awu_max" $((128 * 1024)))
 
        # Fuzz for combinations of blocksize, clustersize and
        # iosize that cover most of the cases
@@ -145,8 +155,10 @@ fio_out=$tmp.fio.out
 create_fio_configs $bs
 _require_fio $fio_aw_config
 
-for ((bs=$bs; bs <= $(_get_page_size); bs = $bs << 1)); do
-       run_test $bs
+echo "Awu min: $fs_awu_min Awu max: $fs_awu_max" >> $seqres.full
+
+for ((bs=$fs_awu_min; bs <= $(_min ps fs_awu_max); bs = $bs << 1)); do
+       run_test $bs $cs $iosize
 done
 
 # success, all done
index 05cce696a3441d3192775bf80c963154e1d8fd71..56bf080c72c984821428652ae179a42eb8cace70 100755 (executable)
@@ -33,10 +33,19 @@ _require_aiodio
 FSSIZE=$((360*1024*1024))
 FIO_LOAD=$(($(nproc) * LOAD_FACTOR))
 
-# Calculate bs as per bdev atomic write units.
-bdev_awu_min=$(_get_atomic_write_unit_min $SCRATCH_DEV)
-bdev_awu_max=$(_get_atomic_write_unit_max $SCRATCH_DEV)
-bs=$(_max 4096 "$bdev_awu_min")
+_scratch_mkfs > /dev/null 2>&1 || \
+       _notrun "mkfs failed"
+_try_scratch_mount || \
+       _notrun "mount failed"
+
+touch $SCRATCH_MNT/f
+
+fs_awu_min=$(_get_atomic_write_unit_min $SCRATCH_MNT/f)
+fs_awu_max=$(_get_atomic_write_unit_max $SCRATCH_MNT/f)
+bs=$(_max 4096 "$fs_awu_min")
+ps=$(_get_page_size)
+
+_scratch_unmount
 
 function create_fio_configs()
 {
@@ -146,10 +155,11 @@ run_test_one() {
        local cs=$2
        local iosize=$3
 
+       echo "Testing: bs=$bs cs=$cs iosize=$iosize" >> $seqres.full
+
        MKFS_OPTIONS="-O bigalloc -b $bs -C $cs"
        _scratch_mkfs_sized "$FSSIZE" >> $seqres.full 2>&1 || return
        if _try_scratch_mount >> $seqres.full 2>&1; then
-               echo "Testing: bs=$bs cs=$cs iosize=$iosize" >> $seqres.full
 
                touch $SCRATCH_MNT/f1
                create_fio_configs $iosize
@@ -175,7 +185,7 @@ run_test() {
        # cluster sizes above 16 x blocksize are experimental so avoid them
        # Also, cap cluster size at 128kb to keep it reasonable for large
        # blocks size
-       max_cs=$(_min $((16 * bs)) "$bdev_awu_max" $((128 * 1024)))
+       max_cs=$(_min $((16 * bs)) "$fs_awu_max" $((128 * 1024)))
 
        # Fuzz for combinations of blocksize, clustersize and
        # iosize that cover most of the cases
@@ -193,7 +203,9 @@ fio_out=$tmp.fio.out
 create_fio_configs $bs
 _require_fio $fio_aw_config
 
-for ((bs=$bs; bs <= $(_get_page_size); bs = $bs << 1)); do
+echo "Awu min: $fs_awu_min Awu max: $fs_awu_max" >> $seqres.full
+
+for ((bs=$fs_awu_min; bs <= $(_min ps fs_awu_max); bs = $bs << 1)); do
        run_test $bs $cs $iosize
 done