Renamed LFS_CKMETAPARITY and LFS_CKDATACKSUMREADS
- LFS_CKPARITY -> LFS_CKMETAPARITY - LFS_CKDATACKSUMS -> LFS_CKDATACKSUMREADS The goal here is to provide hints for 1. what is being checked (META, DATA, etc), and 2. on what operation (FETCHES, PROGS, READS, etc). Note that LFS_CKDATACKSUMREADS is intended to eventually be a part of a set of flags that can pull off closed fully-checked reads: - LFS_CKMETAREDUNDREADS - Check data checksums on reads - LFS_CKDATACKSUMREADS - Check metadata redund blocks on reads - LFS_CKREADS - LFS_CKMETAREDUNDREADS + LFS_CKDATACKSUMREADS Also it's probably not a bad idea for LFS_CKMETAPARITY to be harder to use. It's really not worth enabling unless you understand its limitations (<1 bit of error detection, yay). No code changes.
This commit is contained in:
@@ -706,17 +706,17 @@ static int lfsr_bd_set(lfs_t *lfs, lfs_block_t block, lfs_size_t off,
|
|||||||
// ptail tracks the most recent trunk's parity so we can parity-check
|
// ptail tracks the most recent trunk's parity so we can parity-check
|
||||||
// if it hasn't been written to disk yet
|
// if it hasn't been written to disk yet
|
||||||
|
|
||||||
#ifdef LFS_CKPARITY
|
#ifdef LFS_CKMETAPARITY
|
||||||
#define LFSR_PTAIL_PARITY 0x80000000
|
#define LFSR_PTAIL_PARITY 0x80000000
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef LFS_CKPARITY
|
#ifdef LFS_CKMETAPARITY
|
||||||
static inline bool lfsr_ptail_parity(const lfs_t *lfs) {
|
static inline bool lfsr_ptail_parity(const lfs_t *lfs) {
|
||||||
return lfs->ptail.off & LFSR_PTAIL_PARITY;
|
return lfs->ptail.off & LFSR_PTAIL_PARITY;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef LFS_CKPARITY
|
#ifdef LFS_CKMETAPARITY
|
||||||
static inline lfs_size_t lfsr_ptail_off(const lfs_t *lfs) {
|
static inline lfs_size_t lfsr_ptail_off(const lfs_t *lfs) {
|
||||||
return lfs->ptail.off & ~LFSR_PTAIL_PARITY;
|
return lfs->ptail.off & ~LFSR_PTAIL_PARITY;
|
||||||
}
|
}
|
||||||
@@ -725,7 +725,7 @@ static inline lfs_size_t lfsr_ptail_off(const lfs_t *lfs) {
|
|||||||
|
|
||||||
// checked read helpers
|
// checked read helpers
|
||||||
|
|
||||||
#ifdef LFS_CKDATACKSUMS
|
#ifdef LFS_CKDATACKSUMREADS
|
||||||
static int lfsr_bd_ckprefix(lfs_t *lfs,
|
static int lfsr_bd_ckprefix(lfs_t *lfs,
|
||||||
lfs_block_t block, lfs_size_t off, lfs_size_t hint,
|
lfs_block_t block, lfs_size_t off, lfs_size_t hint,
|
||||||
lfs_size_t cksize, uint32_t cksum,
|
lfs_size_t cksize, uint32_t cksum,
|
||||||
@@ -760,7 +760,7 @@ static int lfsr_bd_ckprefix(lfs_t *lfs,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef LFS_CKDATACKSUMS
|
#ifdef LFS_CKDATACKSUMREADS
|
||||||
static int lfsr_bd_cksuffix(lfs_t *lfs,
|
static int lfsr_bd_cksuffix(lfs_t *lfs,
|
||||||
lfs_block_t block, lfs_size_t off, lfs_size_t hint,
|
lfs_block_t block, lfs_size_t off, lfs_size_t hint,
|
||||||
lfs_size_t cksize, uint32_t cksum,
|
lfs_size_t cksize, uint32_t cksum,
|
||||||
@@ -795,7 +795,7 @@ static int lfsr_bd_cksuffix(lfs_t *lfs,
|
|||||||
|
|
||||||
// checked read functions
|
// checked read functions
|
||||||
|
|
||||||
#ifdef LFS_CKDATACKSUMS
|
#ifdef LFS_CKDATACKSUMREADS
|
||||||
// caching read with parity/checksum checks
|
// caching read with parity/checksum checks
|
||||||
//
|
//
|
||||||
// the main downside of checking reads is we need to read all data that
|
// the main downside of checking reads is we need to read all data that
|
||||||
@@ -851,7 +851,7 @@ static int lfsr_bd_readck(lfs_t *lfs,
|
|||||||
//
|
//
|
||||||
// we'd also need to worry about early termination in lfsr_bd_cmp/cmpck
|
// we'd also need to worry about early termination in lfsr_bd_cmp/cmpck
|
||||||
|
|
||||||
#ifdef LFS_CKDATACKSUMS
|
#ifdef LFS_CKDATACKSUMREADS
|
||||||
static lfs_scmp_t lfsr_bd_cmpck(lfs_t *lfs,
|
static lfs_scmp_t lfsr_bd_cmpck(lfs_t *lfs,
|
||||||
lfs_block_t block, lfs_size_t off, lfs_size_t hint,
|
lfs_block_t block, lfs_size_t off, lfs_size_t hint,
|
||||||
const void *buffer, lfs_size_t size,
|
const void *buffer, lfs_size_t size,
|
||||||
@@ -915,7 +915,7 @@ static lfs_scmp_t lfsr_bd_cmpck(lfs_t *lfs,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef LFS_CKDATACKSUMS
|
#ifdef LFS_CKDATACKSUMREADS
|
||||||
static int lfsr_bd_cpyck(lfs_t *lfs,
|
static int lfsr_bd_cpyck(lfs_t *lfs,
|
||||||
lfs_block_t dst_block, lfs_size_t dst_off,
|
lfs_block_t dst_block, lfs_size_t dst_off,
|
||||||
lfs_block_t src_block, lfs_size_t src_off, lfs_size_t hint,
|
lfs_block_t src_block, lfs_size_t src_off, lfs_size_t hint,
|
||||||
@@ -1454,7 +1454,7 @@ static inline bool lfsr_tag_diverging2(
|
|||||||
#define LFSR_TAG_DSIZE (2+5+4)
|
#define LFSR_TAG_DSIZE (2+5+4)
|
||||||
|
|
||||||
// needed in lfsr_bd_readtag
|
// needed in lfsr_bd_readtag
|
||||||
#ifdef LFS_CKPARITY
|
#ifdef LFS_CKMETAPARITY
|
||||||
static inline bool lfsr_m_isckparity(uint32_t flags);
|
static inline bool lfsr_m_isckparity(uint32_t flags);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -1519,7 +1519,7 @@ static lfs_ssize_t lfsr_bd_readtag(lfs_t *lfs,
|
|||||||
return LFS_ERR_CORRUPT;
|
return LFS_ERR_CORRUPT;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef LFS_CKPARITY
|
#ifdef LFS_CKMETAPARITY
|
||||||
// check the parity if we're checking parity
|
// check the parity if we're checking parity
|
||||||
//
|
//
|
||||||
// this requires reading all of the data as well, but with any luck
|
// this requires reading all of the data as well, but with any luck
|
||||||
@@ -1660,7 +1660,7 @@ static lfs_ssize_t lfsr_bd_progtag(lfs_t *lfs,
|
|||||||
#define LFSR_DATA_ONDISK 0x80000000
|
#define LFSR_DATA_ONDISK 0x80000000
|
||||||
#define LFSR_DATA_ISBPTR 0x40000000
|
#define LFSR_DATA_ISBPTR 0x40000000
|
||||||
|
|
||||||
#ifdef LFS_CKDATACKSUMS
|
#ifdef LFS_CKDATACKSUMREADS
|
||||||
#define LFSR_DATA_ISERASED 0x80000000
|
#define LFSR_DATA_ISERASED 0x80000000
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -1697,13 +1697,13 @@ static inline lfs_size_t lfsr_data_size(lfsr_data_t data) {
|
|||||||
return data.size & ~LFSR_DATA_ONDISK & ~LFSR_DATA_ISBPTR;
|
return data.size & ~LFSR_DATA_ONDISK & ~LFSR_DATA_ISBPTR;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef LFS_CKDATACKSUMS
|
#ifdef LFS_CKDATACKSUMREADS
|
||||||
static inline lfs_size_t lfsr_data_cksize(lfsr_data_t data) {
|
static inline lfs_size_t lfsr_data_cksize(lfsr_data_t data) {
|
||||||
return data.u.disk.cksize & ~LFSR_DATA_ISERASED;
|
return data.u.disk.cksize & ~LFSR_DATA_ISERASED;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef LFS_CKDATACKSUMS
|
#ifdef LFS_CKDATACKSUMREADS
|
||||||
static inline uint32_t lfsr_data_cksum(lfsr_data_t data) {
|
static inline uint32_t lfsr_data_cksum(lfsr_data_t data) {
|
||||||
return data.u.disk.cksum;
|
return data.u.disk.cksum;
|
||||||
}
|
}
|
||||||
@@ -1768,7 +1768,7 @@ static inline lfsr_data_t lfsr_data_fromfruncate(lfsr_data_t data,
|
|||||||
// consuming the data
|
// consuming the data
|
||||||
|
|
||||||
// needed in lfsr_data_read and friends
|
// needed in lfsr_data_read and friends
|
||||||
#ifdef LFS_CKDATACKSUMS
|
#ifdef LFS_CKDATACKSUMREADS
|
||||||
static inline bool lfsr_m_isckdatacksums(uint32_t flags);
|
static inline bool lfsr_m_isckdatacksums(uint32_t flags);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -1780,11 +1780,11 @@ static lfs_ssize_t lfsr_data_read(lfs_t *lfs, lfsr_data_t *data,
|
|||||||
// on-disk?
|
// on-disk?
|
||||||
if (lfsr_data_ondisk(*data)) {
|
if (lfsr_data_ondisk(*data)) {
|
||||||
// validating data cksums?
|
// validating data cksums?
|
||||||
if (LFS_IFDEF_CKDATACKSUMS(
|
if (LFS_IFDEF_CKDATACKSUMREADS(
|
||||||
lfsr_m_isckdatacksums(lfs->flags)
|
lfsr_m_isckdatacksums(lfs->flags)
|
||||||
&& lfsr_data_isbptr(*data),
|
&& lfsr_data_isbptr(*data),
|
||||||
false)) {
|
false)) {
|
||||||
#ifdef LFS_CKDATACKSUMS
|
#ifdef LFS_CKDATACKSUMREADS
|
||||||
int err = lfsr_bd_readck(lfs,
|
int err = lfsr_bd_readck(lfs,
|
||||||
data->u.disk.block, data->u.disk.off,
|
data->u.disk.block, data->u.disk.off,
|
||||||
// note our hint includes the full data range
|
// note our hint includes the full data range
|
||||||
@@ -1887,11 +1887,11 @@ static lfs_scmp_t lfsr_data_cmp(lfs_t *lfs, lfsr_data_t data,
|
|||||||
// on-disk?
|
// on-disk?
|
||||||
if (lfsr_data_ondisk(data)) {
|
if (lfsr_data_ondisk(data)) {
|
||||||
// validating data cksums?
|
// validating data cksums?
|
||||||
if (LFS_IFDEF_CKDATACKSUMS(
|
if (LFS_IFDEF_CKDATACKSUMREADS(
|
||||||
lfsr_m_isckdatacksums(lfs->flags)
|
lfsr_m_isckdatacksums(lfs->flags)
|
||||||
&& lfsr_data_isbptr(data),
|
&& lfsr_data_isbptr(data),
|
||||||
false)) {
|
false)) {
|
||||||
#ifdef LFS_CKDATACKSUMS
|
#ifdef LFS_CKDATACKSUMREADS
|
||||||
int cmp = lfsr_bd_cmpck(lfs,
|
int cmp = lfsr_bd_cmpck(lfs,
|
||||||
// note the 0 hint, we don't usually use any
|
// note the 0 hint, we don't usually use any
|
||||||
// following data
|
// following data
|
||||||
@@ -1959,11 +1959,11 @@ static int lfsr_bd_progdata(lfs_t *lfs,
|
|||||||
// on-disk?
|
// on-disk?
|
||||||
if (lfsr_data_ondisk(data)) {
|
if (lfsr_data_ondisk(data)) {
|
||||||
// validating data cksums?
|
// validating data cksums?
|
||||||
if (LFS_IFDEF_CKDATACKSUMS(
|
if (LFS_IFDEF_CKDATACKSUMREADS(
|
||||||
lfsr_m_isckdatacksums(lfs->flags)
|
lfsr_m_isckdatacksums(lfs->flags)
|
||||||
&& lfsr_data_isbptr(data),
|
&& lfsr_data_isbptr(data),
|
||||||
false)) {
|
false)) {
|
||||||
#ifdef LFS_CKDATACKSUMS
|
#ifdef LFS_CKDATACKSUMREADS
|
||||||
int err = lfsr_bd_cpyck(lfs, block, off,
|
int err = lfsr_bd_cpyck(lfs, block, off,
|
||||||
data.u.disk.block, data.u.disk.off, lfsr_data_size(data),
|
data.u.disk.block, data.u.disk.off, lfsr_data_size(data),
|
||||||
lfsr_data_size(data),
|
lfsr_data_size(data),
|
||||||
@@ -2582,7 +2582,7 @@ static void lfsr_bptr_init(lfsr_bptr_t *bptr,
|
|||||||
bptr->data.size = data.size | LFSR_DATA_ONDISK | LFSR_BPTR_ISBPTR;
|
bptr->data.size = data.size | LFSR_DATA_ONDISK | LFSR_BPTR_ISBPTR;
|
||||||
bptr->data.u.disk.block = data.u.disk.block;
|
bptr->data.u.disk.block = data.u.disk.block;
|
||||||
bptr->data.u.disk.off = data.u.disk.off;
|
bptr->data.u.disk.off = data.u.disk.off;
|
||||||
#ifdef LFS_CKDATACKSUMS
|
#ifdef LFS_CKDATACKSUMREADS
|
||||||
bptr->data.u.disk.cksize = cksize;
|
bptr->data.u.disk.cksize = cksize;
|
||||||
bptr->data.u.disk.cksum = cksum;
|
bptr->data.u.disk.cksum = cksum;
|
||||||
#else
|
#else
|
||||||
@@ -2593,14 +2593,14 @@ static void lfsr_bptr_init(lfsr_bptr_t *bptr,
|
|||||||
|
|
||||||
static inline void lfsr_bptr_discard(lfsr_bptr_t *bptr) {
|
static inline void lfsr_bptr_discard(lfsr_bptr_t *bptr) {
|
||||||
bptr->data = LFSR_DATA_NULL();
|
bptr->data = LFSR_DATA_NULL();
|
||||||
#ifndef LFS_CKDATACKSUMS
|
#ifndef LFS_CKDATACKSUMREADS
|
||||||
bptr->cksize = 0;
|
bptr->cksize = 0;
|
||||||
bptr->cksum = 0;
|
bptr->cksum = 0;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void lfsr_bptr_claim(lfsr_bptr_t *bptr) {
|
static inline void lfsr_bptr_claim(lfsr_bptr_t *bptr) {
|
||||||
#ifdef LFS_CKDATACKSUMS
|
#ifdef LFS_CKDATACKSUMREADS
|
||||||
bptr->data.u.disk.cksize &= ~LFSR_BPTR_ISERASED;
|
bptr->data.u.disk.cksize &= ~LFSR_BPTR_ISERASED;
|
||||||
#else
|
#else
|
||||||
bptr->cksize &= ~LFSR_BPTR_ISERASED;
|
bptr->cksize &= ~LFSR_BPTR_ISERASED;
|
||||||
@@ -2627,7 +2627,7 @@ static inline lfs_size_t lfsr_bptr_size(const lfsr_bptr_t *bptr) {
|
|||||||
// unnecessarily duplicate, this makes accessing ck info annoyingly
|
// unnecessarily duplicate, this makes accessing ck info annoyingly
|
||||||
// messy...
|
// messy...
|
||||||
static inline bool lfsr_bptr_iserased(const lfsr_bptr_t *bptr) {
|
static inline bool lfsr_bptr_iserased(const lfsr_bptr_t *bptr) {
|
||||||
#ifdef LFS_CKDATACKSUMS
|
#ifdef LFS_CKDATACKSUMREADS
|
||||||
return bptr->data.u.disk.cksize & LFSR_BPTR_ISERASED;
|
return bptr->data.u.disk.cksize & LFSR_BPTR_ISERASED;
|
||||||
#else
|
#else
|
||||||
return bptr->cksize & LFSR_BPTR_ISERASED;
|
return bptr->cksize & LFSR_BPTR_ISERASED;
|
||||||
@@ -2635,7 +2635,7 @@ static inline bool lfsr_bptr_iserased(const lfsr_bptr_t *bptr) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static inline lfs_size_t lfsr_bptr_cksize(const lfsr_bptr_t *bptr) {
|
static inline lfs_size_t lfsr_bptr_cksize(const lfsr_bptr_t *bptr) {
|
||||||
#ifdef LFS_CKDATACKSUMS
|
#ifdef LFS_CKDATACKSUMREADS
|
||||||
return bptr->data.u.disk.cksize & ~LFSR_BPTR_ISERASED;
|
return bptr->data.u.disk.cksize & ~LFSR_BPTR_ISERASED;
|
||||||
#else
|
#else
|
||||||
return bptr->cksize & ~LFSR_BPTR_ISERASED;
|
return bptr->cksize & ~LFSR_BPTR_ISERASED;
|
||||||
@@ -2643,7 +2643,7 @@ static inline lfs_size_t lfsr_bptr_cksize(const lfsr_bptr_t *bptr) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static inline uint32_t lfsr_bptr_cksum(const lfsr_bptr_t *bptr) {
|
static inline uint32_t lfsr_bptr_cksum(const lfsr_bptr_t *bptr) {
|
||||||
#ifdef LFS_CKDATACKSUMS
|
#ifdef LFS_CKDATACKSUMREADS
|
||||||
return bptr->data.u.disk.cksum;
|
return bptr->data.u.disk.cksum;
|
||||||
#else
|
#else
|
||||||
return bptr->cksum;
|
return bptr->cksum;
|
||||||
@@ -2715,7 +2715,7 @@ static int lfsr_data_readbptr(lfs_t *lfs, lfsr_data_t *data,
|
|||||||
|
|
||||||
// read the cksize, cksum
|
// read the cksize, cksum
|
||||||
err = lfsr_data_readlleb128(lfs, data,
|
err = lfsr_data_readlleb128(lfs, data,
|
||||||
LFS_IFDEF_CKDATACKSUMS(
|
LFS_IFDEF_CKDATACKSUMREADS(
|
||||||
&bptr->data.u.disk.cksize,
|
&bptr->data.u.disk.cksize,
|
||||||
&bptr->cksize));
|
&bptr->cksize));
|
||||||
if (err) {
|
if (err) {
|
||||||
@@ -2723,7 +2723,7 @@ static int lfsr_data_readbptr(lfs_t *lfs, lfsr_data_t *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
err = lfsr_data_readle32(lfs, data,
|
err = lfsr_data_readle32(lfs, data,
|
||||||
LFS_IFDEF_CKDATACKSUMS(
|
LFS_IFDEF_CKDATACKSUMREADS(
|
||||||
&bptr->data.u.disk.cksum,
|
&bptr->data.u.disk.cksum,
|
||||||
&bptr->cksum));
|
&bptr->cksum));
|
||||||
if (err) {
|
if (err) {
|
||||||
@@ -3503,7 +3503,7 @@ static int lfsr_rbyd_appendtag(lfs_t *lfs, lfsr_rbyd_t *rbyd,
|
|||||||
|
|
||||||
rbyd->eoff += d;
|
rbyd->eoff += d;
|
||||||
|
|
||||||
#ifdef LFS_CKPARITY
|
#ifdef LFS_CKMETAPARITY
|
||||||
// keep track of most recent parity
|
// keep track of most recent parity
|
||||||
lfs->ptail.block = rbyd->blocks[0];
|
lfs->ptail.block = rbyd->blocks[0];
|
||||||
lfs->ptail.off
|
lfs->ptail.off
|
||||||
@@ -3714,7 +3714,7 @@ static int lfsr_rbyd_appendrattr_(lfs_t *lfs, lfsr_rbyd_t *rbyd,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef LFS_CKPARITY
|
#ifdef LFS_CKMETAPARITY
|
||||||
// keep track of most recent parity
|
// keep track of most recent parity
|
||||||
lfs->ptail.block = rbyd->blocks[0];
|
lfs->ptail.block = rbyd->blocks[0];
|
||||||
lfs->ptail.off
|
lfs->ptail.off
|
||||||
@@ -7163,24 +7163,24 @@ static inline bool lfsr_m_isckfetches(uint32_t flags) {
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef LFS_CKPARITY
|
#ifdef LFS_CKMETAPARITY
|
||||||
static inline bool lfsr_m_isckparity(uint32_t flags) {
|
static inline bool lfsr_m_isckparity(uint32_t flags) {
|
||||||
(void)flags;
|
(void)flags;
|
||||||
#ifdef LFS_YES_CKPARITY
|
#ifdef LFS_YES_CKMETAPARITY
|
||||||
return true;
|
return true;
|
||||||
#else
|
#else
|
||||||
return flags & LFS_M_CKPARITY;
|
return flags & LFS_M_CKMETAPARITY;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef LFS_CKDATACKSUMS
|
#ifdef LFS_CKDATACKSUMREADS
|
||||||
static inline bool lfsr_m_isckdatacksums(uint32_t flags) {
|
static inline bool lfsr_m_isckdatacksums(uint32_t flags) {
|
||||||
(void)flags;
|
(void)flags;
|
||||||
#ifdef LFS_YES_CKDATACKSUMS
|
#ifdef LFS_YES_CKDATACKSUMREADS
|
||||||
return true;
|
return true;
|
||||||
#else
|
#else
|
||||||
return flags & LFS_M_CKDATACKSUMS;
|
return flags & LFS_M_CKDATACKSUMREADS;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -13786,8 +13786,8 @@ static int lfs_init(lfs_t *lfs, uint32_t flags,
|
|||||||
| LFS_IFDEF_REVNOISE(LFS_M_REVNOISE, 0)
|
| LFS_IFDEF_REVNOISE(LFS_M_REVNOISE, 0)
|
||||||
| LFS_IFDEF_CKPROGS(LFS_M_CKPROGS, 0)
|
| LFS_IFDEF_CKPROGS(LFS_M_CKPROGS, 0)
|
||||||
| LFS_IFDEF_CKFETCHES(LFS_M_CKFETCHES, 0)
|
| LFS_IFDEF_CKFETCHES(LFS_M_CKFETCHES, 0)
|
||||||
| LFS_IFDEF_CKPARITY(LFS_M_CKPARITY, 0)
|
| LFS_IFDEF_CKMETAPARITY(LFS_M_CKMETAPARITY, 0)
|
||||||
| LFS_IFDEF_CKDATACKSUMS(LFS_M_CKDATACKSUMS, 0))) == 0);
|
| LFS_IFDEF_CKDATACKSUMREADS(LFS_M_CKDATACKSUMREADS, 0))) == 0);
|
||||||
#if defined(LFS_REVNOISE) && defined(LFS_REVDBG)
|
#if defined(LFS_REVNOISE) && defined(LFS_REVDBG)
|
||||||
// LFS_M_REVDBG and LFS_M_REVNOISE are incompatible
|
// LFS_M_REVDBG and LFS_M_REVNOISE are incompatible
|
||||||
LFS_ASSERT(!lfsr_m_isrevdbg(flags) || !lfsr_m_isrevnoise(flags));
|
LFS_ASSERT(!lfsr_m_isrevdbg(flags) || !lfsr_m_isrevnoise(flags));
|
||||||
@@ -13898,7 +13898,7 @@ static int lfs_init(lfs_t *lfs, uint32_t flags,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef LFS_CKPARITY
|
#ifdef LFS_CKMETAPARITY
|
||||||
// setup ptail, nothing should actually check off=0
|
// setup ptail, nothing should actually check off=0
|
||||||
lfs->ptail.block = 0;
|
lfs->ptail.block = 0;
|
||||||
lfs->ptail.off = 0;
|
lfs->ptail.off = 0;
|
||||||
@@ -14632,11 +14632,11 @@ int lfsr_mount(lfs_t *lfs, uint32_t flags,
|
|||||||
#ifdef LFS_YES_CKFETCHES
|
#ifdef LFS_YES_CKFETCHES
|
||||||
flags |= LFS_M_CKFETCHES;
|
flags |= LFS_M_CKFETCHES;
|
||||||
#endif
|
#endif
|
||||||
#ifdef LFS_YES_CKPARITY
|
#ifdef LFS_YES_CKMETAPARITY
|
||||||
flags |= LFS_M_CKPARITY;
|
flags |= LFS_M_CKMETAPARITY;
|
||||||
#endif
|
#endif
|
||||||
#ifdef LFS_YES_CKDATACKSUMS
|
#ifdef LFS_YES_CKDATACKSUMREADS
|
||||||
flags |= LFS_M_CKDATACKSUMS;
|
flags |= LFS_M_CKDATACKSUMREADS;
|
||||||
#endif
|
#endif
|
||||||
#ifdef LFS_YES_MKCONSISTENT
|
#ifdef LFS_YES_MKCONSISTENT
|
||||||
flags |= LFS_M_MKCONSISTENT;
|
flags |= LFS_M_MKCONSISTENT;
|
||||||
@@ -14664,8 +14664,8 @@ int lfsr_mount(lfs_t *lfs, uint32_t flags,
|
|||||||
| LFS_IFDEF_REVNOISE(LFS_M_REVNOISE, 0)
|
| LFS_IFDEF_REVNOISE(LFS_M_REVNOISE, 0)
|
||||||
| LFS_IFDEF_CKPROGS(LFS_M_CKPROGS, 0)
|
| LFS_IFDEF_CKPROGS(LFS_M_CKPROGS, 0)
|
||||||
| LFS_IFDEF_CKFETCHES(LFS_M_CKFETCHES, 0)
|
| LFS_IFDEF_CKFETCHES(LFS_M_CKFETCHES, 0)
|
||||||
| LFS_IFDEF_CKPARITY(LFS_M_CKPARITY, 0)
|
| LFS_IFDEF_CKMETAPARITY(LFS_M_CKMETAPARITY, 0)
|
||||||
| LFS_IFDEF_CKDATACKSUMS(LFS_M_CKDATACKSUMS, 0)
|
| LFS_IFDEF_CKDATACKSUMREADS(LFS_M_CKDATACKSUMREADS, 0)
|
||||||
| LFS_M_MKCONSISTENT
|
| LFS_M_MKCONSISTENT
|
||||||
| LFS_M_LOOKAHEAD
|
| LFS_M_LOOKAHEAD
|
||||||
| LFS_M_COMPACT
|
| LFS_M_COMPACT
|
||||||
@@ -14686,8 +14686,8 @@ int lfsr_mount(lfs_t *lfs, uint32_t flags,
|
|||||||
| LFS_IFDEF_REVNOISE(LFS_M_REVNOISE, 0)
|
| LFS_IFDEF_REVNOISE(LFS_M_REVNOISE, 0)
|
||||||
| LFS_IFDEF_CKPROGS(LFS_M_CKPROGS, 0)
|
| LFS_IFDEF_CKPROGS(LFS_M_CKPROGS, 0)
|
||||||
| LFS_IFDEF_CKFETCHES(LFS_M_CKFETCHES, 0)
|
| LFS_IFDEF_CKFETCHES(LFS_M_CKFETCHES, 0)
|
||||||
| LFS_IFDEF_CKPARITY(LFS_M_CKPARITY, 0)
|
| LFS_IFDEF_CKMETAPARITY(LFS_M_CKMETAPARITY, 0)
|
||||||
| LFS_IFDEF_CKDATACKSUMS(LFS_M_CKDATACKSUMS, 0)),
|
| LFS_IFDEF_CKDATACKSUMREADS(LFS_M_CKDATACKSUMREADS, 0)),
|
||||||
cfg);
|
cfg);
|
||||||
if (err) {
|
if (err) {
|
||||||
return err;
|
return err;
|
||||||
@@ -14855,11 +14855,11 @@ int lfsr_format(lfs_t *lfs, uint32_t flags,
|
|||||||
#ifdef LFS_YES_CKFETCHES
|
#ifdef LFS_YES_CKFETCHES
|
||||||
flags |= LFS_F_CKFETCHES;
|
flags |= LFS_F_CKFETCHES;
|
||||||
#endif
|
#endif
|
||||||
#ifdef LFS_YES_CKPARITY
|
#ifdef LFS_YES_CKMETAPARITY
|
||||||
flags |= LFS_F_CKPARITY;
|
flags |= LFS_F_CKMETAPARITY;
|
||||||
#endif
|
#endif
|
||||||
#ifdef LFS_YES_CKDATACKSUMS
|
#ifdef LFS_YES_CKDATACKSUMREADS
|
||||||
flags |= LFS_F_CKDATACKSUMS;
|
flags |= LFS_F_CKDATACKSUMREADS;
|
||||||
#endif
|
#endif
|
||||||
#ifdef LFS_YES_CKMETA
|
#ifdef LFS_YES_CKMETA
|
||||||
flags |= LFS_F_CKMETA;
|
flags |= LFS_F_CKMETA;
|
||||||
@@ -14875,8 +14875,8 @@ int lfsr_format(lfs_t *lfs, uint32_t flags,
|
|||||||
| LFS_IFDEF_REVNOISE(LFS_F_REVNOISE, 0)
|
| LFS_IFDEF_REVNOISE(LFS_F_REVNOISE, 0)
|
||||||
| LFS_IFDEF_CKPROGS(LFS_F_CKPROGS, 0)
|
| LFS_IFDEF_CKPROGS(LFS_F_CKPROGS, 0)
|
||||||
| LFS_IFDEF_CKFETCHES(LFS_F_CKFETCHES, 0)
|
| LFS_IFDEF_CKFETCHES(LFS_F_CKFETCHES, 0)
|
||||||
| LFS_IFDEF_CKPARITY(LFS_F_CKPARITY, 0)
|
| LFS_IFDEF_CKMETAPARITY(LFS_F_CKMETAPARITY, 0)
|
||||||
| LFS_IFDEF_CKDATACKSUMS(LFS_F_CKDATACKSUMS, 0)
|
| LFS_IFDEF_CKDATACKSUMREADS(LFS_F_CKDATACKSUMREADS, 0)
|
||||||
| LFS_F_CKMETA
|
| LFS_F_CKMETA
|
||||||
| LFS_F_CKDATA)) == 0);
|
| LFS_F_CKDATA)) == 0);
|
||||||
|
|
||||||
@@ -14887,8 +14887,8 @@ int lfsr_format(lfs_t *lfs, uint32_t flags,
|
|||||||
| LFS_IFDEF_REVNOISE(LFS_F_REVNOISE, 0)
|
| LFS_IFDEF_REVNOISE(LFS_F_REVNOISE, 0)
|
||||||
| LFS_IFDEF_CKPROGS(LFS_F_CKPROGS, 0)
|
| LFS_IFDEF_CKPROGS(LFS_F_CKPROGS, 0)
|
||||||
| LFS_IFDEF_CKFETCHES(LFS_F_CKFETCHES, 0)
|
| LFS_IFDEF_CKFETCHES(LFS_F_CKFETCHES, 0)
|
||||||
| LFS_IFDEF_CKPARITY(LFS_F_CKPARITY, 0)
|
| LFS_IFDEF_CKMETAPARITY(LFS_F_CKMETAPARITY, 0)
|
||||||
| LFS_IFDEF_CKDATACKSUMS(LFS_F_CKDATACKSUMS, 0)),
|
| LFS_IFDEF_CKDATACKSUMREADS(LFS_F_CKDATACKSUMREADS, 0)),
|
||||||
cfg);
|
cfg);
|
||||||
if (err) {
|
if (err) {
|
||||||
return err;
|
return err;
|
||||||
@@ -14948,8 +14948,8 @@ int lfsr_fs_stat(lfs_t *lfs, struct lfs_fsinfo *fsinfo) {
|
|||||||
| LFS_IFDEF_REVNOISE(LFS_I_REVNOISE, 0)
|
| LFS_IFDEF_REVNOISE(LFS_I_REVNOISE, 0)
|
||||||
| LFS_IFDEF_CKPROGS(LFS_I_CKPROGS, 0)
|
| LFS_IFDEF_CKPROGS(LFS_I_CKPROGS, 0)
|
||||||
| LFS_IFDEF_CKFETCHES(LFS_I_CKFETCHES, 0)
|
| LFS_IFDEF_CKFETCHES(LFS_I_CKFETCHES, 0)
|
||||||
| LFS_IFDEF_CKPARITY(LFS_I_CKPARITY, 0)
|
| LFS_IFDEF_CKMETAPARITY(LFS_I_CKMETAPARITY, 0)
|
||||||
| LFS_IFDEF_CKDATACKSUMS(LFS_I_CKDATACKSUMS, 0)
|
| LFS_IFDEF_CKDATACKSUMREADS(LFS_I_CKDATACKSUMREADS, 0)
|
||||||
| LFS_I_MKCONSISTENT
|
| LFS_I_MKCONSISTENT
|
||||||
| LFS_I_LOOKAHEAD
|
| LFS_I_LOOKAHEAD
|
||||||
| LFS_I_COMPACT
|
| LFS_I_COMPACT
|
||||||
|
|||||||
@@ -178,11 +178,12 @@ enum lfs_type {
|
|||||||
#ifdef LFS_CKFETCHES
|
#ifdef LFS_CKFETCHES
|
||||||
#define LFS_F_CKFETCHES 0x00001000 // Check block checksums before first use
|
#define LFS_F_CKFETCHES 0x00001000 // Check block checksums before first use
|
||||||
#endif
|
#endif
|
||||||
#ifdef LFS_CKPARITY
|
#ifdef LFS_CKMETAPARITY
|
||||||
#define LFS_F_CKPARITY 0x00002000 // Check metadata tag parity bits
|
#define LFS_F_CKMETAPARITY \
|
||||||
|
0x00002000 // Check metadata tag parity bits
|
||||||
#endif
|
#endif
|
||||||
#ifdef LFS_CKDATACKSUMS
|
#ifdef LFS_CKDATACKSUMREADS
|
||||||
#define LFS_F_CKDATACKSUMS \
|
#define LFS_F_CKDATACKSUMREADS \
|
||||||
0x00008000 // Check data checksums on reads
|
0x00008000 // Check data checksums on reads
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -207,11 +208,12 @@ enum lfs_type {
|
|||||||
#ifdef LFS_CKFETCHES
|
#ifdef LFS_CKFETCHES
|
||||||
#define LFS_M_CKFETCHES 0x00001000 // Check block checksums before first use
|
#define LFS_M_CKFETCHES 0x00001000 // Check block checksums before first use
|
||||||
#endif
|
#endif
|
||||||
#ifdef LFS_CKPARITY
|
#ifdef LFS_CKMETAPARITY
|
||||||
#define LFS_M_CKPARITY 0x00002000 // Check metadata tag parity bits
|
#define LFS_M_CKMETAPARITY \
|
||||||
|
0x00002000 // Check metadata tag parity bits
|
||||||
#endif
|
#endif
|
||||||
#ifdef LFS_CKDATACKSUMS
|
#ifdef LFS_CKDATACKSUMREADS
|
||||||
#define LFS_M_CKDATACKSUMS \
|
#define LFS_M_CKDATACKSUMREADS \
|
||||||
0x00008000 // Check data checksums on reads
|
0x00008000 // Check data checksums on reads
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -238,12 +240,13 @@ enum lfs_type {
|
|||||||
#ifdef LFS_CKFETCHES
|
#ifdef LFS_CKFETCHES
|
||||||
#define LFS_I_CKFETCHES 0x00001000 // Mounted with LFS_M_CKFETCHES
|
#define LFS_I_CKFETCHES 0x00001000 // Mounted with LFS_M_CKFETCHES
|
||||||
#endif
|
#endif
|
||||||
#ifdef LFS_CKPARITY
|
#ifdef LFS_CKMETAPARITY
|
||||||
#define LFS_I_CKPARITY 0x00002000 // Mounted with LFS_M_CKPARITY
|
#define LFS_I_CKMETAPARITY \
|
||||||
|
0x00002000 // Mounted with LFS_M_CKMETAPARITY
|
||||||
#endif
|
#endif
|
||||||
#ifdef LFS_CKDATACKSUMS
|
#ifdef LFS_CKDATACKSUMREADS
|
||||||
#define LFS_I_CKDATACKSUMS \
|
#define LFS_I_CKDATACKSUMREADS \
|
||||||
0x00008000 // Mounted with LFS_M_CKDATACKSUMS
|
0x00008000 // Mounted with LFS_M_CKDATACKSUMREADS
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define LFS_I_MKCONSISTENT \
|
#define LFS_I_MKCONSISTENT \
|
||||||
@@ -641,7 +644,7 @@ typedef struct lfsr_data {
|
|||||||
struct {
|
struct {
|
||||||
lfs_block_t block;
|
lfs_block_t block;
|
||||||
lfs_size_t off;
|
lfs_size_t off;
|
||||||
#ifdef LFS_CKDATACKSUMS
|
#ifdef LFS_CKDATACKSUMREADS
|
||||||
// optional context for validating data
|
// optional context for validating data
|
||||||
// sign(cksize)=0 => block not erased
|
// sign(cksize)=0 => block not erased
|
||||||
// sign(cksize)=1 => block erased
|
// sign(cksize)=1 => block erased
|
||||||
@@ -658,7 +661,7 @@ typedef struct lfsr_bptr {
|
|||||||
// sign2(size)=0b10 => on-disk data
|
// sign2(size)=0b10 => on-disk data
|
||||||
// sign2(size)=0b11 => block pointer
|
// sign2(size)=0b11 => block pointer
|
||||||
lfsr_data_t data;
|
lfsr_data_t data;
|
||||||
#ifndef LFS_CKDATACKSUMS
|
#ifndef LFS_CKDATACKSUMREADS
|
||||||
// sign(cksize)=0 => block not erased
|
// sign(cksize)=0 => block not erased
|
||||||
// sign(cksize)=1 => block erased
|
// sign(cksize)=1 => block erased
|
||||||
lfs_size_t cksize;
|
lfs_size_t cksize;
|
||||||
@@ -871,7 +874,7 @@ typedef struct lfs {
|
|||||||
uint8_t *buffer;
|
uint8_t *buffer;
|
||||||
} pcache;
|
} pcache;
|
||||||
|
|
||||||
#ifdef LFS_CKPARITY
|
#ifdef LFS_CKMETAPARITY
|
||||||
struct {
|
struct {
|
||||||
lfs_block_t block;
|
lfs_block_t block;
|
||||||
// sign(off) => tail parity
|
// sign(off) => tail parity
|
||||||
|
|||||||
+16
-16
@@ -38,11 +38,11 @@
|
|||||||
#ifndef LFS_CKFETCHES
|
#ifndef LFS_CKFETCHES
|
||||||
#define LFS_CKFETCHES
|
#define LFS_CKFETCHES
|
||||||
#endif
|
#endif
|
||||||
#ifndef LFS_CKPARITY
|
#ifndef LFS_CKMETAPARITY
|
||||||
#define LFS_CKPARITY
|
#define LFS_CKMETAPARITY
|
||||||
#endif
|
#endif
|
||||||
#ifndef LFS_CKDATACKSUMS
|
#ifndef LFS_CKDATACKSUMREADS
|
||||||
#define LFS_CKDATACKSUMS
|
#define LFS_CKDATACKSUMREADS
|
||||||
#endif
|
#endif
|
||||||
#ifndef LFS_GC
|
#ifndef LFS_GC
|
||||||
#define LFS_GC
|
#define LFS_GC
|
||||||
@@ -65,14 +65,14 @@
|
|||||||
#ifdef LFS_YES_CKFETCHES
|
#ifdef LFS_YES_CKFETCHES
|
||||||
#define LFS_CKFETCHES
|
#define LFS_CKFETCHES
|
||||||
#endif
|
#endif
|
||||||
#ifdef LFS_YES_CKPARITY
|
#ifdef LFS_YES_CKMETAPARITY
|
||||||
#define LFS_CKPARITY
|
#define LFS_CKMETAPARITY
|
||||||
#endif
|
#endif
|
||||||
#ifdef LFS_YES_CKDATACKSUMS
|
#ifdef LFS_YES_CKDATACKSUMREADS
|
||||||
#define LFS_CKDATACKSUMS
|
#define LFS_CKDATACKSUMREADS
|
||||||
#endif
|
#endif
|
||||||
#ifdef LFS_YES_CKDATACKSUMS
|
#ifdef LFS_YES_GC
|
||||||
#define LFS_CKDATACKSUMS
|
#define LFS_GC
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// LFS_NO_LOG disables all logging macros
|
// LFS_NO_LOG disables all logging macros
|
||||||
@@ -240,16 +240,16 @@
|
|||||||
#define LFS_IFDEF_CKFETCHES(a, b) (b)
|
#define LFS_IFDEF_CKFETCHES(a, b) (b)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef LFS_CKPARITY
|
#ifdef LFS_CKMETAPARITY
|
||||||
#define LFS_IFDEF_CKPARITY(a, b) (a)
|
#define LFS_IFDEF_CKMETAPARITY(a, b) (a)
|
||||||
#else
|
#else
|
||||||
#define LFS_IFDEF_CKPARITY(a, b) (b)
|
#define LFS_IFDEF_CKMETAPARITY(a, b) (b)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef LFS_CKDATACKSUMS
|
#ifdef LFS_CKDATACKSUMREADS
|
||||||
#define LFS_IFDEF_CKDATACKSUMS(a, b) (a)
|
#define LFS_IFDEF_CKDATACKSUMREADS(a, b) (a)
|
||||||
#else
|
#else
|
||||||
#define LFS_IFDEF_CKDATACKSUMS(a, b) (b)
|
#define LFS_IFDEF_CKDATACKSUMREADS(a, b) (b)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef LFS_GC
|
#ifdef LFS_GC
|
||||||
|
|||||||
+10
-7
@@ -65,8 +65,9 @@ FLAGS = [
|
|||||||
('F', 'REVNOISE', 0x00000020, "Add noise to revision counts" ),
|
('F', 'REVNOISE', 0x00000020, "Add noise to revision counts" ),
|
||||||
('F', 'CKPROGS', 0x00000800, "Check progs by reading back progged data" ),
|
('F', 'CKPROGS', 0x00000800, "Check progs by reading back progged data" ),
|
||||||
('F', 'CKFETCHES', 0x00001000, "Check block checksums before first use" ),
|
('F', 'CKFETCHES', 0x00001000, "Check block checksums before first use" ),
|
||||||
('F', 'CKPARITY', 0x00002000, "Check metadata tag parity bits" ),
|
('F', 'CKMETAPARITY',
|
||||||
('F', 'CKDATACKSUMS',
|
0x00002000, "Check metadata tag parity bits" ),
|
||||||
|
('F', 'CKDATACKSUMREADS',
|
||||||
0x00008000, "Check data checksums on reads" ),
|
0x00008000, "Check data checksums on reads" ),
|
||||||
|
|
||||||
('F', 'CKMETA', 0x00100000, "Check metadata checksums" ),
|
('F', 'CKMETA', 0x00100000, "Check metadata checksums" ),
|
||||||
@@ -82,8 +83,9 @@ FLAGS = [
|
|||||||
('M', 'REVNOISE', 0x00000020, "Add noise to revision counts" ),
|
('M', 'REVNOISE', 0x00000020, "Add noise to revision counts" ),
|
||||||
('M', 'CKPROGS', 0x00000800, "Check progs by reading back progged data" ),
|
('M', 'CKPROGS', 0x00000800, "Check progs by reading back progged data" ),
|
||||||
('M', 'CKFETCHES', 0x00001000, "Check block checksums before first use" ),
|
('M', 'CKFETCHES', 0x00001000, "Check block checksums before first use" ),
|
||||||
('M', 'CKPARITY', 0x00002000, "Check metadata tag parity bits" ),
|
('M', 'CKMETAPARITY',
|
||||||
('M', 'CKDATACKSUMS',
|
0x00002000, "Check metadata tag parity bits" ),
|
||||||
|
('M', 'CKDATACKSUMREADS',
|
||||||
0x00008000, "Check data checksums on reads" ),
|
0x00008000, "Check data checksums on reads" ),
|
||||||
|
|
||||||
('M', 'MKCONSISTENT',
|
('M', 'MKCONSISTENT',
|
||||||
@@ -109,9 +111,10 @@ FLAGS = [
|
|||||||
('I', 'REVNOISE', 0x00000020, "Mounted with LFS_M_REVNOISE" ),
|
('I', 'REVNOISE', 0x00000020, "Mounted with LFS_M_REVNOISE" ),
|
||||||
('I', 'CKPROGS', 0x00000800, "Mounted with LFS_M_CKPROGS" ),
|
('I', 'CKPROGS', 0x00000800, "Mounted with LFS_M_CKPROGS" ),
|
||||||
('I', 'CKFETCHES', 0x00001000, "Mounted with LFS_M_CKFETCHES" ),
|
('I', 'CKFETCHES', 0x00001000, "Mounted with LFS_M_CKFETCHES" ),
|
||||||
('I', 'CKPARITY', 0x00002000, "Mounted with LFS_M_CKPARITY" ),
|
('I', 'CKMETAPARITY',
|
||||||
('I', 'CKDATACKSUMS',
|
0x00002000, "Mounted with LFS_M_CKMETAPARITY" ),
|
||||||
0x00008000, "Mounted with LFS_M_CKDATACKSUMS" ),
|
('I', 'CKDATACKSUMREADS',
|
||||||
|
0x00008000, "Mounted with LFS_M_CKDATACKSUMREADS" ),
|
||||||
|
|
||||||
('I', 'MKCONSISTENT',
|
('I', 'MKCONSISTENT',
|
||||||
0x00010000, "Filesystem needs mkconsistent to write" ),
|
0x00010000, "Filesystem needs mkconsistent to write" ),
|
||||||
|
|||||||
+105
-78
@@ -2313,7 +2313,7 @@ defines.BADBLOCK_BEHAVIOR = [
|
|||||||
]
|
]
|
||||||
# this should stay inlined
|
# this should stay inlined
|
||||||
defines.SIZE = 'BLOCK_SIZE/16'
|
defines.SIZE = 'BLOCK_SIZE/16'
|
||||||
ifdef = 'LFS_CKPARITY'
|
ifdef = 'LFS_CKMETAPARITY'
|
||||||
code = '''
|
code = '''
|
||||||
// test all bad bits in the mroot
|
// test all bad bits in the mroot
|
||||||
for (lfs_size_t i = 0;
|
for (lfs_size_t i = 0;
|
||||||
@@ -2342,12 +2342,12 @@ code = '''
|
|||||||
|
|
||||||
// format
|
// format
|
||||||
lfs_t lfs;
|
lfs_t lfs;
|
||||||
int err = lfsr_format(&lfs, LFS_M_RDWR | LFS_M_CKPARITY, CFG);
|
int err = lfsr_format(&lfs, LFS_M_RDWR | LFS_M_CKMETAPARITY, CFG);
|
||||||
assert(!err || err == LFS_ERR_CORRUPT);
|
assert(!err || err == LFS_ERR_CORRUPT);
|
||||||
if (err == LFS_ERR_CORRUPT) {
|
if (err == LFS_ERR_CORRUPT) {
|
||||||
goto corrupt;
|
goto corrupt;
|
||||||
}
|
}
|
||||||
err = lfsr_mount(&lfs, LFS_M_RDWR | LFS_M_CKPARITY, CFG);
|
err = lfsr_mount(&lfs, LFS_M_RDWR | LFS_M_CKMETAPARITY, CFG);
|
||||||
assert(!err || err == LFS_ERR_CORRUPT);
|
assert(!err || err == LFS_ERR_CORRUPT);
|
||||||
if (err == LFS_ERR_CORRUPT) {
|
if (err == LFS_ERR_CORRUPT) {
|
||||||
goto corrupt;
|
goto corrupt;
|
||||||
@@ -2383,7 +2383,8 @@ code = '''
|
|||||||
// remount?
|
// remount?
|
||||||
if (remount) {
|
if (remount) {
|
||||||
lfsr_unmount(&lfs) => 0;
|
lfsr_unmount(&lfs) => 0;
|
||||||
err = lfsr_mount(&lfs, LFS_M_RDWR | LFS_M_CKPARITY, CFG);
|
err = lfsr_mount(&lfs,
|
||||||
|
LFS_M_RDWR | LFS_M_CKMETAPARITY, CFG);
|
||||||
if (err == LFS_ERR_CORRUPT) {
|
if (err == LFS_ERR_CORRUPT) {
|
||||||
goto corrupt;
|
goto corrupt;
|
||||||
}
|
}
|
||||||
@@ -2433,7 +2434,7 @@ defines.INLINE_SIZE = 0
|
|||||||
defines.CRYSTAL_THRESH = -1
|
defines.CRYSTAL_THRESH = -1
|
||||||
defines.FRAGMENT_SIZE = 'BLOCK_SIZE/8'
|
defines.FRAGMENT_SIZE = 'BLOCK_SIZE/8'
|
||||||
defines.SIZE = '2*FRAGMENT_SIZE'
|
defines.SIZE = '2*FRAGMENT_SIZE'
|
||||||
ifdef = 'LFS_CKPARITY'
|
ifdef = 'LFS_CKMETAPARITY'
|
||||||
code = '''
|
code = '''
|
||||||
// first we need to figure out where the btree block will actually
|
// first we need to figure out where the btree block will actually
|
||||||
// end up, fortunately our block randomization is intentionally
|
// end up, fortunately our block randomization is intentionally
|
||||||
@@ -2441,8 +2442,8 @@ code = '''
|
|||||||
|
|
||||||
// format
|
// format
|
||||||
lfs_t lfs;
|
lfs_t lfs;
|
||||||
lfsr_format(&lfs, LFS_F_RDWR | LFS_F_CKPARITY, CFG) => 0;
|
lfsr_format(&lfs, LFS_F_RDWR | LFS_F_CKMETAPARITY, CFG) => 0;
|
||||||
lfsr_mount(&lfs, LFS_M_RDWR | LFS_M_CKPARITY, CFG) => 0;
|
lfsr_mount(&lfs, LFS_M_RDWR | LFS_M_CKMETAPARITY, CFG) => 0;
|
||||||
|
|
||||||
// create a file
|
// create a file
|
||||||
lfsr_file_t file;
|
lfsr_file_t file;
|
||||||
@@ -2499,8 +2500,8 @@ code = '''
|
|||||||
|
|
||||||
// format
|
// format
|
||||||
lfs_t lfs;
|
lfs_t lfs;
|
||||||
lfsr_format(&lfs, LFS_F_RDWR | LFS_F_CKPARITY, CFG) => 0;
|
lfsr_format(&lfs, LFS_F_RDWR | LFS_F_CKMETAPARITY, CFG) => 0;
|
||||||
lfsr_mount(&lfs, LFS_M_RDWR | LFS_M_CKPARITY, CFG) => 0;
|
lfsr_mount(&lfs, LFS_M_RDWR | LFS_M_CKMETAPARITY, CFG) => 0;
|
||||||
|
|
||||||
{
|
{
|
||||||
// create a file
|
// create a file
|
||||||
@@ -2528,7 +2529,7 @@ code = '''
|
|||||||
// remount?
|
// remount?
|
||||||
if (remount) {
|
if (remount) {
|
||||||
lfsr_unmount(&lfs) => 0;
|
lfsr_unmount(&lfs) => 0;
|
||||||
lfsr_mount(&lfs, LFS_M_RDWR | LFS_M_CKPARITY, CFG) => 0;
|
lfsr_mount(&lfs, LFS_M_RDWR | LFS_M_CKMETAPARITY, CFG) => 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// yes reads can fail here
|
// yes reads can fail here
|
||||||
@@ -2575,7 +2576,7 @@ defines.BADBLOCK_BEHAVIOR = [
|
|||||||
]
|
]
|
||||||
# this should create a single block file
|
# this should create a single block file
|
||||||
defines.SIZE = 'BLOCK_SIZE'
|
defines.SIZE = 'BLOCK_SIZE'
|
||||||
ifdef = 'LFS_CKDATACKSUMS'
|
ifdef = 'LFS_CKDATACKSUMREADS'
|
||||||
code = '''
|
code = '''
|
||||||
// first we need to figure out where the data block will actually
|
// first we need to figure out where the data block will actually
|
||||||
// end up, fortunately our block randomization is intentionally
|
// end up, fortunately our block randomization is intentionally
|
||||||
@@ -2583,8 +2584,8 @@ code = '''
|
|||||||
|
|
||||||
// format
|
// format
|
||||||
lfs_t lfs;
|
lfs_t lfs;
|
||||||
lfsr_format(&lfs, LFS_F_RDWR | LFS_F_CKDATACKSUMS, CFG) => 0;
|
lfsr_format(&lfs, LFS_F_RDWR | LFS_F_CKDATACKSUMREADS, CFG) => 0;
|
||||||
lfsr_mount(&lfs, LFS_M_RDWR | LFS_M_CKDATACKSUMS, CFG) => 0;
|
lfsr_mount(&lfs, LFS_M_RDWR | LFS_M_CKDATACKSUMREADS, CFG) => 0;
|
||||||
|
|
||||||
// create a file
|
// create a file
|
||||||
lfsr_file_t file;
|
lfsr_file_t file;
|
||||||
@@ -2634,8 +2635,8 @@ code = '''
|
|||||||
|
|
||||||
// format
|
// format
|
||||||
lfs_t lfs;
|
lfs_t lfs;
|
||||||
lfsr_format(&lfs, LFS_F_RDWR | LFS_F_CKDATACKSUMS, CFG) => 0;
|
lfsr_format(&lfs, LFS_F_RDWR | LFS_F_CKDATACKSUMREADS, CFG) => 0;
|
||||||
lfsr_mount(&lfs, LFS_M_RDWR | LFS_M_CKDATACKSUMS, CFG) => 0;
|
lfsr_mount(&lfs, LFS_M_RDWR | LFS_M_CKDATACKSUMREADS, CFG) => 0;
|
||||||
|
|
||||||
{
|
{
|
||||||
// create a file
|
// create a file
|
||||||
@@ -2664,7 +2665,7 @@ code = '''
|
|||||||
if (remount) {
|
if (remount) {
|
||||||
lfsr_unmount(&lfs) => 0;
|
lfsr_unmount(&lfs) => 0;
|
||||||
lfsr_mount(&lfs,
|
lfsr_mount(&lfs,
|
||||||
LFS_M_RDWR | LFS_M_CKDATACKSUMS,
|
LFS_M_RDWR | LFS_M_CKDATACKSUMREADS,
|
||||||
CFG) => 0;
|
CFG) => 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2734,16 +2735,16 @@ defines.CKDATA = 'METHOD == 1'
|
|||||||
defines.MTREEONLY = 'METHOD == 2'
|
defines.MTREEONLY = 'METHOD == 2'
|
||||||
defines.CKPROGS = 'METHOD == 0'
|
defines.CKPROGS = 'METHOD == 0'
|
||||||
defines.CKFETCHES = 'METHOD == 2'
|
defines.CKFETCHES = 'METHOD == 2'
|
||||||
defines.CKPARITY = false
|
defines.CKMETAPARITY = false
|
||||||
defines.CKDATACKSUMS = 'METHOD == 3'
|
defines.CKDATACKSUMREADS = 'METHOD == 3'
|
||||||
defines.N = [1, 2, 4, 8, 16, 32, 64, 128, 256]
|
defines.N = [1, 2, 4, 8, 16, 32, 64, 128, 256]
|
||||||
defines.SEED = 'range(10)'
|
defines.SEED = 'range(10)'
|
||||||
fuzz = 'SEED'
|
fuzz = 'SEED'
|
||||||
if = [
|
if = [
|
||||||
'LFS_IFDEF_CKPROGS(true, !CKPROGS)',
|
'LFS_IFDEF_CKPROGS(true, !CKPROGS)',
|
||||||
'LFS_IFDEF_CKFETCHES(true, !CKFETCHES)',
|
'LFS_IFDEF_CKFETCHES(true, !CKFETCHES)',
|
||||||
'LFS_IFDEF_CKPARITY(true, !CKPARITY)',
|
'LFS_IFDEF_CKMETAPARITY(true, !CKMETAPARITY)',
|
||||||
'LFS_IFDEF_CKDATACKSUMS(true, !CKDATACKSUMS)',
|
'LFS_IFDEF_CKDATACKSUMREADS(true, !CKDATACKSUMREADS)',
|
||||||
]
|
]
|
||||||
code = '''
|
code = '''
|
||||||
// seed our block device with our seed so we have different error
|
// seed our block device with our seed so we have different error
|
||||||
@@ -2764,18 +2765,22 @@ code = '''
|
|||||||
LFS_F_RDWR
|
LFS_F_RDWR
|
||||||
| ((CKPROGS) ? LFS_IFDEF_CKPROGS(LFS_F_CKPROGS, -1) : 0)
|
| ((CKPROGS) ? LFS_IFDEF_CKPROGS(LFS_F_CKPROGS, -1) : 0)
|
||||||
| ((CKFETCHES) ? LFS_IFDEF_CKFETCHES(LFS_F_CKFETCHES, -1) : 0)
|
| ((CKFETCHES) ? LFS_IFDEF_CKFETCHES(LFS_F_CKFETCHES, -1) : 0)
|
||||||
| ((CKPARITY) ? LFS_IFDEF_CKPARITY(LFS_F_CKPARITY, -1) : 0)
|
| ((CKMETAPARITY)
|
||||||
| ((CKDATACKSUMS)
|
? LFS_IFDEF_CKMETAPARITY(LFS_F_CKMETAPARITY, -1)
|
||||||
? LFS_IFDEF_CKDATACKSUMS(LFS_F_CKDATACKSUMS, -1)
|
: 0)
|
||||||
|
| ((CKDATACKSUMREADS)
|
||||||
|
? LFS_IFDEF_CKDATACKSUMREADS(LFS_F_CKDATACKSUMREADS, -1)
|
||||||
: 0),
|
: 0),
|
||||||
CFG) => 0;
|
CFG) => 0;
|
||||||
lfsr_mount(&lfs,
|
lfsr_mount(&lfs,
|
||||||
LFS_M_RDWR
|
LFS_M_RDWR
|
||||||
| ((CKPROGS) ? LFS_IFDEF_CKPROGS(LFS_M_CKPROGS, -1) : 0)
|
| ((CKPROGS) ? LFS_IFDEF_CKPROGS(LFS_M_CKPROGS, -1) : 0)
|
||||||
| ((CKFETCHES) ? LFS_IFDEF_CKFETCHES(LFS_M_CKFETCHES, -1) : 0)
|
| ((CKFETCHES) ? LFS_IFDEF_CKFETCHES(LFS_M_CKFETCHES, -1) : 0)
|
||||||
| ((CKPARITY) ? LFS_IFDEF_CKPARITY(LFS_M_CKPARITY, -1) : 0)
|
| ((CKMETAPARITY)
|
||||||
| ((CKDATACKSUMS)
|
? LFS_IFDEF_CKMETAPARITY(LFS_M_CKMETAPARITY, -1)
|
||||||
? LFS_IFDEF_CKDATACKSUMS(LFS_M_CKDATACKSUMS, -1)
|
: 0)
|
||||||
|
| ((CKDATACKSUMREADS)
|
||||||
|
? LFS_IFDEF_CKDATACKSUMREADS(LFS_M_CKDATACKSUMREADS, -1)
|
||||||
: 0),
|
: 0),
|
||||||
CFG) => 0;
|
CFG) => 0;
|
||||||
|
|
||||||
@@ -2954,11 +2959,13 @@ code = '''
|
|||||||
| ((CKFETCHES)
|
| ((CKFETCHES)
|
||||||
? LFS_IFDEF_CKFETCHES(LFS_M_CKFETCHES, -1)
|
? LFS_IFDEF_CKFETCHES(LFS_M_CKFETCHES, -1)
|
||||||
: 0)
|
: 0)
|
||||||
| ((CKPARITY)
|
| ((CKMETAPARITY)
|
||||||
? LFS_IFDEF_CKPARITY(LFS_M_CKPARITY, -1)
|
? LFS_IFDEF_CKMETAPARITY(LFS_M_CKMETAPARITY, -1)
|
||||||
: 0)
|
: 0)
|
||||||
| ((CKDATACKSUMS)
|
| ((CKDATACKSUMREADS)
|
||||||
? LFS_IFDEF_CKDATACKSUMS(LFS_M_CKDATACKSUMS, -1)
|
? LFS_IFDEF_CKDATACKSUMREADS(
|
||||||
|
LFS_M_CKDATACKSUMREADS,
|
||||||
|
-1)
|
||||||
: 0),
|
: 0),
|
||||||
CFG) => 0;
|
CFG) => 0;
|
||||||
}
|
}
|
||||||
@@ -3035,8 +3042,8 @@ defines.CKDATA = 'METHOD == 1'
|
|||||||
defines.MTREEONLY = 'METHOD == 2'
|
defines.MTREEONLY = 'METHOD == 2'
|
||||||
defines.CKPROGS = 'METHOD == 0'
|
defines.CKPROGS = 'METHOD == 0'
|
||||||
defines.CKFETCHES = 'METHOD == 2'
|
defines.CKFETCHES = 'METHOD == 2'
|
||||||
defines.CKPARITY = false
|
defines.CKMETAPARITY = false
|
||||||
defines.CKDATACKSUMS = 'METHOD == 3'
|
defines.CKDATACKSUMREADS = 'METHOD == 3'
|
||||||
defines.N = [1, 2, 4, 8, 16, 32, 64]
|
defines.N = [1, 2, 4, 8, 16, 32, 64]
|
||||||
defines.SIZE = [
|
defines.SIZE = [
|
||||||
'0',
|
'0',
|
||||||
@@ -3052,8 +3059,8 @@ fuzz = 'SEED'
|
|||||||
if = [
|
if = [
|
||||||
'LFS_IFDEF_CKPROGS(true, !CKPROGS)',
|
'LFS_IFDEF_CKPROGS(true, !CKPROGS)',
|
||||||
'LFS_IFDEF_CKFETCHES(true, !CKFETCHES)',
|
'LFS_IFDEF_CKFETCHES(true, !CKFETCHES)',
|
||||||
'LFS_IFDEF_CKPARITY(true, !CKPARITY)',
|
'LFS_IFDEF_CKMETAPARITY(true, !CKMETAPARITY)',
|
||||||
'LFS_IFDEF_CKDATACKSUMS(true, !CKDATACKSUMS)',
|
'LFS_IFDEF_CKDATACKSUMREADS(true, !CKDATACKSUMREADS)',
|
||||||
'(SIZE*N)/BLOCK_SIZE <= 16',
|
'(SIZE*N)/BLOCK_SIZE <= 16',
|
||||||
]
|
]
|
||||||
code = '''
|
code = '''
|
||||||
@@ -3075,18 +3082,22 @@ code = '''
|
|||||||
LFS_F_RDWR
|
LFS_F_RDWR
|
||||||
| ((CKPROGS) ? LFS_IFDEF_CKPROGS(LFS_F_CKPROGS, -1) : 0)
|
| ((CKPROGS) ? LFS_IFDEF_CKPROGS(LFS_F_CKPROGS, -1) : 0)
|
||||||
| ((CKFETCHES) ? LFS_IFDEF_CKFETCHES(LFS_F_CKFETCHES, -1) : 0)
|
| ((CKFETCHES) ? LFS_IFDEF_CKFETCHES(LFS_F_CKFETCHES, -1) : 0)
|
||||||
| ((CKPARITY) ? LFS_IFDEF_CKPARITY(LFS_F_CKPARITY, -1) : 0)
|
| ((CKMETAPARITY)
|
||||||
| ((CKDATACKSUMS)
|
? LFS_IFDEF_CKMETAPARITY(LFS_F_CKMETAPARITY, -1)
|
||||||
? LFS_IFDEF_CKDATACKSUMS(LFS_F_CKDATACKSUMS, -1)
|
: 0)
|
||||||
|
| ((CKDATACKSUMREADS)
|
||||||
|
? LFS_IFDEF_CKDATACKSUMREADS(LFS_F_CKDATACKSUMREADS, -1)
|
||||||
: 0),
|
: 0),
|
||||||
CFG) => 0;
|
CFG) => 0;
|
||||||
lfsr_mount(&lfs,
|
lfsr_mount(&lfs,
|
||||||
LFS_M_RDWR
|
LFS_M_RDWR
|
||||||
| ((CKPROGS) ? LFS_IFDEF_CKPROGS(LFS_M_CKPROGS, -1) : 0)
|
| ((CKPROGS) ? LFS_IFDEF_CKPROGS(LFS_M_CKPROGS, -1) : 0)
|
||||||
| ((CKFETCHES) ? LFS_IFDEF_CKFETCHES(LFS_M_CKFETCHES, -1) : 0)
|
| ((CKFETCHES) ? LFS_IFDEF_CKFETCHES(LFS_M_CKFETCHES, -1) : 0)
|
||||||
| ((CKPARITY) ? LFS_IFDEF_CKPARITY(LFS_M_CKPARITY, -1) : 0)
|
| ((CKMETAPARITY)
|
||||||
| ((CKDATACKSUMS)
|
? LFS_IFDEF_CKMETAPARITY(LFS_M_CKMETAPARITY, -1)
|
||||||
? LFS_IFDEF_CKDATACKSUMS(LFS_M_CKDATACKSUMS, -1)
|
: 0)
|
||||||
|
| ((CKDATACKSUMREADS)
|
||||||
|
? LFS_IFDEF_CKDATACKSUMREADS(LFS_M_CKDATACKSUMREADS, -1)
|
||||||
: 0),
|
: 0),
|
||||||
CFG) => 0;
|
CFG) => 0;
|
||||||
|
|
||||||
@@ -3312,11 +3323,13 @@ code = '''
|
|||||||
| ((CKFETCHES)
|
| ((CKFETCHES)
|
||||||
? LFS_IFDEF_CKFETCHES(LFS_M_CKFETCHES, -1)
|
? LFS_IFDEF_CKFETCHES(LFS_M_CKFETCHES, -1)
|
||||||
: 0)
|
: 0)
|
||||||
| ((CKPARITY)
|
| ((CKMETAPARITY)
|
||||||
? LFS_IFDEF_CKPARITY(LFS_M_CKPARITY, -1)
|
? LFS_IFDEF_CKMETAPARITY(LFS_M_CKMETAPARITY, -1)
|
||||||
: 0)
|
: 0)
|
||||||
| ((CKDATACKSUMS)
|
| ((CKDATACKSUMREADS)
|
||||||
? LFS_IFDEF_CKDATACKSUMS(LFS_M_CKDATACKSUMS, -1)
|
? LFS_IFDEF_CKDATACKSUMREADS(
|
||||||
|
LFS_M_CKDATACKSUMREADS,
|
||||||
|
-1)
|
||||||
: 0),
|
: 0),
|
||||||
CFG) => 0;
|
CFG) => 0;
|
||||||
}
|
}
|
||||||
@@ -3416,8 +3429,8 @@ defines.CKDATA = 'METHOD == 1'
|
|||||||
defines.MTREEONLY = false
|
defines.MTREEONLY = false
|
||||||
defines.CKPROGS = 'METHOD == 0'
|
defines.CKPROGS = 'METHOD == 0'
|
||||||
defines.CKFETCHES = 'METHOD == 2'
|
defines.CKFETCHES = 'METHOD == 2'
|
||||||
defines.CKPARITY = false
|
defines.CKMETAPARITY = false
|
||||||
defines.CKDATACKSUMS = 'METHOD == 3'
|
defines.CKDATACKSUMREADS = 'METHOD == 3'
|
||||||
defines.SIZE = [
|
defines.SIZE = [
|
||||||
'FILE_CACHE_SIZE/2',
|
'FILE_CACHE_SIZE/2',
|
||||||
'2*FILE_CACHE_SIZE',
|
'2*FILE_CACHE_SIZE',
|
||||||
@@ -3438,8 +3451,8 @@ fuzz = 'SEED'
|
|||||||
if = [
|
if = [
|
||||||
'LFS_IFDEF_CKPROGS(true, !CKPROGS)',
|
'LFS_IFDEF_CKPROGS(true, !CKPROGS)',
|
||||||
'LFS_IFDEF_CKFETCHES(true, !CKFETCHES)',
|
'LFS_IFDEF_CKFETCHES(true, !CKFETCHES)',
|
||||||
'LFS_IFDEF_CKPARITY(true, !CKPARITY)',
|
'LFS_IFDEF_CKMETAPARITY(true, !CKMETAPARITY)',
|
||||||
'LFS_IFDEF_CKDATACKSUMS(true, !CKDATACKSUMS)',
|
'LFS_IFDEF_CKDATACKSUMREADS(true, !CKDATACKSUMREADS)',
|
||||||
'CHUNK <= SIZE',
|
'CHUNK <= SIZE',
|
||||||
# this just saves testing time
|
# this just saves testing time
|
||||||
'SIZE <= 4*1024*FRAGMENT_SIZE',
|
'SIZE <= 4*1024*FRAGMENT_SIZE',
|
||||||
@@ -3463,18 +3476,22 @@ code = '''
|
|||||||
LFS_F_RDWR
|
LFS_F_RDWR
|
||||||
| ((CKPROGS) ? LFS_IFDEF_CKPROGS(LFS_F_CKPROGS, -1) : 0)
|
| ((CKPROGS) ? LFS_IFDEF_CKPROGS(LFS_F_CKPROGS, -1) : 0)
|
||||||
| ((CKFETCHES) ? LFS_IFDEF_CKFETCHES(LFS_F_CKFETCHES, -1) : 0)
|
| ((CKFETCHES) ? LFS_IFDEF_CKFETCHES(LFS_F_CKFETCHES, -1) : 0)
|
||||||
| ((CKPARITY) ? LFS_IFDEF_CKPARITY(LFS_F_CKPARITY, -1) : 0)
|
| ((CKMETAPARITY)
|
||||||
| ((CKDATACKSUMS)
|
? LFS_IFDEF_CKMETAPARITY(LFS_F_CKMETAPARITY, -1)
|
||||||
? LFS_IFDEF_CKDATACKSUMS(LFS_F_CKDATACKSUMS, -1)
|
: 0)
|
||||||
|
| ((CKDATACKSUMREADS)
|
||||||
|
? LFS_IFDEF_CKDATACKSUMREADS(LFS_F_CKDATACKSUMREADS, -1)
|
||||||
: 0),
|
: 0),
|
||||||
CFG) => 0;
|
CFG) => 0;
|
||||||
lfsr_mount(&lfs,
|
lfsr_mount(&lfs,
|
||||||
LFS_M_RDWR
|
LFS_M_RDWR
|
||||||
| ((CKPROGS) ? LFS_IFDEF_CKPROGS(LFS_M_CKPROGS, -1) : 0)
|
| ((CKPROGS) ? LFS_IFDEF_CKPROGS(LFS_M_CKPROGS, -1) : 0)
|
||||||
| ((CKFETCHES) ? LFS_IFDEF_CKFETCHES(LFS_M_CKFETCHES, -1) : 0)
|
| ((CKFETCHES) ? LFS_IFDEF_CKFETCHES(LFS_M_CKFETCHES, -1) : 0)
|
||||||
| ((CKPARITY) ? LFS_IFDEF_CKPARITY(LFS_M_CKPARITY, -1) : 0)
|
| ((CKMETAPARITY)
|
||||||
| ((CKDATACKSUMS)
|
? LFS_IFDEF_CKMETAPARITY(LFS_M_CKMETAPARITY, -1)
|
||||||
? LFS_IFDEF_CKDATACKSUMS(LFS_M_CKDATACKSUMS, -1)
|
: 0)
|
||||||
|
| ((CKDATACKSUMREADS)
|
||||||
|
? LFS_IFDEF_CKDATACKSUMREADS(LFS_M_CKDATACKSUMREADS, -1)
|
||||||
: 0),
|
: 0),
|
||||||
CFG) => 0;
|
CFG) => 0;
|
||||||
|
|
||||||
@@ -3627,11 +3644,13 @@ code = '''
|
|||||||
| ((CKFETCHES)
|
| ((CKFETCHES)
|
||||||
? LFS_IFDEF_CKFETCHES(LFS_M_CKFETCHES, -1)
|
? LFS_IFDEF_CKFETCHES(LFS_M_CKFETCHES, -1)
|
||||||
: 0)
|
: 0)
|
||||||
| ((CKPARITY)
|
| ((CKMETAPARITY)
|
||||||
? LFS_IFDEF_CKPARITY(LFS_M_CKPARITY, -1)
|
? LFS_IFDEF_CKMETAPARITY(LFS_M_CKMETAPARITY, -1)
|
||||||
: 0)
|
: 0)
|
||||||
| ((CKDATACKSUMS)
|
| ((CKDATACKSUMREADS)
|
||||||
? LFS_IFDEF_CKDATACKSUMS(LFS_M_CKDATACKSUMS, -1)
|
? LFS_IFDEF_CKDATACKSUMREADS(
|
||||||
|
LFS_M_CKDATACKSUMREADS,
|
||||||
|
-1)
|
||||||
: 0),
|
: 0),
|
||||||
CFG) => 0;
|
CFG) => 0;
|
||||||
}
|
}
|
||||||
@@ -3711,8 +3730,8 @@ defines.CKDATA = 'METHOD == 1'
|
|||||||
defines.MTREEONLY = false
|
defines.MTREEONLY = false
|
||||||
defines.CKPROGS = 'METHOD == 0'
|
defines.CKPROGS = 'METHOD == 0'
|
||||||
defines.CKFETCHES = 'METHOD == 2'
|
defines.CKFETCHES = 'METHOD == 2'
|
||||||
defines.CKPARITY = false
|
defines.CKMETAPARITY = false
|
||||||
defines.CKDATACKSUMS = 'METHOD == 3'
|
defines.CKDATACKSUMREADS = 'METHOD == 3'
|
||||||
defines.N = [1, 2, 4, 8, 16, 32, 64]
|
defines.N = [1, 2, 4, 8, 16, 32, 64]
|
||||||
defines.SIZE = [
|
defines.SIZE = [
|
||||||
'0',
|
'0',
|
||||||
@@ -3728,8 +3747,8 @@ fuzz = 'SEED'
|
|||||||
if = [
|
if = [
|
||||||
'LFS_IFDEF_CKPROGS(true, !CKPROGS)',
|
'LFS_IFDEF_CKPROGS(true, !CKPROGS)',
|
||||||
'LFS_IFDEF_CKFETCHES(true, !CKFETCHES)',
|
'LFS_IFDEF_CKFETCHES(true, !CKFETCHES)',
|
||||||
'LFS_IFDEF_CKPARITY(true, !CKPARITY)',
|
'LFS_IFDEF_CKMETAPARITY(true, !CKMETAPARITY)',
|
||||||
'LFS_IFDEF_CKDATACKSUMS(true, !CKDATACKSUMS)',
|
'LFS_IFDEF_CKDATACKSUMREADS(true, !CKDATACKSUMREADS)',
|
||||||
'(SIZE*N)/BLOCK_SIZE <= 16',
|
'(SIZE*N)/BLOCK_SIZE <= 16',
|
||||||
]
|
]
|
||||||
code = '''
|
code = '''
|
||||||
@@ -3751,18 +3770,22 @@ code = '''
|
|||||||
LFS_F_RDWR
|
LFS_F_RDWR
|
||||||
| ((CKPROGS) ? LFS_IFDEF_CKPROGS(LFS_F_CKPROGS, -1) : 0)
|
| ((CKPROGS) ? LFS_IFDEF_CKPROGS(LFS_F_CKPROGS, -1) : 0)
|
||||||
| ((CKFETCHES) ? LFS_IFDEF_CKFETCHES(LFS_F_CKFETCHES, -1) : 0)
|
| ((CKFETCHES) ? LFS_IFDEF_CKFETCHES(LFS_F_CKFETCHES, -1) : 0)
|
||||||
| ((CKPARITY) ? LFS_IFDEF_CKPARITY(LFS_F_CKPARITY, -1) : 0)
|
| ((CKMETAPARITY)
|
||||||
| ((CKDATACKSUMS)
|
? LFS_IFDEF_CKMETAPARITY(LFS_F_CKMETAPARITY, -1)
|
||||||
? LFS_IFDEF_CKDATACKSUMS(LFS_F_CKDATACKSUMS, -1)
|
: 0)
|
||||||
|
| ((CKDATACKSUMREADS)
|
||||||
|
? LFS_IFDEF_CKDATACKSUMREADS(LFS_F_CKDATACKSUMREADS, -1)
|
||||||
: 0),
|
: 0),
|
||||||
CFG) => 0;
|
CFG) => 0;
|
||||||
lfsr_mount(&lfs,
|
lfsr_mount(&lfs,
|
||||||
LFS_M_RDWR
|
LFS_M_RDWR
|
||||||
| ((CKPROGS) ? LFS_IFDEF_CKPROGS(LFS_M_CKPROGS, -1) : 0)
|
| ((CKPROGS) ? LFS_IFDEF_CKPROGS(LFS_M_CKPROGS, -1) : 0)
|
||||||
| ((CKFETCHES) ? LFS_IFDEF_CKFETCHES(LFS_M_CKFETCHES, -1) : 0)
|
| ((CKFETCHES) ? LFS_IFDEF_CKFETCHES(LFS_M_CKFETCHES, -1) : 0)
|
||||||
| ((CKPARITY) ? LFS_IFDEF_CKPARITY(LFS_M_CKPARITY, -1) : 0)
|
| ((CKMETAPARITY)
|
||||||
| ((CKDATACKSUMS)
|
? LFS_IFDEF_CKMETAPARITY(LFS_M_CKMETAPARITY, -1)
|
||||||
? LFS_IFDEF_CKDATACKSUMS(LFS_M_CKDATACKSUMS, -1)
|
: 0)
|
||||||
|
| ((CKDATACKSUMREADS)
|
||||||
|
? LFS_IFDEF_CKDATACKSUMREADS(LFS_M_CKDATACKSUMREADS, -1)
|
||||||
: 0),
|
: 0),
|
||||||
CFG) => 0;
|
CFG) => 0;
|
||||||
|
|
||||||
@@ -4306,8 +4329,8 @@ defines.CKDATA = 'METHOD == 1'
|
|||||||
defines.MTREEONLY = false
|
defines.MTREEONLY = false
|
||||||
defines.CKPROGS = 'METHOD == 0'
|
defines.CKPROGS = 'METHOD == 0'
|
||||||
defines.CKFETCHES = 'METHOD == 2'
|
defines.CKFETCHES = 'METHOD == 2'
|
||||||
defines.CKPARITY = false
|
defines.CKMETAPARITY = false
|
||||||
defines.CKDATACKSUMS = 'METHOD == 3'
|
defines.CKDATACKSUMREADS = 'METHOD == 3'
|
||||||
defines.N = [1, 2, 4, 8, 16, 32, 64]
|
defines.N = [1, 2, 4, 8, 16, 32, 64]
|
||||||
defines.SIZE = [
|
defines.SIZE = [
|
||||||
'0',
|
'0',
|
||||||
@@ -4323,8 +4346,8 @@ fuzz = 'SEED'
|
|||||||
if = [
|
if = [
|
||||||
'LFS_IFDEF_CKPROGS(true, !CKPROGS)',
|
'LFS_IFDEF_CKPROGS(true, !CKPROGS)',
|
||||||
'LFS_IFDEF_CKFETCHES(true, !CKFETCHES)',
|
'LFS_IFDEF_CKFETCHES(true, !CKFETCHES)',
|
||||||
'LFS_IFDEF_CKPARITY(true, !CKPARITY)',
|
'LFS_IFDEF_CKMETAPARITY(true, !CKMETAPARITY)',
|
||||||
'LFS_IFDEF_CKDATACKSUMS(true, !CKDATACKSUMS)',
|
'LFS_IFDEF_CKDATACKSUMREADS(true, !CKDATACKSUMREADS)',
|
||||||
'(SIZE*N)/BLOCK_SIZE <= 16',
|
'(SIZE*N)/BLOCK_SIZE <= 16',
|
||||||
]
|
]
|
||||||
code = '''
|
code = '''
|
||||||
@@ -4346,18 +4369,22 @@ code = '''
|
|||||||
LFS_F_RDWR
|
LFS_F_RDWR
|
||||||
| ((CKPROGS) ? LFS_IFDEF_CKPROGS(LFS_F_CKPROGS, -1) : 0)
|
| ((CKPROGS) ? LFS_IFDEF_CKPROGS(LFS_F_CKPROGS, -1) : 0)
|
||||||
| ((CKFETCHES) ? LFS_IFDEF_CKFETCHES(LFS_F_CKFETCHES, -1) : 0)
|
| ((CKFETCHES) ? LFS_IFDEF_CKFETCHES(LFS_F_CKFETCHES, -1) : 0)
|
||||||
| ((CKPARITY) ? LFS_IFDEF_CKPARITY(LFS_F_CKPARITY, -1) : 0)
|
| ((CKMETAPARITY)
|
||||||
| ((CKDATACKSUMS)
|
? LFS_IFDEF_CKMETAPARITY(LFS_F_CKMETAPARITY, -1)
|
||||||
? LFS_IFDEF_CKDATACKSUMS(LFS_F_CKDATACKSUMS, -1)
|
: 0)
|
||||||
|
| ((CKDATACKSUMREADS)
|
||||||
|
? LFS_IFDEF_CKDATACKSUMREADS(LFS_F_CKDATACKSUMREADS, -1)
|
||||||
: 0),
|
: 0),
|
||||||
CFG) => 0;
|
CFG) => 0;
|
||||||
lfsr_mount(&lfs,
|
lfsr_mount(&lfs,
|
||||||
LFS_M_RDWR
|
LFS_M_RDWR
|
||||||
| ((CKPROGS) ? LFS_IFDEF_CKPROGS(LFS_M_CKPROGS, -1) : 0)
|
| ((CKPROGS) ? LFS_IFDEF_CKPROGS(LFS_M_CKPROGS, -1) : 0)
|
||||||
| ((CKFETCHES) ? LFS_IFDEF_CKFETCHES(LFS_M_CKFETCHES, -1) : 0)
|
| ((CKFETCHES) ? LFS_IFDEF_CKFETCHES(LFS_M_CKFETCHES, -1) : 0)
|
||||||
| ((CKPARITY) ? LFS_IFDEF_CKPARITY(LFS_M_CKPARITY, -1) : 0)
|
| ((CKMETAPARITY)
|
||||||
| ((CKDATACKSUMS)
|
? LFS_IFDEF_CKMETAPARITY(LFS_M_CKMETAPARITY, -1)
|
||||||
? LFS_IFDEF_CKDATACKSUMS(LFS_M_CKDATACKSUMS, -1)
|
: 0)
|
||||||
|
| ((CKDATACKSUMREADS)
|
||||||
|
? LFS_IFDEF_CKDATACKSUMREADS(LFS_M_CKDATACKSUMREADS, -1)
|
||||||
: 0),
|
: 0),
|
||||||
CFG) => 0;
|
CFG) => 0;
|
||||||
|
|
||||||
|
|||||||
+23
-17
@@ -21,8 +21,8 @@ defines.REVDBG = [false, true]
|
|||||||
defines.REVNOISE = [false, true]
|
defines.REVNOISE = [false, true]
|
||||||
defines.CKPROGS = [false, true]
|
defines.CKPROGS = [false, true]
|
||||||
defines.CKFETCHES = [false, true]
|
defines.CKFETCHES = [false, true]
|
||||||
defines.CKPARITY = [false, true]
|
defines.CKMETAPARITY = [false, true]
|
||||||
defines.CKDATACKSUMS = [false, true]
|
defines.CKDATACKSUMREADS = [false, true]
|
||||||
defines.MKCONSISTENT = [false, true]
|
defines.MKCONSISTENT = [false, true]
|
||||||
defines.LOOKAHEAD = [false, true]
|
defines.LOOKAHEAD = [false, true]
|
||||||
defines.COMPACT = [false, true]
|
defines.COMPACT = [false, true]
|
||||||
@@ -34,8 +34,8 @@ if = [
|
|||||||
'!REVDBG || !REVNOISE',
|
'!REVDBG || !REVNOISE',
|
||||||
'LFS_IFDEF_CKPROGS(true, !CKPROGS)',
|
'LFS_IFDEF_CKPROGS(true, !CKPROGS)',
|
||||||
'LFS_IFDEF_CKFETCHES(true, !CKFETCHES)',
|
'LFS_IFDEF_CKFETCHES(true, !CKFETCHES)',
|
||||||
'LFS_IFDEF_CKPARITY(true, !CKPARITY)',
|
'LFS_IFDEF_CKMETAPARITY(true, !CKMETAPARITY)',
|
||||||
'LFS_IFDEF_CKDATACKSUMS(true, !CKDATACKSUMS)',
|
'LFS_IFDEF_CKDATACKSUMREADS(true, !CKDATACKSUMREADS)',
|
||||||
'!RDONLY || !MKCONSISTENT',
|
'!RDONLY || !MKCONSISTENT',
|
||||||
'!RDONLY || !LOOKAHEAD',
|
'!RDONLY || !LOOKAHEAD',
|
||||||
'!RDONLY || !COMPACT',
|
'!RDONLY || !COMPACT',
|
||||||
@@ -51,9 +51,11 @@ code = '''
|
|||||||
| ((REVNOISE) ? LFS_IFDEF_REVNOISE(LFS_M_REVNOISE, -1) : 0)
|
| ((REVNOISE) ? LFS_IFDEF_REVNOISE(LFS_M_REVNOISE, -1) : 0)
|
||||||
| ((CKPROGS) ? LFS_IFDEF_CKPROGS(LFS_M_CKPROGS, -1) : 0)
|
| ((CKPROGS) ? LFS_IFDEF_CKPROGS(LFS_M_CKPROGS, -1) : 0)
|
||||||
| ((CKFETCHES) ? LFS_IFDEF_CKFETCHES(LFS_M_CKFETCHES, -1) : 0)
|
| ((CKFETCHES) ? LFS_IFDEF_CKFETCHES(LFS_M_CKFETCHES, -1) : 0)
|
||||||
| ((CKPARITY) ? LFS_IFDEF_CKPARITY(LFS_M_CKPARITY, -1) : 0)
|
| ((CKMETAPARITY)
|
||||||
| ((CKDATACKSUMS)
|
? LFS_IFDEF_CKMETAPARITY(LFS_M_CKMETAPARITY, -1)
|
||||||
? LFS_IFDEF_CKDATACKSUMS(LFS_M_CKDATACKSUMS, -1)
|
: 0)
|
||||||
|
| ((CKDATACKSUMREADS)
|
||||||
|
? LFS_IFDEF_CKDATACKSUMREADS(LFS_M_CKDATACKSUMREADS, -1)
|
||||||
: 0)
|
: 0)
|
||||||
| ((MKCONSISTENT) ? LFS_M_MKCONSISTENT : 0)
|
| ((MKCONSISTENT) ? LFS_M_MKCONSISTENT : 0)
|
||||||
| ((LOOKAHEAD) ? LFS_M_LOOKAHEAD : 0)
|
| ((LOOKAHEAD) ? LFS_M_LOOKAHEAD : 0)
|
||||||
@@ -73,9 +75,11 @@ code = '''
|
|||||||
| ((REVNOISE) ? LFS_IFDEF_REVNOISE(LFS_M_REVNOISE, -1) : 0)
|
| ((REVNOISE) ? LFS_IFDEF_REVNOISE(LFS_M_REVNOISE, -1) : 0)
|
||||||
| ((CKPROGS) ? LFS_IFDEF_CKPROGS(LFS_I_CKPROGS, -1) : 0)
|
| ((CKPROGS) ? LFS_IFDEF_CKPROGS(LFS_I_CKPROGS, -1) : 0)
|
||||||
| ((CKFETCHES) ? LFS_IFDEF_CKFETCHES(LFS_I_CKFETCHES, -1) : 0)
|
| ((CKFETCHES) ? LFS_IFDEF_CKFETCHES(LFS_I_CKFETCHES, -1) : 0)
|
||||||
| ((CKPARITY) ? LFS_IFDEF_CKPARITY(LFS_I_CKPARITY, -1) : 0)
|
| ((CKMETAPARITY)
|
||||||
| ((CKDATACKSUMS)
|
? LFS_IFDEF_CKMETAPARITY(LFS_I_CKMETAPARITY, -1)
|
||||||
? LFS_IFDEF_CKDATACKSUMS(LFS_I_CKDATACKSUMS, -1)
|
: 0)
|
||||||
|
| ((CKDATACKSUMREADS)
|
||||||
|
? LFS_IFDEF_CKDATACKSUMREADS(LFS_I_CKDATACKSUMREADS, -1)
|
||||||
: 0)
|
: 0)
|
||||||
| ((!MKCONSISTENT) ? LFS_I_MKCONSISTENT : 0)
|
| ((!MKCONSISTENT) ? LFS_I_MKCONSISTENT : 0)
|
||||||
| ((!LOOKAHEAD) ? LFS_I_LOOKAHEAD : 0)
|
| ((!LOOKAHEAD) ? LFS_I_LOOKAHEAD : 0)
|
||||||
@@ -95,8 +99,8 @@ defines.REVDBG = [false, true]
|
|||||||
defines.REVNOISE = [false, true]
|
defines.REVNOISE = [false, true]
|
||||||
defines.CKPROGS = [false, true]
|
defines.CKPROGS = [false, true]
|
||||||
defines.CKFETCHES = [false, true]
|
defines.CKFETCHES = [false, true]
|
||||||
defines.CKPARITY = [false, true]
|
defines.CKMETAPARITY = [false, true]
|
||||||
defines.CKDATACKSUMS = [false, true]
|
defines.CKDATACKSUMREADS = [false, true]
|
||||||
defines.CKMETA = [false, true]
|
defines.CKMETA = [false, true]
|
||||||
defines.CKDATA = [false, true]
|
defines.CKDATA = [false, true]
|
||||||
if = [
|
if = [
|
||||||
@@ -105,8 +109,8 @@ if = [
|
|||||||
'!REVDBG || !REVNOISE',
|
'!REVDBG || !REVNOISE',
|
||||||
'LFS_IFDEF_CKPROGS(true, !CKPROGS)',
|
'LFS_IFDEF_CKPROGS(true, !CKPROGS)',
|
||||||
'LFS_IFDEF_CKFETCHES(true, !CKFETCHES)',
|
'LFS_IFDEF_CKFETCHES(true, !CKFETCHES)',
|
||||||
'LFS_IFDEF_CKPARITY(true, !CKPARITY)',
|
'LFS_IFDEF_CKMETAPARITY(true, !CKMETAPARITY)',
|
||||||
'LFS_IFDEF_CKDATACKSUMS(true, !CKDATACKSUMS)',
|
'LFS_IFDEF_CKDATACKSUMREADS(true, !CKDATACKSUMREADS)',
|
||||||
]
|
]
|
||||||
code = '''
|
code = '''
|
||||||
lfs_t lfs;
|
lfs_t lfs;
|
||||||
@@ -116,9 +120,11 @@ code = '''
|
|||||||
| ((REVNOISE) ? LFS_IFDEF_REVNOISE(LFS_F_REVNOISE, -1) : 0)
|
| ((REVNOISE) ? LFS_IFDEF_REVNOISE(LFS_F_REVNOISE, -1) : 0)
|
||||||
| ((CKPROGS) ? LFS_IFDEF_CKPROGS(LFS_F_CKPROGS, -1) : 0)
|
| ((CKPROGS) ? LFS_IFDEF_CKPROGS(LFS_F_CKPROGS, -1) : 0)
|
||||||
| ((CKFETCHES) ? LFS_IFDEF_CKFETCHES(LFS_F_CKFETCHES, -1) : 0)
|
| ((CKFETCHES) ? LFS_IFDEF_CKFETCHES(LFS_F_CKFETCHES, -1) : 0)
|
||||||
| ((CKPARITY) ? LFS_IFDEF_CKPARITY(LFS_F_CKPARITY, -1) : 0)
|
| ((CKMETAPARITY)
|
||||||
| ((CKDATACKSUMS)
|
? LFS_IFDEF_CKMETAPARITY(LFS_F_CKMETAPARITY, -1)
|
||||||
? LFS_IFDEF_CKDATACKSUMS(LFS_F_CKDATACKSUMS, -1)
|
: 0)
|
||||||
|
| ((CKDATACKSUMREADS)
|
||||||
|
? LFS_IFDEF_CKDATACKSUMREADS(LFS_F_CKDATACKSUMREADS, -1)
|
||||||
: 0)
|
: 0)
|
||||||
| ((CKMETA) ? LFS_F_CKMETA : 0)
|
| ((CKMETA) ? LFS_F_CKMETA : 0)
|
||||||
| ((CKDATA) ? LFS_F_CKDATA : 0),
|
| ((CKDATA) ? LFS_F_CKDATA : 0),
|
||||||
|
|||||||
Reference in New Issue
Block a user