kdave / btrfs-progs

Development of userspace BTRFS tools
GNU General Public License v2.0
550 stars 241 forks source link

btrfs rescue fail with `Assertion `key.type == BTRFS_FREE_SPACE_EXTENT_KEY` failed, value 0` #655

Open tribbloid opened 1 year ago

tribbloid commented 1 year ago

Full log:

$ sudo btrfs rescue chunk-recover -y /dev/nvme0n1p7
Scanning: DONE in dev0                        
kernel-shared/free-space-tree.c:706: remove_free_space_extent: Assertion `key.type == BTRFS_FREE_SPACE_EXTENT_KEY` failed, value 0
btrfs(+0x185e9)[0x563ee25945e9]
btrfs(+0x1a0bf)[0x563ee25960bf]
btrfs(+0x1a0d3)[0x563ee25960d3]
btrfs(remove_from_free_space_tree+0x16e)[0x563ee25a8b74]
btrfs(btrfs_run_delayed_refs+0x456)[0x563ee25a913d]
btrfs(btrfs_commit_transaction+0x3f)[0x563ee25b0cb7]
btrfs(btrfs_recover_chunk_tree+0x1f4e)[0x563ee25eea8a]
btrfs(+0x72e83)[0x563ee25eee83]
btrfs(main+0x328)[0x563ee2593ee8]
/lib/x86_64-linux-gnu/libc.so.6(+0x29d90)[0x7ff392e29d90]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0x80)[0x7ff392e29e40]
btrfs(_start+0x25)[0x563ee2593f25]
Aborted

The meaning of this key.type is still unknown

tribbloid commented 1 year ago

Rerun with Debian 12.1 version, looks like this now:

$ sudo btrfs rescue chunk-recover /dev/nvme0n1p7 -y
Scanning: 243019239424 in dev0                

Scanning: DONE in dev0                        
corrupt leaf: root=1 block=18372263936 slot=0, unexpected item end, have 16283 expect 0
corrupt leaf: root=1 block=18372263936 slot=0, unexpected item end, have 16283 expect 0
Couldn't read tree root
open with broken chunk error
tribbloid commented 1 year ago

How do I fix it in this situation?