Btrfs is like Gmail - perpetually in beta, and will be used by heaps of regular users before it's officially stable* (as in Debian stable). Some distros already have it as their default. All the core features are pretty stable by this point - it's only the newer features that aren't quite there yet.
I've been using it for over a year now (for both / and /home), and IMO it's ready for everyday use.
It's had a fsck utility for a while - it used to be called btrfsck, now it's just 'btrfs check'. The three ways of dealing with integrity issues are, in order of preference:
- mounting it (it does checks on each mount that ext4 doesn't)
- mounting it with '-o recovery'
- running 'btrfs check'
There is also 'btrfs scrub' for redundant multi-device file systems, which verifies the checksums on everything in the file system, repairs any corruption, and tells you about it. (Great early warning for hard drive failure.)
Yes, most users are never going to use them manually, but if enabled by the distro or given a pretty GUI they won't need to. Ubuntu has apt-btrfs-snapshot that automatically snapshots the root FS on every operation, which is pretty useful in case you have an update that breaks something.
Another way of looking at it is that snapshots are incredibly cheap backups - they take about a second and cost very little space. Add a cron job to snapshot /home each day, and you won't even notice the overhead. Rsync will take at least a dozen minutes or so just to identify which files have changed when your data is in the TBs. Daily backups are a life saver in case you accidentally delete something, but most people aren't going to be doing them unless they're in an enterprise environment or have less than a few GB.
* Reasons why btrfs isn't stable yet:
- there was a performance regression for programs with databases (e.g. Chrome, Firefox) and virtual machines - that's been largely fixed since about a year ago
- some parts of the RAID implementation are still relatively new (esp. RAID5/RAID6)
- send/receive doesn't work properly yet (it's supposed to, but I still get 'ERROR: rename o262-5-0 -> snapshots failed. No such file or directory'.)