Re: [PATCH 14/15] xfs: test that truncate does not spuriously return ENOSPC

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

 



On Thu, May 01, 2025 at 08:42:51AM -0500, Christoph Hellwig wrote:
> For zoned file systems, truncate to an offset not aligned to the block
> size need to allocate a new block for zeroing the remainder.
> 
> Test that this allocation can dip into the reserved pool even when other
> threads are waiting for space freed by GC.
> 
> Signed-off-by: Christoph Hellwig <hch@xxxxxx>
> ---
>  tests/xfs/4213     | 45 +++++++++++++++++++++++++++++++++++++++++++++
>  tests/xfs/4213.out |  1 +
>  2 files changed, 46 insertions(+)
>  create mode 100755 tests/xfs/4213
>  create mode 100644 tests/xfs/4213.out
> 
> diff --git a/tests/xfs/4213 b/tests/xfs/4213
> new file mode 100755
> index 000000000000..1509307d39d0
> --- /dev/null
> +++ b/tests/xfs/4213
> @@ -0,0 +1,45 @@
> +#! /bin/bash
> +# SPDX-License-Identifier: GPL-2.0
> +# Copyright (c) 2024 Christoph Hellwig.
> +#
> +# FS QA Test No. 4213
> +#
> +# Ensure that a truncate that needs to zero the EOFblock doesn't get ENOSPC
> +# when another thread is waiting for space to become available through GC.
> +#
> +. ./common/preamble
> +_begin_fstest auto rw zone
> +
> +_cleanup()
> +{
> +	cd /
> +	_scratch_unmount >/dev/null 2>&1

Remove this _cleanup if "unmount" isn't necessary at here.

> +}
> +
> +# Import common functions.
> +. ./common/filter
> +. ./common/zoned
> +
> +_require_scratch
> +
> +_scratch_mkfs_sized $((256 * 1024 * 1024))  >>$seqres.full 2>&1
> +_scratch_mount
> +_require_xfs_scratch_zoned
> +
> +for i in `seq 1 20`; do
> +	# fill up all user capacity
> +	PUNCH_FILE=$SCRATCH_MNT/punch.$i
> +	TEST_FILE=$SCRATCH_MNT/file.$i
> +
> +	dd if=/dev/zero of=$PUNCH_FILE bs=1M count=128 conv=fdatasync \
> +		>> $seqres.full 2>&1
> +
> +	dd if=/dev/zero of=$TEST_FILE bs=4k >> $seqres.full 2>&1 &
> +	# truncate to a value not rounded to the block size
> +	$XFS_IO_PROG -c "truncate 3275" $PUNCH_FILE
> +	sync $SCRATCH_MNT
> +	rm -f $TEST_FILE
> +done
> +
> +status=0
> +exit
> diff --git a/tests/xfs/4213.out b/tests/xfs/4213.out
> new file mode 100644
> index 000000000000..acf8716f9e13
> --- /dev/null
> +++ b/tests/xfs/4213.out
> @@ -0,0 +1 @@
> +QA output created by 4213
> -- 
> 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