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. >>>>> - >>>> >>
signature.asc
Description: OpenPGP digital signature