For that you have to dig into the methodology, look at the code, look at user reports, etc.
But you can get a pretty good approximation just from the philosophies and attitudes of the engineers and what they're talking about.
The talk I just gave at the Rust for Linux conference was all about that - how do we make the system debugable, the community aspect of how we respond to bug reports and talk to users, the prep work for the Rust conversion and formal verification and how we're approaching all that.
Reliability doesn't come out of nowhere, "all bugs are shallow with enough eyeballs" really doesn't apply to filesystems. You just have to plan for it, come up with a methodology, and do the work.
https://arstechnica.com/gadgets/2021/09/examining-btrfs-linu...
<- 5Y ago.
It's not materially better now. The devs are in denial about the problems because lots of big users are saying "works fine on my machine."
Sure, if you have lots of backups, if you have huge volumes on huge disks and they never fill up...
But it's the default in Fedora, Spiral Linux, Garuda Linux, siduction and others. Personal distros for people's own PCs and those are not well-supported enterprise kit.
Don't ever let it fill up!
SUSE takes snapshots before packages are installed. The package manager cannot tell if the disk will fill up as a result because on Btrfs the `df` command lies.
If its Btrfs root fills up and the OS writes to it, it 100% will self-destruct, and the `btrfs-repair` tool (`fsck` replacement) cannot fix drives and usually makes the corruption worse and renders the drive unreadable.
This is why in the earlier thread about swapfiles...
https://news.ycombinator.com/item?id=49618087
... I advised 2 commenters not to recommend keeping the OS and data in a single big volume. I got downvoted for it. I was rude. Well, I was, but I stand by my comments even though I'm sorry for my tone when I made them.
A pragmatic fix would trigger read-only failure mode at 90% usage of the mount as a whole, with all subvolumes.
And you know what, that's a great idea.
I have a loopback mount on an fallocate file with a btrfs filesystem inside of it at work. I'm using send/receive to make sure there is hope of recovery.
I wrote this several years ago.
https://www.linuxjournal.com/content/btrfs-centos-living-loo...