Re: veritysetup forward error correction failure
Tom Eccles <[email protected]>
| Newsgroups | gmane.linux.kernel.device-mapper.dm-crypt |
|---|---|
| Message-ID | <[email protected]> |
On 18/07/2019 10:50 am, Milan Broz wrote:
> On 18/07/2019 11:10, Tom Eccles wrote:
>> tomeccles@debian-kernel-builder:~$ uname -a
>> Linux debian-kernel-builder 4.19.37-verity #6 SMP Wed Jul 17 11:47:38 BST
>> 2019 x86_64 GNU/Linux
>> tomeccles@debian-kernel-builder:~$ /usr/sbin/veritysetup --version
>> veritysetup 2.1.0
>>
>> I can also reproduce the issue using veritysetup 2.2.0-rc1.
>
> Thanks, the best would be to create an issue for cryptsetup project
> https://gitlab.com/cryptsetup/cryptsetup/issues
> (if it is a kernel bug we report it there later)
I will create an issue once I have images to reproduce the issue.
> I will need some images (or a script to create them) to reproduce it though.
I am working on this. I want to see if I can reproduce with much smaller
filesystem images so as to keep things simple (currently I am using a full
Debian rootfs).
> ...
>
>> Also, I tried adding some prints to veritysetup and the kernel, and on the
>> face of it, the reed-solomon state (struct rs in veritysetup) seems the
>> same.
>
> AFAIK the kernel and our code was based on the same libfec code,
> so I am quite interested to find out what is the difference here.
See struct rs_codec in kernel/include/linux/rslib.h:34
/**
* struct rs_codec - rs codec data
*
* @mm: Bits per symbol
* @nn: Symbols per block (= (1<<mm)-1)
* @alpha_to: log lookup table
* @index_of: Antilog lookup table
* @genpoly: Generator polynomial
* @nroots: Number of generator roots = number of parity symbols
* @fcr: First consecutive root, index form
* @prim: Primitive element, index form
* @iprim: prim-th root of 1, index form
* @gfpoly: The primitive generator polynominal
* @gffunc: Function to generate the field, if non-canonical representation
* @users: Users of this structure
* @list: List entry for the rs codec list
*/
struct rs_codec {
int mm;
int nn;
uint16_t *alpha_to;
uint16_t *index_of;
uint16_t *genpoly;
int nroots;
int fcr;
int prim;
int iprim;
int gfpoly;
int (*gffunc)(int);
int users;
struct list_head list;
};
Vs cryptsetup/lib/verity/rs.h:34
/* Reed-Solomon codec control block */
struct rs {
int mm; /* Bits per symbol */
int nn; /* Symbols per block (= (1<<mm)-1) */
data_t *alpha_to;/* log lookup table */
data_t *index_of;/* Antilog lookup table */
data_t *genpoly; /* Generator polynomial */
int nroots; /* Number of generator roots = number of parity symbols */
int fcr; /* First consecutive root, index form */
int prim; /* Primitive element, index form */
int iprim; /* prim-th root of 1, index form */
int pad; /* Padding bytes in shortened block */
};
> (It can take some time though, the userspace FEC image verification was
> implemented by my student that already disappeared from the project :)
>
> Thanks,
> Milan
>
_______________________________________________
dm-crypt mailing list
[email protected]
https://www.saout.de/mailman/listinfo/dm-crypt