Hi Qu, 2017-12-07 12:09 GMT+00:00 Qu Wenruo <quwenruo.bt...@gmx.com>: > > Since the btrfs chunk recovery doesn't work and my dirty quick hack > doesn't work either, I don't expect much to recovery. > > Unless we have more detailed info about the how and why the BUG_ON() of > chunk recovery is triggered. > > That's to say, it will be a quite time consuming work to use gdb to > locate the problem, and see if any developer (mostly me) could use the > info to further dig into the problem or fix it. > (Considering the difference in timezone, I expect at least 8+ weeks to > get a conclusion)
I'm really pleased that you want to help me, of course the current backtrace was quite useless. Firstly, I revised the code a bit, and since one run over the 1,7TB drive took about 6h, I thought about saving the state of already found chunks. I simply saved all bytenr which are valid to a file. The consequence was a reduction of the time for scan_one_device to about 30s. If you think this could be interesting for the normal version, I could create a patch for this. > > If you really want to do it, please step into the function > btrfs_insert_item() in __rebuild_device_items() and to see at which > point -EIO is returned. > > My guess is btrfs_search_slot() call in btrfs_insert_empty_items(). > > If that's true, please call > > btrfs_print_tree(root->fs_info->chunk_root, root->fs_info->chunk_root->node, > 1) > > in gdb, just before the btrfs_search_slot() call above, to show what's > the problem. > Your guess was right. The current stack trace and btrfs_print_tree is under : https://gist.github.com/anonymous/2cf40ac1d3ddcbca95177acec78041b2 As you can see, the code in disk.io:321 explicitly exclude the the sector from 0 to sectorsize, and states it is unaligned. I think because the code found a chunk/block at address zero, this triggers the problem. Is it possible, that there live chunks/blocks at address 0 or is this fuzzy data? > > BTW, currently nothing in chunk tree/super block contains any info of > your fs, feel free to share it with the mail list, where more guys may help. > I added the list, I simply forgot it in some answer. > Thanks, > Qu > thanks Benjamin -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html