#! /bin/bash
# SPDX-License-Identifier: GPL-2.0
# Copyright (c) 2024 Christoph Hellwig.
#
# FS QA Test No. 641
#
# Test that multiple buffered I/O write streams are directed to separate zones
# when written back with the file still open.
#
. ./common/preamble
_begin_fstest quick auto rw zone

. ./common/xfs

_require_scratch
_require_odirect
_require_aio

_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
rw=write
fsync_on_close=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_bmap_gno`
rg2=`xfs_bmap -v $SCRATCH_MNT/file2 | _filter_bmap_gno`
if [ "${rg1}" == "${rg2}" ]; then
	echo "same RG used for both files"
fi

status=0
exit
