summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xtests/btrfs/29538
-rw-r--r--tests/btrfs/295.out2
2 files changed, 40 insertions, 0 deletions
diff --git a/tests/btrfs/295 b/tests/btrfs/295
new file mode 100755
index 00000000..a9a8e553
--- /dev/null
+++ b/tests/btrfs/295
@@ -0,0 +1,38 @@
+#! /bin/bash
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (C) 2023 SUSE Linux Products GmbH. All Rights Reserved.
+#
+# FS QA Test No. 295
+#
+# Make sure btrfs handles critical errors gracefully during mount.
+#
+. ./common/preamble
+_begin_fstest auto quick dangerous
+
+. ./common/filter
+_supported_fs btrfs
+_require_scratch
+
+# Use single metadata profile so we only need to corrupt one copy of tree block
+_scratch_mkfs -m single > $seqres.full
+
+logical_root=$($BTRFS_UTIL_PROG inspect dump-tree -t root "$SCRATCH_DEV" | \
+ grep leaf | head -n1 | cut -f2 -d\ )
+physical_root=$(_btrfs_get_physical $logical_root 1)
+
+echo "tree root logical=$logical_root" >> $seqres.full
+echo "tree root physical=$physical_root" >> $seqres.full
+
+_pwrite_byte 0x00 "$physical_root" 4 $SCRATCH_DEV >> $seqres.full
+
+# mount may lead to crash
+_try_scratch_mount >> $seqres.full 2>&1
+
+echo "Silence is golden"
+
+# Re-create the fs to avoid false alert from the corrupted fs.
+_scratch_mkfs -m single >> $seqres.full
+
+# success, all done
+status=0
+exit
diff --git a/tests/btrfs/295.out b/tests/btrfs/295.out
new file mode 100644
index 00000000..cbebcba7
--- /dev/null
+++ b/tests/btrfs/295.out
@@ -0,0 +1,2 @@
+QA output created by 295
+Silence is golden