* [PATCH] btrfs/321: make the test work when compression is enabled
@ 2024-09-12 12:45 fdmanana
2024-09-12 21:35 ` Qu Wenruo
2024-09-20 10:58 ` Anand Jain
0 siblings, 2 replies; 3+ messages in thread
From: fdmanana @ 2024-09-12 12:45 UTC (permalink / raw)
To: fstests; +Cc: linux-btrfs, Filipe Manana
From: Filipe Manana <fdmanana@suse.com>
When running btrfs/321 with compression enabled it fails like this:
$ MOUNT_OPTIONS="-o compress" ./check btrfs/321
FSTYP -- btrfs
PLATFORM -- Linux/x86_64 debian0 6.11.0-rc7-btrfs-next-174+ #1 SMP PREEMPT_DYNAMIC Tue Sep 10 17:11:38 WEST 2024
MKFS_OPTIONS -- /dev/sdc
MOUNT_OPTIONS -- -o compress /dev/sdc /home/fdmanana/btrfs-tests/scratch_1
btrfs/321 2s ... [failed, exit status 1]- output mismatch (see /home/fdmanana/git/hub/xfstests/results//btrfs/321.out.bad)
--- tests/btrfs/321.out 2024-09-12 12:12:11.259272125 +0100
+++ /home/fdmanana/git/hub/xfstests/results//btrfs/321.out.bad 2024-09-12 13:18:40.231120012 +0100
@@ -1,2 +1,5 @@
QA output created by 321
-Silence is golden
+mount: /home/fdmanana/btrfs-tests/scratch_1: can't read superblock on /dev/sdc.
+ dmesg(1) may have more information after failed mount system call.
+mount -o compress -o ro /dev/sdc /home/fdmanana/btrfs-tests/scratch_1 failed
+(see /home/fdmanana/git/hub/xfstests/results//btrfs/321.full for details)
...
(Run 'diff -u /home/fdmanana/git/hub/xfstests/tests/btrfs/321.out /home/fdmanana/git/hub/xfstests/results//btrfs/321.out.bad' to see the entire diff)
HINT: You _MAY_ be missing kernel fix:
10d9d8c3512f btrfs: fix a use-after-free bug when hitting errors inside btrfs_submit_chunk()
Ran: btrfs/321
Failures: btrfs/321
Failed 1 of 1 tests
This is because with compression enabled we get a csum tree that has only
one leaf, and that leaf is the root of the csum tree. That means that
after the test corrupts the leaf, the next mount will fail since an error
loading the root is critical and makes the mount operation fail.
Fix this by creating a file with 128M of data instead of 32M, as this
guarantees that even if compression is enabled, and even with the maximum
allowed leaf size (64K), we still get a csum tree with multiple leaves,
making the test work.
Signed-off-by: Filipe Manana <fdmanana@suse.com>
---
tests/btrfs/321 | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/tests/btrfs/321 b/tests/btrfs/321
index 93935530..c13ccc1e 100755
--- a/tests/btrfs/321
+++ b/tests/btrfs/321
@@ -33,9 +33,11 @@ _scratch_pool_mkfs "-d raid0 -m single -n 4k -s 4k" >> $seqres.full 2>&1
# This test requires data checksum to trigger the bug.
_scratch_mount -o datasum,datacow
-# For the smallest csum size (CRC32C) it's 4 bytes per 4K, writing 32M data
-# will need 32K data checksum at minimal, which is at least 8 leaves.
-_pwrite_byte 0xef 0 32m "$SCRATCH_MNT/foobar" > /dev/null
+# For the smallest csum size (CRC32C) it's 4 bytes per 4K, writing 128M of data
+# will need 128K data checksum at minimal, which is at least 34 leaves when
+# running without compression and a leaf size of 64K. With compression enabled
+# and a 64K leaf size, it will be 2 leaves.
+_pwrite_byte 0xef 0 128m "$SCRATCH_MNT/foobar" > /dev/null
_scratch_unmount
--
2.43.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] btrfs/321: make the test work when compression is enabled
2024-09-12 12:45 [PATCH] btrfs/321: make the test work when compression is enabled fdmanana
@ 2024-09-12 21:35 ` Qu Wenruo
2024-09-20 10:58 ` Anand Jain
1 sibling, 0 replies; 3+ messages in thread
From: Qu Wenruo @ 2024-09-12 21:35 UTC (permalink / raw)
To: fdmanana, fstests; +Cc: linux-btrfs, Filipe Manana
在 2024/9/12 22:15, fdmanana@kernel.org 写道:
> From: Filipe Manana <fdmanana@suse.com>
>
> When running btrfs/321 with compression enabled it fails like this:
>
> $ MOUNT_OPTIONS="-o compress" ./check btrfs/321
> FSTYP -- btrfs
> PLATFORM -- Linux/x86_64 debian0 6.11.0-rc7-btrfs-next-174+ #1 SMP PREEMPT_DYNAMIC Tue Sep 10 17:11:38 WEST 2024
> MKFS_OPTIONS -- /dev/sdc
> MOUNT_OPTIONS -- -o compress /dev/sdc /home/fdmanana/btrfs-tests/scratch_1
>
> btrfs/321 2s ... [failed, exit status 1]- output mismatch (see /home/fdmanana/git/hub/xfstests/results//btrfs/321.out.bad)
> --- tests/btrfs/321.out 2024-09-12 12:12:11.259272125 +0100
> +++ /home/fdmanana/git/hub/xfstests/results//btrfs/321.out.bad 2024-09-12 13:18:40.231120012 +0100
> @@ -1,2 +1,5 @@
> QA output created by 321
> -Silence is golden
> +mount: /home/fdmanana/btrfs-tests/scratch_1: can't read superblock on /dev/sdc.
> + dmesg(1) may have more information after failed mount system call.
> +mount -o compress -o ro /dev/sdc /home/fdmanana/btrfs-tests/scratch_1 failed
> +(see /home/fdmanana/git/hub/xfstests/results//btrfs/321.full for details)
> ...
> (Run 'diff -u /home/fdmanana/git/hub/xfstests/tests/btrfs/321.out /home/fdmanana/git/hub/xfstests/results//btrfs/321.out.bad' to see the entire diff)
>
> HINT: You _MAY_ be missing kernel fix:
> 10d9d8c3512f btrfs: fix a use-after-free bug when hitting errors inside btrfs_submit_chunk()
>
> Ran: btrfs/321
> Failures: btrfs/321
> Failed 1 of 1 tests
>
> This is because with compression enabled we get a csum tree that has only
> one leaf, and that leaf is the root of the csum tree. That means that
> after the test corrupts the leaf, the next mount will fail since an error
> loading the root is critical and makes the mount operation fail.
>
> Fix this by creating a file with 128M of data instead of 32M, as this
> guarantees that even if compression is enabled, and even with the maximum
> allowed leaf size (64K), we still get a csum tree with multiple leaves,
> making the test work.
>
> Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: Qu Wenruo <wqu@suse.com>
My bad, I forgot compression, which will reduce the csum size.
Thanks,
Qu
> ---
> tests/btrfs/321 | 8 +++++---
> 1 file changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/tests/btrfs/321 b/tests/btrfs/321
> index 93935530..c13ccc1e 100755
> --- a/tests/btrfs/321
> +++ b/tests/btrfs/321
> @@ -33,9 +33,11 @@ _scratch_pool_mkfs "-d raid0 -m single -n 4k -s 4k" >> $seqres.full 2>&1
> # This test requires data checksum to trigger the bug.
> _scratch_mount -o datasum,datacow
>
> -# For the smallest csum size (CRC32C) it's 4 bytes per 4K, writing 32M data
> -# will need 32K data checksum at minimal, which is at least 8 leaves.
> -_pwrite_byte 0xef 0 32m "$SCRATCH_MNT/foobar" > /dev/null
> +# For the smallest csum size (CRC32C) it's 4 bytes per 4K, writing 128M of data
> +# will need 128K data checksum at minimal, which is at least 34 leaves when
> +# running without compression and a leaf size of 64K. With compression enabled
> +# and a 64K leaf size, it will be 2 leaves.
> +_pwrite_byte 0xef 0 128m "$SCRATCH_MNT/foobar" > /dev/null
> _scratch_unmount
>
>
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] btrfs/321: make the test work when compression is enabled
2024-09-12 12:45 [PATCH] btrfs/321: make the test work when compression is enabled fdmanana
2024-09-12 21:35 ` Qu Wenruo
@ 2024-09-20 10:58 ` Anand Jain
1 sibling, 0 replies; 3+ messages in thread
From: Anand Jain @ 2024-09-20 10:58 UTC (permalink / raw)
To: fstests, Zorro Lang; +Cc: linux-btrfs, Filipe Manana, fdmanana
On 12/9/24 8:45 pm, fdmanana@kernel.org wrote:
> From: Filipe Manana <fdmanana@suse.com>
>
> When running btrfs/321 with compression enabled it fails like this:
>
> $ MOUNT_OPTIONS="-o compress" ./check btrfs/321
> FSTYP -- btrfs
> PLATFORM -- Linux/x86_64 debian0 6.11.0-rc7-btrfs-next-174+ #1 SMP PREEMPT_DYNAMIC Tue Sep 10 17:11:38 WEST 2024
> MKFS_OPTIONS -- /dev/sdc
> MOUNT_OPTIONS -- -o compress /dev/sdc /home/fdmanana/btrfs-tests/scratch_1
>
> btrfs/321 2s ... [failed, exit status 1]- output mismatch (see /home/fdmanana/git/hub/xfstests/results//btrfs/321.out.bad)
> --- tests/btrfs/321.out 2024-09-12 12:12:11.259272125 +0100
> +++ /home/fdmanana/git/hub/xfstests/results//btrfs/321.out.bad 2024-09-12 13:18:40.231120012 +0100
> @@ -1,2 +1,5 @@
> QA output created by 321
> -Silence is golden
> +mount: /home/fdmanana/btrfs-tests/scratch_1: can't read superblock on /dev/sdc.
> + dmesg(1) may have more information after failed mount system call.
> +mount -o compress -o ro /dev/sdc /home/fdmanana/btrfs-tests/scratch_1 failed
> +(see /home/fdmanana/git/hub/xfstests/results//btrfs/321.full for details)
> ...
> (Run 'diff -u /home/fdmanana/git/hub/xfstests/tests/btrfs/321.out /home/fdmanana/git/hub/xfstests/results//btrfs/321.out.bad' to see the entire diff)
>
> HINT: You _MAY_ be missing kernel fix:
> 10d9d8c3512f btrfs: fix a use-after-free bug when hitting errors inside btrfs_submit_chunk()
>
> Ran: btrfs/321
> Failures: btrfs/321
> Failed 1 of 1 tests
>
> This is because with compression enabled we get a csum tree that has only
> one leaf, and that leaf is the root of the csum tree. That means that
> after the test corrupts the leaf, the next mount will fail since an error
> loading the root is critical and makes the mount operation fail.
>
> Fix this by creating a file with 128M of data instead of 32M, as this
> guarantees that even if compression is enabled, and even with the maximum
> allowed leaf size (64K), we still get a csum tree with multiple leaves,
> making the test work.
>
> Signed-off-by: Filipe Manana <fdmanana@suse.com>
looks good.
Reviewed-by: Anand Jain <anand.jain@oracle.com>
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2024-09-20 10:59 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-09-12 12:45 [PATCH] btrfs/321: make the test work when compression is enabled fdmanana
2024-09-12 21:35 ` Qu Wenruo
2024-09-20 10:58 ` Anand Jain
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox