Commit 82fbd6a3 authored by Eric Biggers's avatar Eric Biggers Committed by Mikulas Patocka
Browse files

dm-verity-fec: replace {MAX,MIN}_RSN with {MIN,MAX}_ROOTS



Every time DM_VERITY_FEC_{MAX,MIN}_RSN are used, they are subtracted
from DM_VERITY_FEC_RSM to get the bounds on the number of roots.
Therefore, replace these with {MIN,MAX}_ROOTS constants which are more
directly useful.  (Note the inversion, where MAX_RSN maps to MIN_ROOTS
and MIN_RSN maps to MAX_ROOTS.)  No functional change.

Signed-off-by: default avatarEric Biggers <ebiggers@kernel.org>
Signed-off-by: default avatarMikulas Patocka <mpatocka@redhat.com>
parent 05777b28
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -73,7 +73,7 @@ static int fec_decode_bufs(struct dm_verity *v, struct dm_verity_io *io,
	int r, corrected = 0, res;
	struct dm_buffer *buf;
	unsigned int n, i, j, parity_pos, to_copy;
	uint16_t par_buf[DM_VERITY_FEC_RSM - DM_VERITY_FEC_MIN_RSN];
	uint16_t par_buf[DM_VERITY_FEC_MAX_ROOTS];
	u8 *par, *block;
	u64 parity_block;
	struct bio *bio = dm_bio_from_per_bio_data(io, v->ti->per_io_data_size);
@@ -572,8 +572,8 @@ int verity_fec_parse_opt_args(struct dm_arg_set *as, struct dm_verity *v,

	} else if (!strcasecmp(arg_name, DM_VERITY_OPT_FEC_ROOTS)) {
		if (sscanf(arg_value, "%hhu%c", &num_c, &dummy) != 1 || !num_c ||
		    num_c < (DM_VERITY_FEC_RSM - DM_VERITY_FEC_MAX_RSN) ||
		    num_c > (DM_VERITY_FEC_RSM - DM_VERITY_FEC_MIN_RSN)) {
		    num_c < DM_VERITY_FEC_MIN_ROOTS ||
		    num_c > DM_VERITY_FEC_MAX_ROOTS) {
			ti->error = "Invalid " DM_VERITY_OPT_FEC_ROOTS;
			return -EINVAL;
		}
+3 −4
Original line number Diff line number Diff line
@@ -13,8 +13,8 @@

/* Reed-Solomon(M, N) parameters */
#define DM_VERITY_FEC_RSM		255
#define DM_VERITY_FEC_MAX_RSN		253
#define DM_VERITY_FEC_MIN_RSN		231	/* ~10% space overhead */
#define DM_VERITY_FEC_MIN_ROOTS	2	/* RS(255, 253): ~0.8% space overhead */
#define DM_VERITY_FEC_MAX_ROOTS	24	/* RS(255, 231): ~10% space overhead */

/* buffers for deinterleaving and decoding */
#define DM_VERITY_FEC_BUF_RS_BITS	4	/* 1 << RS blocks per buffer */
@@ -47,8 +47,7 @@ struct dm_verity_fec {
/* per-bio data */
struct dm_verity_fec_io {
	struct rs_control *rs;	/* Reed-Solomon state */
	/* erasures for decode_rs8 */
	int erasures[DM_VERITY_FEC_RSM - DM_VERITY_FEC_MIN_RSN + 1];
	int erasures[DM_VERITY_FEC_MAX_ROOTS + 1]; /* erasures for decode_rs8 */
	u8 *output;		/* buffer for corrected output */
	unsigned int level;		/* recursion level */
	unsigned int nbufs;		/* number of buffers allocated */