Ideally you would implement complete disk checksumming as a GEOM device. Then you could layer geom_mirror on top of it, so that if the checksum fails and returns EIO, geom_mirror can try the alternate device and rebuild the one with the bad checksums. That will then complete the feature set implemented by ZFS, but for any filesystem on top of GEOM. - Andrew