How to recover from a BTRFS crash?
Short answer: you can't
No, seriously: you can't
It is meant that BTRFS is now more reliable, stable and usable, but is not
I had just a second force shutdown in recent kernels 4.19 and my partition was entirely unreadable, entirely unrecoverable
I have fortunately see very good documentation on internet (so search for these very nice articles on google first) and there's multiple commands for recovery that you can use, none of them worked, none of them was able to fix or mount my partition, all the data was simply, lost
From all the documentations, I was only be able to use btrfs restore this way (and only this way):
btrfs restore -x -m -S -i partition.img /mnt/dir-recover/
Note: I do not suggest to play directly with recovering tools on the affected partition, but to dump its contents to an image file and try to recover it, otherwise, if you fail on the recovery the problem would be worse, imaging the partition allows you to play as many things as you want and recover the original damaged state back as much as you need
This tool, was able to recover only a portion of my files from the filesystem, in a very unreliable way, it was my only way to recover some data from it
Everything else: i needed to search between different computers and random backups and server backuped uploads every usable data, if was not for these, I would have lost 2 months of entire work (except for all the work that is commited on git which is always safe), because my systems were not yet ready to have distributed backuped work recently due to the big movement of new system.
That is why I have been recently away from the forum, I needed to fully concentrate in the recovering of the data and the new systems, I also have recently moved to Colombia where I'm actually writting from, so I will be back soon working on the new 3.7.4 version which accidentally needed to be in pause, and I also need to verify that everything is working back as expected. Later, I will start to answer back in the forum from time to time while waiting processes to finish
So, don't use btrfs, it is really dangerous, period.
I would need to improve the installer to warn about it and have an extra confirmation.