mirror of
https://github.com/kdave/btrfs-progs
synced 2025-02-18 02:36:56 +00:00
For multi-disk btrfs image recovered to single disk, the dev tree would look like: item 2 key (1 DEV_EXTENT 22020096) dev extent chunk_tree 3 chunk_objectid 256 chunk_offset 22020096 length 8388608 item 3 key (1 DEV_EXTENT 30408704) dev extent chunk_tree 3 chunk_objectid 256 chunk_offset 30408704 length 1073741824 item 4 key (1 DEV_EXTENT 1104150528) dev extent chunk_tree 3 chunk_objectid 256 chunk_offset 1104150528 length 536870912 item 5 key (2 DEV_EXTENT 1048576) dev extent chunk_tree 3 chunk_objectid 256 chunk_offset 22020096 length 8388608 item 6 key (2 DEV_EXTENT 9437184) dev extent chunk_tree 3 chunk_objectid 256 chunk_offset 30408704 length 1073741824 item 7 key (2 DEV_EXTENT 1083179008) dev extent chunk_tree 3 chunk_objectid 256 chunk_offset 1104150528 length 536870912 However in chunk tree, we only use devid 2, thus devid 1 is completely garbage: item 0 key (DEV_ITEMS DEV_ITEM 2) item 1 key (FIRST_CHUNK_TREE CHUNK_ITEM 22020096) itemoff 16105 itemsize 80 length 8388608 owner 2 stripe_len 65536 type SYSTEM num_stripes 1 sub_stripes 0 stripe 0 devid 2 offset 1048576 item 2 key (FIRST_CHUNK_TREE CHUNK_ITEM 30408704) itemoff 16025 itemsize 80 length 1073741824 owner 2 stripe_len 65536 type METADATA num_stripes 1 sub_stripes 0 stripe 0 devid 2 offset 9437184 item 3 key (FIRST_CHUNK_TREE CHUNK_ITEM 1104150528) itemoff 15945 itemsize 80 length 1073741824 owner 2 stripe_len 65536 type DATA num_stripes 1 sub_stripes 0 stripe 0 devid 2 offset 1083179008 To fix the problem, the most straight-forward way is to remove all existing dev extents, and then re-fill correct dev extents from chunk. So this patch just follows the straight-forward way to fix it, causing the final dev extents layout to match chunk tree, and make btrfs check happy. Signed-off-by: Qu Wenruo <wqu@suse.com> Signed-off-by: David Sterba <dsterba@suse.com> |
||
---|---|---|
.. | ||
main.c | ||
metadump.h | ||
sanitize.c | ||
sanitize.h |