On Wed, Jul 23, 2025 at 01:04:06PM +0100, fdmanana@xxxxxxxxxx wrote: > From: Filipe Manana <fdmanana@xxxxxxxx> > > The test currently assumes the filesystem can do in place writes (no > Copy-On-Write, no allocation of new extents) when overwriting a file. > While that is the case for most filesystems in most configurations, there > are exceptions such as zoned xfs where overwriting results in allocating > new extents for the new data. > > So make the test check that in place writes are supported and skip the > test if they are not supported. > > Signed-off-by: Filipe Manana <fdmanana@xxxxxxxx> > --- > common/rc | 59 +++++++++++++++++++++++++++++++++++++++++++++++ > tests/generic/211 | 1 + > 2 files changed, 60 insertions(+) > > diff --git a/common/rc b/common/rc > index 96578d15..52aade10 100644 > --- a/common/rc > +++ b/common/rc > @@ -5873,6 +5873,65 @@ _require_program() { > _have_program "$1" || _notrun "$tag required" > } > > +# Test that a filesystem can do writes to a file in place (without allocating > +# new extents, without Copy-On-Write semantics). > +_require_inplace_writes() > +{ > + _require_xfs_io_command "fiemap" > + > + local target=$1 > + local test_file="${target}/test_inplace_writes" > + local fiemap_before > + local fiemap_after > + > + if [ -z "$target" ]; then > + _fail "Usage: _require_inplace_writes <filesystem path>" > + fi > + > + rm -f "$test_file" > + touch "$test_file" > + > + # Set the file to NOCOW mode on btrfs, which must be done while the file > + # is empty, otherwise it fails. > + if [ "$FSTYP" == "btrfs" ]; then > + _require_chattr C > + $CHATTR_PROG +C "$test_file" > + fi Can you factor this into a _force_inplace helper instead of spreading file systems specific in random helpers (I know we have a few of those, but we need to get rid of that to make things maintainable..) > + # If the filesystem supports inplace writes, then the extent mapping is > + # the same before and after overwriting. > + if [ "${fiemap_after}" != "${fiemap_before}" ]; then > + _notrun "inplace writes not supported" I think in-place would be the more usual spelling instead of inplace. Otherwise this looks great, thanks!