Re: [PATCH 08/15] xfs: test zone stream separation for two direct writers

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, May 01, 2025 at 08:42:45AM -0500, Christoph Hellwig wrote:
> Check that two parallel direct sequential writers are separated into
> different zones.
> 
> Signed-off-by: Christoph Hellwig <hch@xxxxxx>
> ---
>  tests/xfs/4207     | 79 ++++++++++++++++++++++++++++++++++++++++++++++
>  tests/xfs/4207.out |  3 ++
>  2 files changed, 82 insertions(+)
>  create mode 100755 tests/xfs/4207
>  create mode 100644 tests/xfs/4207.out
> 
> diff --git a/tests/xfs/4207 b/tests/xfs/4207
> new file mode 100755
> index 000000000000..edc22da73bfb
> --- /dev/null
> +++ b/tests/xfs/4207
> @@ -0,0 +1,79 @@
> +#! /bin/bash
> +# SPDX-License-Identifier: GPL-2.0
> +# Copyright (c) 2024 Christoph Hellwig.
> +#
> +# FS QA Test No. 4207
> +#
> +# Test that multiple direct I/O write streams are directed to separate zones.
> +#
> +. ./common/preamble
> +_begin_fstest quick auto rw zone
> +
> +_cleanup()
> +{
> +	cd /
> +	_scratch_unmount >/dev/null 2>&1

Same... remove this _cleanup if the "unmount" isn't necessary.

> +}
> +
> +# Import common functions.
> +. ./common/filter

You don't use any filter helpers in common/filter ...

> +
> +_require_scratch
> +
> +_filter_rgno()

I've seen this function in many cases of this patchset, how about move it
to common/filter or common/xfs ?

> +{
> +	# the rg number is in column 4 of xfs_bmap output
> +	perl -ne '
> +		$rg = (split /\s+/)[4] ;
> +		if ($rg =~ /\d+/) {print "$rg "} ;
> +	'
> +}
> +
> +_scratch_mkfs_xfs >>$seqres.full 2>&1
> +_scratch_mount
> +_require_xfs_scratch_zoned 3
> +
> +fio_config=$tmp.fio
> +fio_out=$tmp.fio.out
> +fio_err=$tmp.fio.err
> +
> +cat >$fio_config <<EOF
> +[global]
> +bs=64k
> +iodepth=16
> +iodepth_batch=8
> +size=1m
> +directory=$SCRATCH_MNT
> +ioengine=libaio

_require_aio?

> +rw=write
> +direct=1

_require_odirect ? or _require_aiodio?

> +
> +[file1]
> +filename=file1
> +size=128m
> +
> +[file2]
> +filename=file2
> +size=128m
> +EOF
> +
> +_require_fio $fio_config
> +
> +$FIO_PROG $fio_config --output=$fio_out
> +cat $fio_out >> $seqres.full
> +
> +# Check the files only have a single extent each and are in separate zones
> +extents1=$(_count_extents $SCRATCH_MNT/file1)
> +extents2=$(_count_extents $SCRATCH_MNT/file2)
> +
> +echo "number of file 1 extents: $extents1"
> +echo "number of file 2 extents: $extents2"
> +
> +rg1=`xfs_bmap -v $SCRATCH_MNT/file1 | _filter_rgno`
> +rg2=`xfs_bmap -v $SCRATCH_MNT/file2 | _filter_rgno`
> +if [ "${rg1}" == "${rg2}" ]; then
> +	echo "same RG used for both files"
> +fi
> +
> +status=0
> +exit
> diff --git a/tests/xfs/4207.out b/tests/xfs/4207.out
> new file mode 100644
> index 000000000000..5d33658de474
> --- /dev/null
> +++ b/tests/xfs/4207.out
> @@ -0,0 +1,3 @@
> +QA output created by 4207
> +number of file 1 extents: 1
> +number of file 2 extents: 1
> -- 
> 2.47.2
> 
> 





[Index of Archives]     [XFS Filesystem Development (older mail)]     [Linux Filesystem Development]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux RAID]     [Linux SCSI]


  Powered by Linux