From a44a26f93b056bf4408bc4884df111ab05a973f3 Mon Sep 17 00:00:00 2001 From: Leo Martins Date: Tue, 24 Mar 2026 13:40:00 -0700 Subject: [PATCH] generic/301: skip extent count check on btrfs The 2/3 fragmentation threshold was designed for XFS's cowextsize mechanism and is not applicable to btrfs. After commit 0dc118b3c327 ("btrfs: be less aggressive with metadata overcommit when we can do full flushing"), btrfs commits transactions more frequently during writeback, reducing the extent allocator's opportunity to coalesce adjacent CoW extents. This causes the extent count to sometimes cross the threshold, making the test flaky on btrfs. Skip only the extent count assertion for btrfs while keeping the CoW write + remount + md5sum data integrity checks, which remain useful. Signed-off-by: Leo Martins Reviewed-by: Qu Wenruo Reviewed-by: Darrick J. Wong Signed-off-by: Zorro Lang --- tests/generic/301 | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tests/generic/301 b/tests/generic/301 index 0303f25d..3e9798ec 100755 --- a/tests/generic/301 +++ b/tests/generic/301 @@ -62,7 +62,13 @@ new_extents=$(_count_extents $testdir/file2) echo "old extents: $old_extents" >> $seqres.full echo "new extents: $new_extents" >> $seqres.full echo "maximum extents: $internal_blks" >> $seqres.full -test $new_extents -lt $((internal_blks * 2 / 3)) || echo "file2 badly fragmented" +# btrfs CoW extent allocation depends on transaction commit frequency and +# metadata reservation behavior, so the 2/3 fragmentation threshold (designed +# for XFS cowextsize) is not applicable. +if [ "$FSTYP" != "btrfs" ]; then + test $new_extents -lt $((internal_blks * 2 / 3)) || \ + echo "file2 badly fragmented" +fi # success, all done status=0 -- 2.47.3