On 2019/4/6 下午3:16, Nik. wrote:
> 
> 
> 2019-04-06 02:03, Qu Wenruo:
>>
>>
>> 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.
> 
> New output:
> Successfully repair tree block at 1894009225216
> 
> # mount -t btrfs -o ro /dev/md0 /mnt/md0/
> mount: /mnt/md0: wrong fs type, bad option, bad superblock on /dev/md0,
> missing codepage or helper program, or other error.
> 
> # dmesg|tail
> ...
> [34848.784117] BTRFS info (device md0): disk space caching is enabled
> [34848.954741] BTRFS info (device md0): bdev /dev/md0 errs: wr 0, rd 0,
> flush 0, corrupt 2181, gen 0
> [34850.150789] BTRFS critical (device md0): corrupt leaf: root=1
> block=1894009225216 slot=30, unexpected item end, have 131072 expect 15003
> [34850.151209] BTRFS error (device md0): failed to read block groups: -5
> [34850.196156] BTRFS error (device md0): open_ctree failed
> 
> It seems that there is improvement...

Debug info added.

Please try again, and sorry for the inconvenience. Hopes this is the
last try.

Thanks,
Qu
> 
> Thank you.
> Nik.
> -- 
> 
>> 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

Reply via email to