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 +} + +# Import common functions. +. ./common/filter + +_require_scratch + +_filter_rgno() +{ + # 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 +rw=write +direct=1 + +[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