Hey after a freeze during update my btrfs partition is not able to mount. I tried all from the Archlinux and BTRFS Wiki I could find, but this wasn't enough.
What I tried and the output:
$ sudo mount -t btrfs /dev/sda3 /mnt
mount: /mnt: wrong fs type, bad option, bad superblock on /dev/sda3, missing codepage or helper program, or other error.
$ sudo btrfs rescue super-recover /dev/sda3
parent transid verify failed on 204229967872 wanted 182262 found 182259
parent transid verify failed on 204229967872 wanted 182262 found 182259
Ignoring transid failure
parent transid verify failed on 204229853184 wanted 182261 found 182259
parent transid verify failed on 204229853184 wanted 182261 found 182259
Ignoring transid failure
leaf parent key incorrect 204229853184
Failed to recover bad superblocks
double free or corruption (fasttop)
Aborted
$ sudo btrfsck --repair /dev/sda3
enabling repair mode
parent transid verify failed on 204229967872 wanted 182262 found 182259
parent transid verify failed on 204229967872 wanted 182262 found 182259
Ignoring transid failure
parent transid verify failed on 204229853184 wanted 182261 found 182259
parent transid verify failed on 204229853184 wanted 182261 found 182259
Ignoring transid failure
leaf parent key incorrect 204229853184
ERROR: cannot open file system
$ sudo btrfs rescue zero-log /dev/sda3
parent transid verify failed on 204229967872 wanted 182262 found 182259
parent transid verify failed on 204229967872 wanted 182262 found 182259
Ignoring transid failure
parent transid verify failed on 204229853184 wanted 182261 found 182259
parent transid verify failed on 204229853184 wanted 182261 found 182259
Ignoring transid failure
leaf parent key incorrect 204229853184
ERROR: could not open ctree
$ sudo btrfs check --repair --init-extent-tree --init-csum-tree /dev/sda3
enabling repair mode
Creating a new CRC tree
parent transid verify failed on 204229967872 wanted 182262 found 182259
parent transid verify failed on 204229967872 wanted 182262 found 182259
Ignoring transid failure
Checking filesystem on /dev/sda3
UUID: 4951455b-7883-46a3-a878-d6347f852867
repair mode will force to clear out log tree, are you sure? [y/N]: y
Unable to find block group for 0
Unable to find block group for 0
Unable to find block group for 0
extent-tree.c:2764: alloc_tree_block: BUG_ON `ret` triggered, value -28
btrfs(+0x1fe10)[0x55e6ed511e10]
btrfs(+0x1fe80)[0x55e6ed511e80]
btrfs(+0x1fe93)[0x55e6ed511e93]
btrfs(btrfs_alloc_free_block+0x83)[0x55e6ed51621c]
btrfs(__btrfs_cow_block+0xfe)[0x55e6ed50a7fc]
btrfs(btrfs_cow_block+0xc5)[0x55e6ed50ada1]
btrfs(commit_tree_roots+0x56)[0x55e6ed52f844]
btrfs(btrfs_commit_transaction+0xb9)[0x55e6ed52fb18]
btrfs(cmd_check+0x757)[0x55e6ed545686]
btrfs(main+0x143)[0x55e6ed509847]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xeb)[0x7f47c685f09b]
btrfs(_start+0x2a)[0x55e6ed50988a]
Aborted
I guess you can try this:
Change your subvolume name to the actual subvolume you are trying to mount. @ is / , while any other mount point under root, for example /home is @home and so on. You can ignore most of the mount options, but
subvol
is necessary.