Re: interest in post-mortem examination of a BTRFS system and improving the btrfs-code?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 2019/4/6 上午3:38, Nik. wrote:
> 
> 
> 2019-04-05 10:15, Qu Wenruo:
>>
>>
>> On 2019/4/5 下午3:41, Nik. wrote:
>>>
>>> Below is the stderr of both commands:
>>>
>>> # btrfs inspect dump-tree -t chunk /dev/md0>DT-chunk.log
>>> # btrfs inspect dump-tree -t extent /dev/md0>DT-extent.log
>>> ERROR: leaf 1894009225216 slot 30 pointer invalid, offset 146038 size 37
>>> leaf data limit 16283
>>> ERROR: skip remaining slots
>>>
>>> Since the output on stdout is pretty long even after gzip, I am
>>> providing only the output of the first command as attachment. The output
>>> of the second command (25 MB after gzip -9) can be downloaded here:
>>>
>>> https://cloud.avgustinov.eu/index.php/s/AgbwWyCrbYjenq8
>>
>> Sorry, I should have use a more specific command to get a smaller output.
>> But anyway, your output is good enough for me to craft the fix patch.
>>
>> Here is the dirty fix branch:
>> https://github.com/adam900710/btrfs-progs/tree/dirty_fix_for_nik
>>
>> Compile the btrfs-progs as usual.
>> Just a late hint, you can disable document/btrfs-convert to reduce the
>> dependency:
>> $ ./configure --disable-documentation --disable-convert
>>
>> Then, inside btrfs-progs directory, call:
>> # ./btrfs-corrupt-block -X /dev/md0
> incorrect offsets 15003 146075
> Open ctree failed

Oh, I forgot it's in extent tree, which may need to be read out at mount
time.

Just a new flag can handle it.

The branch is updated, please check.

Thanks,
Qu

> 
> Actually there was one warning during make, I don't know of it is relevant:
>     [CC]     check/main.o
> check/main.c: In function ‘try_repair_inode’:
> check/main.c:2688:5: warning: ‘ret’ may be used uninitialized in this
> function [-Wmaybe-uninitialized]
>   if (!ret) {
>      ^
> check/main.c:2666:6: note: ‘ret’ was declared here
>   int ret;
>       ^~~
> 
> The previous steps were as follow (output ommited, since nothing
> unexpected happened):
> #git clone --single-branch -v -b dirty_fix_for_nik
> https://github.com/adam900710/btrfs-progs.git
> #cd btrfs-progs/
> #./autogen.sh
> #./configure --disable-documentation --disable-convert
> #make
> 
> Did I got the right branch? Or miss any step?
> 
> Kind regards,
> Nik.
> -- 
> 
>> If everything goes correctly, it should output something like:
>>    Successfully repaired tree block at 1894009225216
>> (And please ignore any grammar error in my code)
>>
>> After that, please run a "btrfs check --readonly" to ensure no other bit
>> flip in your fs.
>>
>> Thanks,
>> Qu
>>
>>
>>
>>>
>>> Hope this is ok.
>>>
>>> Regards,
>>> Nik.
>>> -
>>

Attachment: signature.asc
Description: OpenPGP digital signature


[Index of Archives]     [Linux Filesystem Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux