Renamed ckcksums -> ckdatacksums
To clarify this only checks data reads, and to makes space for future theoretical ck-operations: - ckmetaredund - likely - ckdataredund - unlikely, expensive - ckmetacksums - unlikely, expensive - ckdatacksums - implemented This also tweaks the relevant mount/format/info flags a bit: LFS_M_CKPROGS 0x00100000 Check progs by reading back progged data LFS_M_CKFETCHES 0x00200000 Check block checksums before first use LFS_M_CKPARITY 0x00400000 Check metadata tag parity bits LFS_M_CKMETAREDUND+ 0x01000000 Check metadata redund blocks on reads LFS_M_CKDATAREDUND* 0x02000000 Check data redund blocks on reads LFS_M_CKMETACKSUMS* 0x04000000 Check metadata checksums on reads LFS_M_CKDATACKSUMS 0x08000000 Check data checksums on reads +Planned *Hypothetical No code changes.
This commit is contained in:
@@ -704,13 +704,13 @@ static int lfsr_bd_set(lfs_t *lfs, lfs_block_t block, lfs_size_t off,
|
||||
|
||||
/// lfsr_ck_t stuff ///
|
||||
|
||||
#ifdef LFS_CKCKSUMS
|
||||
#ifdef LFS_CKDATACKSUMS
|
||||
#define LFSR_CK_NULL() \
|
||||
((lfsr_ck_t){ \
|
||||
.cksize=0})
|
||||
#endif
|
||||
|
||||
#ifdef LFS_CKCKSUMS
|
||||
#ifdef LFS_CKDATACKSUMS
|
||||
#define LFSR_CK_CKSUM(_cksize, _cksum) \
|
||||
((lfsr_ck_t){ \
|
||||
.cksize=_cksize, \
|
||||
@@ -718,7 +718,7 @@ static int lfsr_bd_set(lfs_t *lfs, lfs_block_t block, lfs_size_t off,
|
||||
#endif
|
||||
|
||||
// ck helpers
|
||||
#ifdef LFS_CKCKSUMS
|
||||
#ifdef LFS_CKDATACKSUMS
|
||||
static inline bool lfsr_ck_iscksum(lfsr_ck_t ck) {
|
||||
return ck.cksize != 0;
|
||||
}
|
||||
@@ -750,11 +750,11 @@ static inline lfs_size_t lfsr_tailp_off(const lfsr_tailp_t *tailp) {
|
||||
// checked read helpers
|
||||
|
||||
// needed in lfsr_bd_ckprefix/cksuffix
|
||||
#ifdef LFS_CKCKSUMS
|
||||
static inline bool lfsr_m_isckcksums(uint32_t flags);
|
||||
#ifdef LFS_CKDATACKSUMS
|
||||
static inline bool lfsr_m_isckdatacksums(uint32_t flags);
|
||||
#endif
|
||||
|
||||
#ifdef LFS_CKCKSUMS
|
||||
#ifdef LFS_CKDATACKSUMS
|
||||
static int lfsr_bd_ckprefix(lfs_t *lfs,
|
||||
lfs_block_t block, lfs_size_t off, lfs_size_t hint,
|
||||
lfsr_ck_t ck,
|
||||
@@ -789,7 +789,7 @@ static int lfsr_bd_ckprefix(lfs_t *lfs,
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef LFS_CKCKSUMS
|
||||
#ifdef LFS_CKDATACKSUMS
|
||||
static int lfsr_bd_cksuffix(lfs_t *lfs,
|
||||
lfs_block_t block, lfs_size_t off, lfs_size_t hint,
|
||||
lfsr_ck_t ck,
|
||||
@@ -810,7 +810,7 @@ static int lfsr_bd_cksuffix(lfs_t *lfs,
|
||||
|
||||
// do checksums match?
|
||||
if (cksum != ck.cksum) {
|
||||
LFS_ERROR("Found ckcksums mismatch "
|
||||
LFS_ERROR("Found ckdatacksums mismatch "
|
||||
"0x%"PRIx32".%"PRIx32" %"PRId32", "
|
||||
"cksum %08"PRIx32" (!= %08"PRIx32")",
|
||||
block, 0, ck.cksize,
|
||||
@@ -825,7 +825,7 @@ static int lfsr_bd_cksuffix(lfs_t *lfs,
|
||||
|
||||
// checked read functions
|
||||
|
||||
#ifdef LFS_CKCKSUMS
|
||||
#ifdef LFS_CKDATACKSUMS
|
||||
// caching read with parity/checksum checks
|
||||
//
|
||||
// the main downside of checking reads is we need to read all data that
|
||||
@@ -874,13 +874,13 @@ static int lfsr_bd_readck_(lfs_t *lfs,
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef LFS_CKCKSUMS
|
||||
#ifdef LFS_CKDATACKSUMS
|
||||
static int lfsr_bd_readck(lfs_t *lfs,
|
||||
lfs_block_t block, lfs_size_t off, lfs_size_t hint,
|
||||
void *buffer, lfs_size_t size,
|
||||
lfsr_ck_t ck) {
|
||||
// check this read?
|
||||
if (lfsr_m_isckcksums(lfs->flags) && lfsr_ck_iscksum(ck)) {
|
||||
if (lfsr_m_isckdatacksums(lfs->flags) && lfsr_ck_iscksum(ck)) {
|
||||
return lfsr_bd_readck_(lfs,
|
||||
block, off, hint,
|
||||
buffer, size,
|
||||
@@ -894,7 +894,7 @@ static int lfsr_bd_readck(lfs_t *lfs,
|
||||
#endif
|
||||
|
||||
// redirect to lfsr_bd_read if not checking reads
|
||||
#ifdef LFS_CKCKSUMS
|
||||
#ifdef LFS_CKDATACKSUMS
|
||||
#define LFSR_BD_READCK(_lfs, _block, _off, _hint, _buffer, _size, _ck) \
|
||||
lfsr_bd_readck(_lfs, _block, _off, _hint, _buffer, _size, _ck)
|
||||
#else
|
||||
@@ -908,7 +908,7 @@ static int lfsr_bd_readck(lfs_t *lfs,
|
||||
//
|
||||
// we'd also need to worry about early termination in lfsr_bd_cmp/cmpck
|
||||
|
||||
#ifdef LFS_CKCKSUMS
|
||||
#ifdef LFS_CKDATACKSUMS
|
||||
static lfs_scmp_t lfsr_bd_cmpck_(lfs_t *lfs,
|
||||
lfs_block_t block, lfs_size_t off, lfs_size_t hint,
|
||||
const void *buffer, lfs_size_t size,
|
||||
@@ -971,13 +971,13 @@ static lfs_scmp_t lfsr_bd_cmpck_(lfs_t *lfs,
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef LFS_CKCKSUMS
|
||||
#ifdef LFS_CKDATACKSUMS
|
||||
static lfs_scmp_t lfsr_bd_cmpck(lfs_t *lfs,
|
||||
lfs_block_t block, lfs_size_t off, lfs_size_t hint,
|
||||
const void *buffer, lfs_size_t size,
|
||||
lfsr_ck_t ck) {
|
||||
// check this read?
|
||||
if (lfsr_m_isckcksums(lfs->flags) && lfsr_ck_iscksum(ck)) {
|
||||
if (lfsr_m_isckdatacksums(lfs->flags) && lfsr_ck_iscksum(ck)) {
|
||||
return lfsr_bd_cmpck_(lfs,
|
||||
block, off, hint,
|
||||
buffer, size,
|
||||
@@ -991,7 +991,7 @@ static lfs_scmp_t lfsr_bd_cmpck(lfs_t *lfs,
|
||||
#endif
|
||||
|
||||
// redirect to lfsr_bd_cmp if not checking reads
|
||||
#ifdef LFS_CKCKSUMS
|
||||
#ifdef LFS_CKDATACKSUMS
|
||||
#define LFSR_BD_CMPCK(_lfs, _block, _off, _hint, _buffer, _size, _ck) \
|
||||
lfsr_bd_cmpck(_lfs, _block, _off, _hint, _buffer, _size, _ck)
|
||||
#else
|
||||
@@ -999,7 +999,7 @@ static lfs_scmp_t lfsr_bd_cmpck(lfs_t *lfs,
|
||||
lfsr_bd_cmp(_lfs, _block, _off, _hint, _buffer, _size)
|
||||
#endif
|
||||
|
||||
#ifdef LFS_CKCKSUMS
|
||||
#ifdef LFS_CKDATACKSUMS
|
||||
static int lfsr_bd_cpyck_(lfs_t *lfs,
|
||||
lfs_block_t dst_block, lfs_size_t dst_off,
|
||||
lfs_block_t src_block, lfs_size_t src_off, lfs_size_t hint,
|
||||
@@ -1073,7 +1073,7 @@ static int lfsr_bd_cpyck_(lfs_t *lfs,
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef LFS_CKCKSUMS
|
||||
#ifdef LFS_CKDATACKSUMS
|
||||
static int lfsr_bd_cpyck(lfs_t *lfs,
|
||||
lfs_block_t dst_block, lfs_size_t dst_off,
|
||||
lfs_block_t src_block, lfs_size_t src_off, lfs_size_t hint,
|
||||
@@ -1081,7 +1081,7 @@ static int lfsr_bd_cpyck(lfs_t *lfs,
|
||||
lfsr_ck_t ck,
|
||||
uint32_t *cksum, bool align) {
|
||||
// check this read?
|
||||
if (lfsr_m_isckcksums(lfs->flags) && lfsr_ck_iscksum(ck)) {
|
||||
if (lfsr_m_isckdatacksums(lfs->flags) && lfsr_ck_iscksum(ck)) {
|
||||
return lfsr_bd_cpyck_(lfs,
|
||||
dst_block, dst_off,
|
||||
src_block, src_off, hint,
|
||||
@@ -1099,7 +1099,7 @@ static int lfsr_bd_cpyck(lfs_t *lfs,
|
||||
#endif
|
||||
|
||||
// redirect to lfsr_bd_cpy if not checking reads
|
||||
#ifdef LFS_CKCKSUMS
|
||||
#ifdef LFS_CKDATACKSUMS
|
||||
#define LFSR_BD_CPYCK(_lfs, \
|
||||
_dst_block, _dst_off, \
|
||||
_src_block, _src_off, _hint, \
|
||||
@@ -1785,7 +1785,7 @@ static lfs_ssize_t lfsr_bd_progtag(lfs_t *lfs,
|
||||
.size=_size, \
|
||||
.u.buffer=(const void*)(_buffer)})
|
||||
|
||||
#ifdef LFS_CKCKSUMS
|
||||
#ifdef LFS_CKDATACKSUMS
|
||||
#define LFSR_DATA_DISK(_block, _off, _size) \
|
||||
((lfsr_data_t){ \
|
||||
.size=LFSR_DATA_ONDISK | (_size), \
|
||||
@@ -1800,7 +1800,7 @@ static lfs_ssize_t lfsr_bd_progtag(lfs_t *lfs,
|
||||
.u.disk.off=_off})
|
||||
#endif
|
||||
|
||||
#ifdef LFS_CKCKSUMS
|
||||
#ifdef LFS_CKDATACKSUMS
|
||||
#define LFSR_DATA_DISKCKSUM(_block, _off, _size, _cksize, _cksum) \
|
||||
((lfsr_data_t){ \
|
||||
.size=LFSR_DATA_ONDISK | (_size), \
|
||||
@@ -2502,7 +2502,7 @@ static int lfsr_data_readecksum(lfs_t *lfs, lfsr_data_t *data,
|
||||
// unnecessarily duplicate, long story short accessing ck info gets
|
||||
// annoyingly messy...
|
||||
static inline lfs_size_t lfsr_bptr_cksize(const lfsr_bptr_t *bptr) {
|
||||
#ifdef LFS_CKCKSUMS
|
||||
#ifdef LFS_CKDATACKSUMS
|
||||
return bptr->data.u.disk.ck.cksize;
|
||||
#else
|
||||
return bptr->cksize;
|
||||
@@ -2510,7 +2510,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) {
|
||||
#ifdef LFS_CKCKSUMS
|
||||
#ifdef LFS_CKDATACKSUMS
|
||||
return bptr->data.u.disk.ck.cksum;
|
||||
#else
|
||||
return bptr->cksum;
|
||||
@@ -2581,7 +2581,7 @@ static int lfsr_data_readbptr(lfs_t *lfs, lfsr_data_t *data,
|
||||
|
||||
// read the cksize, cksum
|
||||
err = lfsr_data_readlleb128(lfs, data,
|
||||
LFS_IFDEF_CKCKSUMS(
|
||||
LFS_IFDEF_CKDATACKSUMS(
|
||||
&bptr->data.u.disk.ck.cksize,
|
||||
&bptr->cksize));
|
||||
if (err) {
|
||||
@@ -2589,7 +2589,7 @@ static int lfsr_data_readbptr(lfs_t *lfs, lfsr_data_t *data,
|
||||
}
|
||||
|
||||
err = lfsr_data_readle32(lfs, data,
|
||||
LFS_IFDEF_CKCKSUMS(
|
||||
LFS_IFDEF_CKDATACKSUMS(
|
||||
&bptr->data.u.disk.ck.cksum,
|
||||
&bptr->cksum));
|
||||
if (err) {
|
||||
@@ -6790,21 +6790,21 @@ static inline bool lfsr_m_isckprogs(uint32_t flags) {
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef LFS_CKFETCHES
|
||||
static inline bool lfsr_m_isckfetches(uint32_t flags) {
|
||||
return flags & LFS_M_CKFETCHES;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef LFS_CKPARITY
|
||||
static inline bool lfsr_m_isckparity(uint32_t flags) {
|
||||
return flags & LFS_M_CKPARITY;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef LFS_CKCKSUMS
|
||||
static inline bool lfsr_m_isckcksums(uint32_t flags) {
|
||||
return flags & LFS_M_CKCKSUMS;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef LFS_CKFETCHES
|
||||
static inline bool lfsr_m_isckfetches(uint32_t flags) {
|
||||
return flags & LFS_M_CKFETCHES;
|
||||
#ifdef LFS_CKDATACKSUMS
|
||||
static inline bool lfsr_m_isckdatacksums(uint32_t flags) {
|
||||
return flags & LFS_M_CKDATACKSUMS;
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -11688,7 +11688,7 @@ static int lfsr_file_carve(lfs_t *lfs, lfsr_file_t *file,
|
||||
LFSR_TAG_GROW | LFSR_TAG_SUB | LFSR_TAG_BLOCK,
|
||||
-(bid+1 - pos),
|
||||
LFSR_DATA_BPTR_(
|
||||
LFS_IFDEF_CKCKSUMS(
|
||||
LFS_IFDEF_CKDATACKSUMS(
|
||||
(&(lfsr_bptr_t){
|
||||
.data=left_slice_}),
|
||||
(&(lfsr_bptr_t){
|
||||
@@ -11745,7 +11745,7 @@ static int lfsr_file_carve(lfs_t *lfs, lfsr_file_t *file,
|
||||
tag_,
|
||||
bid+1 - (pos+weight),
|
||||
LFSR_DATA_BPTR_(
|
||||
LFS_IFDEF_CKCKSUMS(
|
||||
LFS_IFDEF_CKDATACKSUMS(
|
||||
(&(lfsr_bptr_t){
|
||||
.data=right_slice_}),
|
||||
(&(lfsr_bptr_t){
|
||||
@@ -11987,10 +11987,10 @@ static int lfsr_file_flush_(lfs_t *lfs, lfsr_file_t *file,
|
||||
}
|
||||
|
||||
bptr.data = LFSR_DATA_DISKCKSUM(block, 0, 0, 0, 0);
|
||||
LFS_IFDEF_CKCKSUMS(
|
||||
LFS_IFDEF_CKDATACKSUMS(
|
||||
bptr.data.u.disk.ck.cksize,
|
||||
bptr.cksize) = 0;
|
||||
LFS_IFDEF_CKCKSUMS(
|
||||
LFS_IFDEF_CKDATACKSUMS(
|
||||
bptr.data.u.disk.ck.cksum,
|
||||
bptr.cksum) = 0;
|
||||
|
||||
@@ -12023,7 +12023,7 @@ static int lfsr_file_flush_(lfs_t *lfs, lfsr_file_t *file,
|
||||
int err = lfsr_bd_prog(lfs, bptr.data.u.disk.block,
|
||||
lfsr_bptr_cksize(&bptr),
|
||||
&buffer[pos_ - pos], d_,
|
||||
LFS_IFDEF_CKCKSUMS(
|
||||
LFS_IFDEF_CKDATACKSUMS(
|
||||
&bptr.data.u.disk.ck.cksum,
|
||||
&bptr.cksum), true);
|
||||
if (err) {
|
||||
@@ -12036,7 +12036,7 @@ static int lfsr_file_flush_(lfs_t *lfs, lfsr_file_t *file,
|
||||
}
|
||||
|
||||
pos_ += d_;
|
||||
LFS_IFDEF_CKCKSUMS(
|
||||
LFS_IFDEF_CKDATACKSUMS(
|
||||
bptr.data.u.disk.ck.cksize,
|
||||
bptr.cksize) += d_;
|
||||
d -= d_;
|
||||
@@ -12098,7 +12098,7 @@ static int lfsr_file_flush_(lfs_t *lfs, lfsr_file_t *file,
|
||||
lfsr_data_slice(bptr_.data,
|
||||
pos_ - (bid_-(weight_-1)),
|
||||
d_),
|
||||
LFS_IFDEF_CKCKSUMS(
|
||||
LFS_IFDEF_CKDATACKSUMS(
|
||||
&bptr.data.u.disk.ck.cksum,
|
||||
&bptr.cksum), true);
|
||||
if (err) {
|
||||
@@ -12111,7 +12111,7 @@ static int lfsr_file_flush_(lfs_t *lfs, lfsr_file_t *file,
|
||||
}
|
||||
|
||||
pos_ += d_;
|
||||
LFS_IFDEF_CKCKSUMS(
|
||||
LFS_IFDEF_CKDATACKSUMS(
|
||||
bptr.data.u.disk.ck.cksize,
|
||||
bptr.cksize) += d_;
|
||||
d -= d_;
|
||||
@@ -12125,7 +12125,7 @@ static int lfsr_file_flush_(lfs_t *lfs, lfsr_file_t *file,
|
||||
int err = lfsr_bd_set(lfs,
|
||||
bptr.data.u.disk.block, lfsr_bptr_cksize(&bptr),
|
||||
0, d,
|
||||
LFS_IFDEF_CKCKSUMS(
|
||||
LFS_IFDEF_CKDATACKSUMS(
|
||||
&bptr.data.u.disk.ck.cksum,
|
||||
&bptr.cksum), true);
|
||||
if (err) {
|
||||
@@ -12138,7 +12138,7 @@ static int lfsr_file_flush_(lfs_t *lfs, lfsr_file_t *file,
|
||||
}
|
||||
|
||||
pos_ += d;
|
||||
LFS_IFDEF_CKCKSUMS(
|
||||
LFS_IFDEF_CKDATACKSUMS(
|
||||
bptr.data.u.disk.ck.cksize,
|
||||
bptr.cksize) += d;
|
||||
}
|
||||
@@ -12149,13 +12149,13 @@ static int lfsr_file_flush_(lfs_t *lfs, lfsr_file_t *file,
|
||||
// up reading more than is strictly necessary.
|
||||
lfs_ssize_t d = lfsr_bptr_cksize(&bptr) % lfs->cfg->prog_size;
|
||||
lfs->pcache.size -= d;
|
||||
LFS_IFDEF_CKCKSUMS(
|
||||
LFS_IFDEF_CKDATACKSUMS(
|
||||
bptr.data.u.disk.ck.cksize,
|
||||
bptr.cksize) -= d;
|
||||
|
||||
// finalize our write
|
||||
int err = lfsr_bd_flush(lfs,
|
||||
LFS_IFDEF_CKCKSUMS(
|
||||
LFS_IFDEF_CKDATACKSUMS(
|
||||
&bptr.data.u.disk.ck.cksum,
|
||||
&bptr.cksum), true);
|
||||
if (err) {
|
||||
@@ -13208,7 +13208,7 @@ static int lfs_init(lfs_t *lfs, uint32_t flags,
|
||||
| LFS_IFDEF_CKPROGS(LFS_M_CKPROGS, 0)
|
||||
| LFS_IFDEF_CKFETCHES(LFS_M_CKFETCHES, 0)
|
||||
| LFS_IFDEF_CKPARITY(LFS_M_CKPARITY, 0)
|
||||
| LFS_IFDEF_CKCKSUMS(LFS_M_CKCKSUMS, 0))) == 0);
|
||||
| LFS_IFDEF_CKDATACKSUMS(LFS_M_CKDATACKSUMS, 0))) == 0);
|
||||
|
||||
// TODO this all needs to be cleaned up
|
||||
lfs->cfg = cfg;
|
||||
@@ -13977,7 +13977,7 @@ int lfsr_mount(lfs_t *lfs, uint32_t flags,
|
||||
| LFS_IFDEF_CKPROGS(LFS_M_CKPROGS, 0)
|
||||
| LFS_IFDEF_CKFETCHES(LFS_M_CKFETCHES, 0)
|
||||
| LFS_IFDEF_CKPARITY(LFS_M_CKPARITY, 0)
|
||||
| LFS_IFDEF_CKCKSUMS(LFS_M_CKCKSUMS, 0)
|
||||
| LFS_IFDEF_CKDATACKSUMS(LFS_M_CKDATACKSUMS, 0)
|
||||
| LFS_M_MTREEONLY
|
||||
| LFS_M_MKCONSISTENT
|
||||
| LFS_M_LOOKAHEAD
|
||||
@@ -14001,7 +14001,7 @@ int lfsr_mount(lfs_t *lfs, uint32_t flags,
|
||||
| LFS_IFDEF_CKPROGS(LFS_M_CKPROGS, 0)
|
||||
| LFS_IFDEF_CKFETCHES(LFS_M_CKFETCHES, 0)
|
||||
| LFS_IFDEF_CKPARITY(LFS_M_CKPARITY, 0)
|
||||
| LFS_IFDEF_CKCKSUMS(LFS_M_CKCKSUMS, 0)),
|
||||
| LFS_IFDEF_CKDATACKSUMS(LFS_M_CKDATACKSUMS, 0)),
|
||||
cfg);
|
||||
if (err) {
|
||||
return err;
|
||||
@@ -14143,7 +14143,7 @@ int lfsr_format(lfs_t *lfs, uint32_t flags,
|
||||
| LFS_IFDEF_CKPROGS(LFS_F_CKPROGS, 0)
|
||||
| LFS_IFDEF_CKFETCHES(LFS_F_CKFETCHES, 0)
|
||||
| LFS_IFDEF_CKPARITY(LFS_F_CKPARITY, 0)
|
||||
| LFS_IFDEF_CKCKSUMS(LFS_F_CKCKSUMS, 0)
|
||||
| LFS_IFDEF_CKDATACKSUMS(LFS_F_CKDATACKSUMS, 0)
|
||||
| LFS_F_MTREEONLY
|
||||
| LFS_F_COMPACT
|
||||
| LFS_F_CKMETA
|
||||
@@ -14157,7 +14157,7 @@ int lfsr_format(lfs_t *lfs, uint32_t flags,
|
||||
| LFS_IFDEF_CKPROGS(LFS_F_CKPROGS, 0)
|
||||
| LFS_IFDEF_CKFETCHES(LFS_F_CKFETCHES, 0)
|
||||
| LFS_IFDEF_CKPARITY(LFS_F_CKPARITY, 0)
|
||||
| LFS_IFDEF_CKCKSUMS(LFS_F_CKCKSUMS, 0)),
|
||||
| LFS_IFDEF_CKDATACKSUMS(LFS_F_CKDATACKSUMS, 0)),
|
||||
cfg);
|
||||
if (err) {
|
||||
return err;
|
||||
@@ -14219,7 +14219,7 @@ int lfsr_fs_stat(lfs_t *lfs, struct lfs_fsinfo *fsinfo) {
|
||||
| LFS_IFDEF_CKPROGS(LFS_I_CKPROGS, 0)
|
||||
| LFS_IFDEF_CKFETCHES(LFS_I_CKFETCHES, 0)
|
||||
| LFS_IFDEF_CKPARITY(LFS_I_CKPARITY, 0)
|
||||
| LFS_IFDEF_CKCKSUMS(LFS_I_CKCKSUMS, 0)
|
||||
| LFS_IFDEF_CKDATACKSUMS(LFS_I_CKDATACKSUMS, 0)
|
||||
| LFS_I_UNCOMPACTED);
|
||||
// some flags we calculate on demand
|
||||
fsinfo->flags |= (lfsr_fs_isinconsistent(lfs)) ? LFS_I_INCONSISTENT : 0;
|
||||
|
||||
Reference in New Issue
Block a user