On 2019/3/29 下午10:11, David Sterba wrote:
> On Wed, Mar 20, 2019 at 02:27:40PM +0800, Qu Wenruo wrote:
>> Just add one extra line to show when the corruption is detected.
>> Currently only read time detection is possible.
>>
>> The planned distinguish line would be:
>>   read time:
>>     <detail report>
>>     block=XXXXX read time tree block corruption detected
>>
>>   write time:
>>     <detail report>
>>     block=XXXXX write time tree block corruption detected
>>
>> Signed-off-by: Qu Wenruo <w...@suse.com>
>> Reviewed-by: Nikolay Borisov <nbori...@suse.com>
>> Reviewed-by: Johannes Thumshirn <jthumsh...@suse.de>
>> ---
>>  fs/btrfs/disk-io.c | 4 ++++
>>  1 file changed, 4 insertions(+)
>>
>> diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c
>> index 6a7a1e168169..e8d4e238f832 100644
>> --- a/fs/btrfs/disk-io.c
>> +++ b/fs/btrfs/disk-io.c
>> @@ -659,6 +659,10 @@ static int btree_readpage_end_io_hook(struct 
>> btrfs_io_bio *io_bio,
>>
>>      if (!ret)
>>              set_extent_buffer_uptodate(eb);
>> +    else
>> +            btrfs_err(fs_info,
>> +                      "block=%llu read time tree block corruption detected",
>
> This showed up in test btrfs/124, the logs below do not contain the
> selftests outpt, that runs twice, only the last line is kept for
> reference. That's the only message from the read/write time checks, the branch
> is misc-next.
>
> [ 5432.522317] BTRFS: selftest: running extent_map tests
> [ 5432.573684] BTRFS: device fsid 519acff4-bdb4-4459-87b6-8f64ab1360cf devid 
> 1 transid 7 /dev/vdb
> [ 5432.578232] BTRFS info (device vdb): allowing degraded mounts
> [ 5432.579703] BTRFS info (device vdb): disk space caching is enabled
> [ 5432.581348] BTRFS info (device vdb): has skinny extents
> [ 5432.583483] BTRFS warning (device vdb): devid 2 uuid 
> dc83669e-dff7-4dee-bcc6-dbef1f470896 is missing
> [ 5432.586115] BTRFS warning (device vdb): devid 2 uuid 
> dc83669e-dff7-4dee-bcc6-dbef1f470896 is missing
> [ 5513.939435] BTRFS: device fsid af58e3f0-8011-4d2a-b2bd-fc956d458a75 devid 
> 1 transid 238 /dev/vda
> [ 5513.992006] BTRFS info (device vdb): disk space caching is enabled
> [ 5513.994398] BTRFS info (device vdb): has skinny extents
> [ 5514.022526] BTRFS critical (device vdb): corrupt leaf: root=7 
> block=30474240 slot=0, invalid nritems, have 0 should not be 0 for non-root 
> leaf

This is csum tree, which can be empty, but the old code I kept to do the
comprehensive owner check is not doing correct thing.

Considering it's doing replace, it maybe involved in relocation code.

Anyway, I'll investigate it and possibly remove the comprehensive owner
check, just using the owner checker for empty leaves.

Thanks,
Qu

> [ 5514.028271] BTRFS error (device vdb): block=30474240 read time tree block 
> corruption detected
> [ 5514.031529] BTRFS info (device vdb): read error corrected: ino 0 off 
> 30474240 (dev /dev/vdc sector 18560)
> [ 5514.034133] BTRFS info (device vdb): read error corrected: ino 0 off 
> 30478336 (dev /dev/vdc sector 18568)
> [ 5514.036662] BTRFS info (device vdb): read error corrected: ino 0 off 
> 30482432 (dev /dev/vdc sector 18576)
> [ 5514.039784] BTRFS info (device vdb): read error corrected: ino 0 off 
> 30486528 (dev /dev/vdc sector 18584)
> [ 5514.042383] BTRFS error (device vdb): bad tree block start, want 32210944 
> have 651061555542690057
> [ 5514.044666] BTRFS info (device vdb): read error corrected: ino 0 off 
> 32210944 (dev /dev/vdc sector 21952)
> [ 5514.047146] BTRFS info (device vdb): read error corrected: ino 0 off 
> 32215040 (dev /dev/vdc sector 21960)
> [ 5514.049608] BTRFS info (device vdb): read error corrected: ino 0 off 
> 32219136 (dev /dev/vdc sector 21968)
> [ 5514.052034] BTRFS info (device vdb): read error corrected: ino 0 off 
> 32223232 (dev /dev/vdc sector 21976)
> [ 5514.056223] BTRFS error (device vdb): bad tree block start, want 32276480 
> have 0
> [ 5514.058632] BTRFS info (device vdb): read error corrected: ino 0 off 
> 32276480 (dev /dev/vdc sector 22080)
> [ 5514.060448] BTRFS info (device vdb): read error corrected: ino 0 off 
> 32280576 (dev /dev/vdc sector 22088)
> [ 5514.064681] BTRFS info (device vdb): balance: start -d -m -s
> [ 5514.066309] BTRFS info (device vdb): relocating block group 2479882240 
> flags data
> [ 5514.068870] BTRFS error (device vdb): bad tree block start, want 31539200 
> have 723401728380766730
> [ 5514.087183] BTRFS error (device vdb): bad tree block start, want 31457280 
> have 578721382704613384
> [ 5514.087208] BTRFS error (device vdb): bad tree block start, want 31555584 
> have 723401728380766730
> [ 5514.087244] BTRFS error (device vdb): bad tree block start, want 31522816 
> have 723401728380766730
> [ 5514.107976] BTRFS error (device vdb): bad tree block start, want 31555584 
> have 723401728380766730
> [ 5514.131715] BTRFS error (device vdb): bad tree block start, want 31440896 
> have 506381209866536711
> [ 5514.131739] BTRFS error (device vdb): bad tree block start, want 31457280 
> have 578721382704613384
> [ 5514.155830] BTRFS error (device vdb): bad tree block start, want 31457280 
> have 578721382704613384
> [ 5527.886754] repair_io_failure: 54 callbacks suppressed
> [ 5527.886761] BTRFS info (device vdb): read error corrected: ino 0 off 
> 32145408 (dev /dev/vdc sector 21824)
> [ 5527.895976] BTRFS info (device vdb): read error corrected: ino 0 off 
> 32149504 (dev /dev/vdc sector 21832)
> [ 5527.899446] BTRFS info (device vdb): read error corrected: ino 0 off 
> 32153600 (dev /dev/vdc sector 21840)
>

Reply via email to