From: Qu Wenruo Date: Mon, 12 May 2025 09:39:10 +0000 (+0930) Subject: fstests: btrfs: a new test case to verify scrub and rescue=idatacsums X-Git-Tag: v2025.05.25~5 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=3bbdf4241a5f4c7c0b02dad7617c29a053e2a24a;p=xfstests-dev.git fstests: btrfs: a new test case to verify scrub and rescue=idatacsums There is a kernel bug report that scrub will trigger a NULL pointer dereference when rescue=idatacsums mount option is provided. Add a test case for such situation, to verify kernel can gracefully reject scrub when there is no csum tree. Signed-off-by: Qu Wenruo Reviewed-by: Johannes Thumshirn Reviewed-by: Filipe Manana Reviewed-by: Anand Jain Signed-off-by: Zorro Lang --- diff --git a/tests/btrfs/336 b/tests/btrfs/336 new file mode 100755 index 00000000..f6691bae --- /dev/null +++ b/tests/btrfs/336 @@ -0,0 +1,35 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2025 SUSE Linux Products GmbH. All Rights Reserved. +# +# FS QA Test 336 +# +# Make sure read-only scrub won't cause NULL pointer dereference with +# rescue=idatacsums mount option +# +. ./common/preamble +_begin_fstest auto scrub quick + +_fixed_by_kernel_commit 6aecd91a5c5b \ + "btrfs: avoid NULL pointer dereference if no valid extent tree" + +_require_scratch +_scratch_mkfs >> $seqres.full + +_try_scratch_mount "-o ro,rescue=ignoredatacsums" > /dev/null 2>&1 || + _notrun "rescue=ignoredatacsums mount option not supported" + +# For unpatched kernel this will cause NULL pointer dereference and crash the kernel. +$BTRFS_UTIL_PROG scrub start -Br $SCRATCH_MNT >> $seqres.full 2>&1 +# For patched kernel scrub will be gracefully rejected. +if [ $? -eq 0 ]; then + echo "read-only scrub should fail but didn't" +fi + +_scratch_unmount + +echo "Silence is golden" + +# success, all done +status=0 +exit diff --git a/tests/btrfs/336.out b/tests/btrfs/336.out new file mode 100644 index 00000000..9263628e --- /dev/null +++ b/tests/btrfs/336.out @@ -0,0 +1,2 @@ +QA output created by 336 +Silence is golden