From: Ojaswin Mujoo Date: Fri, 10 Apr 2026 06:36:01 +0000 (+0530) Subject: ext4/061,062: Minor fixes and refactoring X-Git-Tag: v2026.04.20~10 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=ea4d04e7b6766118bbf0cbe596de2e41a325119c;p=xfstests-dev.git ext4/061,062: Minor fixes and refactoring 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 Reviewed-by: Darrick J. Wong Signed-off-by: Ojaswin Mujoo Signed-off-by: Zorro Lang --- diff --git a/tests/ext4/061 b/tests/ext4/061 index 1d61c8b0..69ddeaca 100755 --- a/tests/ext4/061 +++ b/tests/ext4/061 @@ -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 diff --git a/tests/ext4/062 b/tests/ext4/062 index 05cce696..56bf080c 100755 --- a/tests/ext4/062 +++ b/tests/ext4/062 @@ -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