1
Yesterday, I cannot mount my movable disk formated with btrfs.
Kenel message (dmesg
output):
[38257.314422] BTRFS info (device sdd): disk space caching is enabled
[38257.328731] BTRFS critical (device sdd): corrupt node: root=1 block=1264662233088 slot=29, bad key order, current (18446744073709551605 0 666286161920) next (18446744073709551605 0 534752788480)
[38257.552619] BTRFS critical (device sdd): corrupt node: root=1 block=1264662233088 slot=29, bad key order, current (18446744073709551605 0 666286161920) next (18446744073709551605 0 534752788480)
[38257.552648] BTRFS warning (device sdd): failed to read tree root
[38257.586065] BTRFS error (device sdd): open_ctree failed
I tried to repair with btrfs check --repair <dev>
:
$ sudo btrfs check --repair /dev/sdc
enabling repair mode
Couldn't setup extent tree
Couldn't setup device tree
ERROR: cannot open file system
The output of btrfs rescue super-recover -v
:
vivodo@esper:~|⇒ sudo btrfs rescue super-recover -v /dev/sdd
All Devices:
Device: id = 1, name = /dev/sdd
Before Recovering:
[All good supers]:
device name = /dev/sdd
superblock bytenr = 65536
device name = /dev/sdd
superblock bytenr = 67108864
device name = /dev/sdd
superblock bytenr = 274877906944
[All bad supers]:
All supers are valid, no need to recover
Output of btrfs-find-root <dev>
vivodo@esper:~|⇒ sudo btrfs-find-root /dev/sdd
Couldn't setup extent tree
Couldn't setup device tree
Superblock thinks the generation is 665862
Superblock thinks the level is 1
Found tree root at 1264662233088 gen 665862 level 1
Well block 1264657760256(gen: 665852 level: 1) seems good, but generation/level doesn't match, want gen: 665862 level: 1
Well block 1264501325824(gen: 665851 level: 1) seems good, but generation/level doesn't match, want gen: 665862 level: 1
Well block 1264444915712(gen: 665850 level: 1) seems good, but generation/level doesn't match, want gen: 665862 level: 1
Well block 1264415211520(gen: 665849 level: 0) seems good, but generation/level doesn't match, want gen: 665862 level: 1
Well block 883160006656(gen: 665848 level: 1) seems good, but generation/level doesn't match, want gen: 665862 level: 1
Well block 883047071744(gen: 665847 level: 1) seems good, but generation/level doesn't match, want gen: 665862 level: 1
Well block 882929369088(gen: 665846 level: 1) seems good, but generation/level doesn't match, want gen: 665862 level: 1
Well block 882774835200(gen: 665845 level: 1) seems good, but generation/level doesn't match, want gen: 665862 level: 1
Well block 882735235072(gen: 665844 level: 1) seems good, but generation/level doesn't match, want gen: 665862 level: 1
Well block 818615599104(gen: 665843 level: 1) seems good, but generation/level doesn't match, want gen: 665862 level: 1
Well block 818267537408(gen: 665842 level: 1) seems good, but generation/level doesn't match, want gen: 665862 level: 1
Well block 689318658048(gen: 665841 level: 1) seems good, but generation/level doesn't match, want gen: 665862 level: 1
Well block 689093099520(gen: 665840 level: 1) seems good, but generation/level doesn't match, want gen: 665862 level: 1
Well block 689090789376(gen: 665839 level: 0) seems good, but generation/level doesn't match, want gen: 665862 level: 1
Well block 689089036288(gen: 665839 level: 0) seems good, but generation/level doesn't match, want gen: 665862 level: 1
Well block 689088970752(gen: 665839 level: 0) seems good, but generation/level doesn't match, want gen: 665862 level: 1
Well block 689087004672(gen: 665839 level: 0) seems good, but generation/level doesn't match, want gen: 665862 level: 1
Well block 689086480384(gen: 665839 level: 0) seems good, but generation/level doesn't match, want gen: 665862 level: 1
Well block 689067638784(gen: 665838 level: 0) seems good, but generation/level doesn't match, want gen: 665862 level: 1
Well block 688861003776(gen: 665837 level: 1) seems good, but generation/level doesn't match, want gen: 665862 level: 1
Well block 1030029312(gen: 665836 level: 1) seems good, but generation/level doesn't match, want gen: 665862 level: 1
Well block 689096589312(gen: 665835 level: 0) seems good, but generation/level doesn't match, want gen: 665862 level: 1
Well block 689096507392(gen: 665835 level: 0) seems good, but generation/level doesn't match, want gen: 665862 level: 1
Well block 688995008512(gen: 665834 level: 0) seems good, but generation/level doesn't match, want gen: 665862 level: 1
Well block 537983500288(gen: 24399 level: 0) seems good, but generation/level doesn't match, want gen: 665862 level: 1
Well block 537974210560(gen: 24398 level: 0) seems good, but generation/level doesn't match, want gen: 665862 level: 1
Well block 1096957952(gen: 24397 level: 0) seems good, but generation/level doesn't match, want gen: 665862 level: 1
Well block 1083883520(gen: 24397 level: 0) seems good, but generation/level doesn't match, want gen: 665862 level: 1
Well block 1082195968(gen: 24397 level: 0) seems good, but generation/level doesn't match, want gen: 665862 level: 1
Well block 1071366144(gen: 24397 level: 0) seems good, but generation/level doesn't match, want gen: 665862 level: 1
Well block 688859529216(gen: 24378 level: 0) seems good, but generation/level doesn't match, want gen: 665862 level: 1
Well block 538319437824(gen: 24377 level: 0) seems good, but generation/level doesn't match, want gen: 665862 level: 1
Well block 538387202048(gen: 24326 level: 0) seems good, but generation/level doesn't match, want gen: 665862 level: 1
Well block 538081050624(gen: 24325 level: 0) seems good, but generation/level doesn't match, want gen: 665862 level: 1
Well block 1264396353536(gen: 24320 level: 0) seems good, but generation/level doesn't match, want gen: 665862 level: 1
Well block 1264387932160(gen: 24320 level: 0) seems good, but generation/level doesn't match, want gen: 665862 level: 1
Well block 538474037248(gen: 24250 level: 0) seems good, but generation/level doesn't match, want gen: 665862 level: 1
Well block 882884788224(gen: 24183 level: 0) seems good, but generation/level doesn't match, want gen: 665862 level: 1
Well block 538079313920(gen: 23195 level: 0) seems good, but generation/level doesn't match, want gen: 665862 level: 1
Well block 4243456(gen: 3 level: 0) seems good, but generation/level doesn't match, want gen: 665862 level: 1
Well block 4194304(gen: 2 level: 0) seems good, but generation/level doesn't match, want gen: 665862 level: 1
I tried btrfs recue chunk-recover -y <dev>
:
vivodo@esper:~|⇒ time sudo btrfs rescue chunk-recover -y /dev/sdd
Scanning: DONE in dev0
Couldn't setup extent tree
open with broken chunk error
Chunk tree recovery failed
sudo btrfs rescue chunk-recover -y /dev/sdd 161.89s user 2496.23s system 7% cpu 9:29:51.66 total
Finally, I still fail to mount this disk with the error of "wrong fs type":
vivodo@esper:~|⇒ sudo mount /dev/sdd /mnt
mount: /mnt: wrong fs type, bad option, bad superblock on /dev/sdd, missing codepage or helper program, or other error.
vivodo@esper:~|⇒ sudo mount -t btrfs -o compress=lzo /dev/sdd /mnt
mount: /mnt: wrong fs type, bad option, bad superblock on /dev/sdd, missing codepage or helper program, or other error.
What else can I do to recue my btrfs disk?
P.S., ArchLinux Wiki says that there is "a bug in systemd or mkinitcpio causing the following error on systems with multi-device Btrfs filesystem using the btrfs hook in mkinitcpio.conf"... I have several btrfs filesystems in my host, but they are not related. Maybe it is not the case.
the volume may be using features that are not in the kernel that you are using to mount. e.g. -o compress=zstd is a recent 4.14 feature so if i used that and later try to mount my volume on kernels < 4.14, i get the same error. – RJ- – 2018-03-01T18:44:19.417
Thanks. Too late, I have re-formated my partition with ext4. :-( – Vivodo – 2018-03-10T14:58:43.360
Unable to mount btrfs filesystem “open_ctree failed” on Unix & Linux Stack Exchange. – jww – 2019-11-18T20:28:15.067