diff options
author | Sami Tolvanen <samitolvanen@google.com> | 2015-12-03 15:26:30 +0100 |
---|---|---|
committer | Mike Snitzer <snitzer@redhat.com> | 2015-12-10 16:39:03 +0100 |
commit | a739ff3f543afbb4a041c16cd0182c8e8d366e70 (patch) | |
tree | 2613a382283548a1b88e6f2ba589252312d05fff /drivers/md/Kconfig | |
parent | dm verity: factor out verity_for_bv_block() (diff) | |
download | linux-a739ff3f543afbb4a041c16cd0182c8e8d366e70.tar.xz linux-a739ff3f543afbb4a041c16cd0182c8e8d366e70.zip |
dm verity: add support for forward error correction
Add support for correcting corrupted blocks using Reed-Solomon.
This code uses RS(255, N) interleaved across data and hash
blocks. Each error-correcting block covers N bytes evenly
distributed across the combined total data, so that each byte is a
maximum distance away from the others. This makes it possible to
recover from several consecutive corrupted blocks with relatively
small space overhead.
In addition, using verity hashes to locate erasures nearly doubles
the effectiveness of error correction. Being able to detect
corrupted blocks also improves performance, because only corrupted
blocks need to corrected.
For a 2 GiB partition, RS(255, 253) (two parity bytes for each
253-byte block) can correct up to 16 MiB of consecutive corrupted
blocks if erasures can be located, and 8 MiB if they cannot, with
16 MiB space overhead.
Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Diffstat (limited to 'drivers/md/Kconfig')
-rw-r--r-- | drivers/md/Kconfig | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/md/Kconfig b/drivers/md/Kconfig index 1b69359461e9..0a2e7273db9e 100644 --- a/drivers/md/Kconfig +++ b/drivers/md/Kconfig @@ -467,6 +467,18 @@ config DM_VERITY If unsure, say N. +config DM_VERITY_FEC + bool "Verity forward error correction support" + depends on DM_VERITY + select REED_SOLOMON + select REED_SOLOMON_DEC8 + ---help--- + Add forward error correction support to dm-verity. This option + makes it possible to use pre-generated error correction data to + recover from corrupted blocks. + + If unsure, say N. + config DM_SWITCH tristate "Switch target support (EXPERIMENTAL)" depends on BLK_DEV_DM |