Re: [PATCH 1/6] ext4/061,062: Minor fixes and refactoring

Disha Goel <[email protected]>
Newsgroups org.kernel.vger.fstests
Message-ID <[email protected]>
On 10/04/26 12:06 pm, Ojaswin Mujoo wrote:
> 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 <[email protected]>
> Reviewed-by: "Darrick J. Wong" <[email protected]>
> Signed-off-by: Ojaswin Mujoo <[email protected]>

Hi Ojaswin,

I've tested this patch and it works correctly. The tests now properly 
use filesystem atomic write limits instead of block device limits.

Tested-by: Disha Goel <[email protected]>

> ---
>   tests/ext4/061 | 28 ++++++++++++++++++++--------
>   tests/ext4/062 | 26 +++++++++++++++++++-------
>   2 files changed, 39 insertions(+), 15 deletions(-)
> 
> 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
>   

-- 
Regards,
Disha
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.