Cannot mount BTRFS disk: "open_ctree failed"

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.

Vivodo

Posted 2018-02-23T01:29:02.647

Reputation: 347

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

No answers