ZFS dedup - two-layered dittoblocks setting
While I was researching my pool's data corruption, possibly hitting several deduped files with one corrupt block, it was suggested to set "dedupditto" to small values, like "2". My oi_148a LiveUSB refused to set values smaller than 100.
In fact, it seems reasonable to have two dedupditto values: one to make a ditto copy when DDT reference counter exceeds some small value (for example, 2-5), and another to add ditto copies every "N" values for frequently-referenced data (every 64-128).
While this would diminish gains from dedup for data with little redundancy (i.e. work like there is no dedup, but add the DDT overhead for blocks with one-two hits), it would also protect both (or more) deduped files from single-block corruption thanks to shared ditto copies of the block (after two-five hits), and add more copies to this protection later on for "important" (highly overlapping) files.