public inbox for linux-btrfs@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] common/dmlogwrites: add _require_logwrites_size helper
@ 2026-04-14 10:20 Disha Goel
  2026-04-14 10:20 ` [PATCH 2/2] btrfs/291: fix state transition logic and add size requirement Disha Goel
  0 siblings, 1 reply; 2+ messages in thread
From: Disha Goel @ 2026-04-14 10:20 UTC (permalink / raw)
  To: fstests
  Cc: linux-btrfs, ritesh.list, ojaswin, djwong, fdmanana,
	quwenruo.btrfs, zlang, disgoel

Add a new helper function _require_logwrites_size() to check if the
LOGWRITES_DEV meets a minimum size requirement.

This is useful for tests that use dm-log-writes with additional space
requirements, such as creating LVM snapshots during log replay or tests
that generate large amounts of logged I/O operations.

The function takes a size parameter in KB and skips the test if
LOGWRITES_DEV is smaller than the required size.

Signed-off-by: Disha Goel <disgoel@linux.ibm.com>
---
 common/dmlogwrites | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/common/dmlogwrites b/common/dmlogwrites
index a27e1966..1ce2b2fb 100644
--- a/common/dmlogwrites
+++ b/common/dmlogwrites
@@ -14,6 +14,15 @@ _require_log_writes()
 	_require_test_program "log-writes/replay-log"
 }
 
+_require_logwrites_size()
+{
+        [ $# -eq 1 ] || _fail "_require_logwrites_size: expected size param"
+
+        local devsize=$(_get_device_size $LOGWRITES_DEV)
+        [ $devsize -lt $1 ] && \
+                _notrun "LOGWRITES_DEV too small, ${devsize}KB < $1KB"
+}
+
 # Starting from v4.15-rc1, DAX support was added to dm-log-writes, but note
 # that it doesn't track the data that we write via the mmap(), so we can't do
 # any data integrity checking. We can only verify that the metadata writes for
-- 
2.45.1


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

* [PATCH 2/2] btrfs/291: fix state transition logic and add size requirement
  2026-04-14 10:20 [PATCH 1/2] common/dmlogwrites: add _require_logwrites_size helper Disha Goel
@ 2026-04-14 10:20 ` Disha Goel
  0 siblings, 0 replies; 2+ messages in thread
From: Disha Goel @ 2026-04-14 10:20 UTC (permalink / raw)
  To: fstests
  Cc: linux-btrfs, ritesh.list, ojaswin, djwong, fdmanana,
	quwenruo.btrfs, zlang, disgoel

This patch fixes two issues in btrfs/291:

1. Add minimum 9GB LOGWRITES_DEV size requirement
   The test creates LVM snapshots at each FUA point during replay,
   requiring significant space. Add _require_logwrites_size check
   to ensure sufficient space is available before running the test.

2. Fix state transition logic for verity enablement
   The original test assumed orphan items would always be created
   during verity enablement (state 0->1 transition). However, in
   some cases verity completes without creating orphan items,
   causing the test to fail with "expected to reach verity done state".

   Fix by transitioning to state 1 when either orphan items exist
   OR merkle items appear, handling both verity enablement paths.
   Also improve state 1 validation to only check for cleared merkle
   items when measurement actually fails.

The test now correctly handles verity enablement with or without
orphan items while maintaining crash consistency validation.

Signed-off-by: Disha Goel <disgoel@linux.ibm.com>
---
 tests/btrfs/291 | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/tests/btrfs/291 b/tests/btrfs/291
index 122aeaa5..d29dc5dd 100755
--- a/tests/btrfs/291
+++ b/tests/btrfs/291
@@ -37,6 +37,7 @@ _require_scratch
 _require_test
 _require_loop
 _require_log_writes
+_require_logwrites_size $((9 * 1024 * 1024))
 _require_dm_target snapshot
 _require_command $LVM_PROG lvm
 _require_scratch_verity
@@ -129,9 +130,14 @@ do
 	_udev_wait /dev/mapper/$vgname-$snapname
 
 	orphan=$(count_item $snap_dev ORPHAN)
-	[ $state -eq 0 ] && [ $orphan -gt 0 ] && state=1
-
 	pre_mount=$(count_merkle_items $snap_dev)
+
+	if [ $state -eq 0 ]; then
+		if [ $orphan -gt 0 ] || [ $pre_mount -gt 0 ]; then
+			state=1
+		fi
+	fi
+
 	_mount $snap_dev $SCRATCH_MNT || _fail "mount failed at entry $cur"
 	fsverity measure $SCRATCH_MNT/fsv >>$seqres.full 2>&1
 	measured=$?
@@ -143,8 +149,10 @@ do
 	echo "entry: $cur, state: $state, orphan: $orphan, pre_mount: $pre_mount, post_mount: $post_mount" >> $seqres.full
 
 	if [ $state -eq 1 ]; then
-		[ $post_mount -eq 0 ] || \
-			_fail "mount failed to clear under-construction merkle items pre: $pre_mount, post: $post_mount at entry $cur";
+		if [ $measured -ne 0 ]; then
+			[ $post_mount -eq 0 ] || \
+				_fail "mount failed to clear under-construction merkle items pre: $pre_mount, post: $post_mount at entry $cur";
+		fi
 	fi
 	if [ $state -eq 2 ]; then
 		[ $pre_mount -gt 0 ] || \
-- 
2.45.1


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

end of thread, other threads:[~2026-04-14 10:21 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-14 10:20 [PATCH 1/2] common/dmlogwrites: add _require_logwrites_size helper Disha Goel
2026-04-14 10:20 ` [PATCH 2/2] btrfs/291: fix state transition logic and add size requirement Disha Goel

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