Hi,
I've read btrfs roadmap and skimmed through the code trying to learn
about self-healing in btrfs. Sadly I found none. If I understand
correctly, upon detecting checksum error btrfs will only report it via
printk() (in csum_tree_block()). Self-healing is most important feature
of ZFS for me.
Little digress, what is self healing? When ZFS detects checksum error,
it will re-read other copy of data, check if other checksums is correct
(it should be) and return correct data to userspace. Correct data is
also written to the first block, which failed checksum check.
Where this "other copy of data" comes from? It could be block mirrored
on other disk in RAID1-like setup. ZFS also allows per-filesystem
(per-subvolume) setting to store normal data in more than one copy. So
with copies=3, 4 KB file will use 12KB of disk space but will be lot
safer than with copies=1.
As far as I understand, to have self healing in btrfs, first multiple
devices spanning and configuration like raid1 must be implemented. Also
multiples copies per subvolume (via btrfsctl I suppose) would be nice to
have. Device spanning is in Roadmap. But what with other features? When
they're planned?
--
Tomasz Torcz