FS/XFS testing framework
 help / color / mirror / Atom feed
* [xfstests PATCH] generic/567: add partial pages zeroing out case
@ 2024-12-23  2:39 Zhang Yi
  2024-12-24  6:45 ` Ojaswin Mujoo
                   ` (2 more replies)
  0 siblings, 3 replies; 9+ messages in thread
From: Zhang Yi @ 2024-12-23  2:39 UTC (permalink / raw)
  To: fstests, zlang
  Cc: linux-fsdevel, tytso, adilger.kernel, jack, willy, ojaswin,
	yi.zhang, yi.zhang, chengzhihao1, yukuai3, yangerkun

From: Zhang Yi <yi.zhang@huawei.com>

This addresses a data corruption issue encountered during partial page
zeroing in ext4 which the block size is smaller than the page size [1].
Expand this test to include a zeroing range test that spans two partial
pages to cover this case.

Link: https://lore.kernel.org/linux-ext4/20241220011637.1157197-2-yi.zhang@huaweicloud.com/ [1]
Signed-off-by: Zhang Yi <yi.zhang@huawei.com>
---
 tests/generic/567     | 50 +++++++++++++++++++++++++------------------
 tests/generic/567.out | 18 ++++++++++++++++
 2 files changed, 47 insertions(+), 21 deletions(-)

diff --git a/tests/generic/567 b/tests/generic/567
index fc109d0d..756280e8 100755
--- a/tests/generic/567
+++ b/tests/generic/567
@@ -4,43 +4,51 @@
 #
 # FS QA Test No. generic/567
 #
-# Test mapped writes against punch-hole to ensure we get the data
-# correctly written. This can expose data corruption bugs on filesystems
-# where the block size is smaller than the page size.
+# Test mapped writes against punch-hole and zero-range to ensure we get
+# the data correctly written. This can expose data corruption bugs on
+# filesystems where the block size is smaller than the page size.
 #
 # (generic/029 is a similar test but for truncate.)
 #
 . ./common/preamble
-_begin_fstest auto quick rw punch
+_begin_fstest auto quick rw punch zero
 
 # Import common functions.
 . ./common/filter
 
 _require_scratch
 _require_xfs_io_command "fpunch"
+_require_xfs_io_command "fzero"
 
 testfile=$SCRATCH_MNT/testfile
 
 _scratch_mkfs > /dev/null 2>&1
 _scratch_mount
 
-# Punch a hole straddling two pages to check that the mapped write after the
-# hole-punching is correctly handled.
-
-$XFS_IO_PROG -t -f \
--c "pwrite -S 0x58 0 12288" \
--c "mmap -rw 0 12288" \
--c "mwrite -S 0x5a 2048 8192" \
--c "fpunch 2048 8192" \
--c "mwrite -S 0x59 2048 8192" \
--c "close"      \
-$testfile | _filter_xfs_io
-
-echo "==== Pre-Remount ==="
-_hexdump $testfile
-_scratch_cycle_mount
-echo "==== Post-Remount =="
-_hexdump $testfile
+# Punch a hole and zero out straddling two pages to check that the mapped
+# write after the hole-punching and range-zeroing are correctly handled.
+_straddling_test()
+{
+	local test_cmd=$1
+
+	$XFS_IO_PROG -t -f \
+		-c "pwrite -S 0x58 0 12288" \
+		-c "mmap -rw 0 12288" \
+		-c "mwrite -S 0x5a 2048 8192" \
+		-c "$test_cmd 2048 8192" \
+		-c "mwrite -S 0x59 2048 8192" \
+		-c "close"      \
+	$testfile | _filter_xfs_io
+
+	echo "==== Pre-Remount ==="
+	_hexdump $testfile
+	_scratch_cycle_mount
+	echo "==== Post-Remount =="
+	_hexdump $testfile
+}
+
+_straddling_test "fpunch"
+_straddling_test "fzero"
 
 status=0
 exit
diff --git a/tests/generic/567.out b/tests/generic/567.out
index 0e826ed3..df89b8f3 100644
--- a/tests/generic/567.out
+++ b/tests/generic/567.out
@@ -17,3 +17,21 @@ XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 002800 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58  >XXXXXXXXXXXXXXXX<
 *
 003000
+wrote 12288/12288 bytes at offset 0
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+==== Pre-Remount ===
+000000 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58  >XXXXXXXXXXXXXXXX<
+*
+000800 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59  >YYYYYYYYYYYYYYYY<
+*
+002800 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58  >XXXXXXXXXXXXXXXX<
+*
+003000
+==== Post-Remount ==
+000000 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58  >XXXXXXXXXXXXXXXX<
+*
+000800 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59  >YYYYYYYYYYYYYYYY<
+*
+002800 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58  >XXXXXXXXXXXXXXXX<
+*
+003000
-- 
2.46.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2024-12-31  1:23 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-12-23  2:39 [xfstests PATCH] generic/567: add partial pages zeroing out case Zhang Yi
2024-12-24  6:45 ` Ojaswin Mujoo
2024-12-25  3:11   ` Zhang Yi
2024-12-24 19:40 ` Darrick J. Wong
2024-12-25  3:14   ` Zhang Yi
2024-12-27  5:28 ` Nirjhar Roy
2024-12-27  8:29   ` Zhang Yi
2024-12-30  4:16     ` Nirjhar Roy
2024-12-31  1:23       ` Zhang Yi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox