Yes, I also find the problem and already sent the fixing patch:
https://patchwork.kernel.org/patch/6411191/
The problem is that my previous check patch is too restrict, making DUP
chunk with only 1 stripe invalid.
Fixing patch will allow degraded chunk to exist and fix the bug.
Thanks,
Qu
-------- Original Message --------
Subject: Re: [PATCH 4/4] btrfs-progs: Add extra chunk item check to
avoid btrfs-progs crash.
From: WorMzy Tykashi <wormzy.tykashi@xxxxxxxxx>
To: David Sterba <dsterba@xxxxxxx>, Qu Wenruo <quwenruo@xxxxxxxxxxxxxx>,
linux-btrfs@xxxxxxxxxxxxxxx <linux-btrfs@xxxxxxxxxxxxxxx>,
<lukas.lueg@xxxxxxxxx>
Date: 2015年05月20日 00:30
Hi guys,
Following a bisect, it appears that this patch breaks fsck test 006:
$ git checkout f146c40c65e0142b52418a0a1cbaf2808e658d76
HEAD is now at f146c40... btrfs-progs: Add extra chunk item check to
avoid btrfs-progs crash.
...autogen, configure, make..
$ make test-fsck
[TEST] fsck-tests.sh
[TEST] 001-bad-file-extent-bytenr
[TEST] 002-bad-transid
parent transid verify failed on 29360128 wanted 9 found 755944791
parent transid verify failed on 29360128 wanted 9 found 755944791
Ignoring transid failure
[TEST] 003-shift-offsets
[TEST] 004-no-dir-index
[TEST] 005-bad-item-offset
[TEST] 006-bad-root-items
failed: /home/wormzy/btrfs-progs-unstable/btrfs check --repair test.img
test failed for case 006-bad-root-items
Makefile:169: recipe for target 'test-fsck' failed
make: *** [test-fsck] Error 1
Does this test just need updating?
Cheers,
WorMzy
On 13 May 2015 at 17:18, David Sterba <dsterba@xxxxxxx
<mailto:dsterba@xxxxxxx>> wrote:
On Wed, May 13, 2015 at 05:15:36PM +0800, Qu Wenruo wrote:
> Adds extra check when reading a chunk item:
> 1) Check chunk type.
> Don't allow any unsupported type/profile bit.
>
> 2) Check num_stripes
> Any chunk item should contain at least one stripe.
> For system chunk, the chunk item size(calculated by btrfs_stripe size *
> (num_stripes - 1) + btrfs_chunk size) should not exceed
> BTRFS_SYSTEM_CHUNK_SIZE(2048).
> For normal chunk, the chunk item size(calculated) should match the chunk
> item size.
>
> 3) Check num_stripes/sub_stripes against chunk profile.
> Num_stripes/sub_stripes must meet its lower limit for its chunk profile.
>
> Reported-by: Lukas Lueg <lukas.lueg@xxxxxxxxx <mailto:lukas.lueg@xxxxxxxxx>>
> Signed-off-by: Qu Wenruo <quwenruo@xxxxxxxxxxxxxx <mailto:quwenruo@xxxxxxxxxxxxxx>>
Applied, thanks.
--
To unsubscribe from this list: send the line "unsubscribe
linux-btrfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
<mailto:majordomo@xxxxxxxxxxxxxxx>
More majordomo info at http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html