Is it correct to say that ZFS parity is used to reconcile on each read even without UREs, but with md parity is only used when there are UREs? If that's true, it makes much more sense why ZFS is considered the right choice.
Also, do you know if adding luks in the mix changes that?
My data goes md->lvm->luks->ext4 and I hadn't considered which part of that is supposed to catch the error if it wasn't a URE.
It makes sense that md would update parity if there was no URE. It also makes sense that LVM wouldn't know or care about data integrity.
I would think luks would require data integrity to work properly, but I'm not sure what happens if there is bitrot in a luks block.
I'm also surprised ext4 doen't have checksumming, but apparently it's only for able to checksum for metadata and it's disabled by default: https://serverfault.com/questions/456319/how-to-get-checksum...
Dm-integrity sounds worth a look, but https://raid.wiki.kernel.org/index.php/Dm-integrity doesn't inspire much confidence.