So, I just recently had to hard reset a system running root on BTRFS, and when it tried to come back up, it chocked on the root filesystem. Based on the kernel messages, the primary issue is log corruption, and in theory btrfs-zero-log should fix it. The actual issue however, is that the primary superblock appears to be pointing at a corrupted root tree, which causes pretty much everything that does anything other than just read the sb to fail. The first backup sb does point to a good tree, but only btrfs check and btrfs restore have any option to ignore the first sb and use one of the backups instead. To make matters more complicated, the first sb still has a valid checksum and passes the tests done by btrfs rescue super-recover, and therefore that can't be used to recover either. I was wondering if anyone here might have any advice. I'm fine using dd to replace the primary sb with one of the backups, but don't know the exact parameters that would be needed. Also, we should consider adding a mount option to select a specific sb mirror to use; I know that ext* have such an option, and that has actually saved me a couple of times. I'm using btrfs-progs 3.16 and kernel 3.16.1.