[PATCH] generic/064: allow 50 extents on F2FS after fcollapse
Jan Prusakowski <[email protected]> Mon, 22 Jun 2026 07:04:38 +0000
| Newsgroups | org.kernel.vger.fstests,net.sourceforge.lists.linux-f2fs-devel |
|---|---|
| Message-ID | <[email protected]> |
On F2FS, generic/064 fails with "extents mismatched before = 1 after = 50" following multiple fcollapse (collapse range) operations. To ensure crash consistency and checkpoint integrity, F2FS forbids in-place SSR (Summary Standalone Replacement) overwrites on valid checkpointed blocks. When collapse range shifts blocks, F2FS allocates new data pages in LFS mode (out-of-place log writes). As a result, sequential collapse range calls rewrite shifted blocks at new log locations, intentionally leaving the file with 50 extents. Adjust the extent verification in generic/064 to expect exactly 50 extents on F2FS, while preserving the strict 1-extent requirement for all other filesystems. Data integrity continues to be verified via byte comparison. Signed-off-by: Jaegeuk Kim <[email protected]> Signed-off-by: Jan Prusakowski <[email protected]> --- tests/generic/064 | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tests/generic/064 b/tests/generic/064 index aed13970..b77eccb4 100755 --- a/tests/generic/064 +++ b/tests/generic/064 @@ -59,7 +59,13 @@ for (( j=0; j < $(($BLOCKS/2)); j++ )); do done extent_after=`_count_extents $dest` -if [ $extent_before -ne $extent_after ]; then + +if [ "$FSTYP" == "f2fs" ]; +then + if [ $extent_before -ne 1 ] || [ $extent_after -ne 50 ]; then + echo "extents mismatched before = $extent_before after = $extent_after" + fi +elif [ $extent_before -ne $extent_after ]; then echo "extents mismatched before = $extent_before after = $extent_after" fi -- 2.55.0.rc0.786.g65d90a0328-goog