preerase: Adopted PREERASE in tests, fixes, relaxed gbmap zeroing
Still needs testing with LFS3_GC=1, and tests that intentionally test
preerasing, but this should at least fix most fsinfo.flag related issues.
Despite no intentional preerase testing, this already found a number of
issues. Most importantly: our ckpoint-agnostic gbmap zeroing was never
going to work with preerasing!
Main fixes:
- Adopted conservative zeroing of gbmap during rebuilds
This was the biggest change. Our previous lfs3_gbmap_zero impl was
never going to work with preerasing because it unconditionally
cleared BMERASED ranges.
Not entirely wrong, but a big waste of any preerase work.
It also causes the whole system to lock up when LFS3_GC_LOOKAHEAD and
LFS3_GC_PREERASE fight to make progress. With LFS3_GC_LOOKAHEAD
clearing BMERASED ranges, and LFS3_GC_PREERASE clearing the lookahead
flag, nothing gets done!
---
The fix was to rewrite lfs3_gbmap_zero[unknown] to only zero BMERASED
(and BMINUSE, though this isn't strictly necessary) ranges in the
unknown window. This keeps any known-preerased blocks around and
avoids throwing that information away.
This is also slightly different from BMBAD ranges, which we want to
keep around forever, even if in the unknown window.
Whether or not was should limit zeroing BMINUSE ranges is an
interesting question. If we already need this logic, I think extending
it to BMINUSE is a good idea because of how it limits gbmap commits
during rebuilds:
- Unfortunately, gbmap rebuilds require quite a few commits to both
(1) zero gbmap state, and (2) set all the in-use blocks to BMINUSE.
This is especially concerning when relying on aggressive gc, such as
gc_lookgbmap=-1, which may trigger rebuilds when only a couple
blocks are allocated.
Limiting zeroing limits gbmap commits in two ways:
1. We only need to update ranges in the unknown window, which
shrinks with more aggressive gbmap rebuilds.
2. By not clearing BMINUSE ranges in the known window, populating
those blocks during the lookgbmap scan should be a noop.
Together, this hopefully makes aggressive gbmap rebuilds relatively
cheap, at least in terms of progs/erases.
- It's slightly simpler if BMINUSE and BMERASED are handled the same.
- Actually increment the preeraser known window in lfs3_alloc_inc.
Otherwise our estimated preeraser.count only ever increases! There was
some trickiness to make sure preeraser.count is only ever decremented
when allocating erased blocks, but fortunately lfs3->gbmap.ecksum's
existence can tell us that information.
- Reset preeraser state during gbmap rebuilds.
Also necessary to avoid unbounded preeraser.count. The simplest
solution is to zero the preeraser, which forces it to rescan the gbmap
for BMERASED ranges. The preeraser strictly avoids redundant erases.
This does require extra gbmap lookups during LFS3_GC_PREERASE, but
that's not the end of the world.
- Avoid erasing corrupted preerased blocks in case there's other
preerased blocks available in our gbmap.
This happens when the ecksum check fails, implying a prog was
attempted, but power was lost.
Before this change (the continue in lfs3_alloc_:11244), we were
erasing corrupt ecksums, which is not _wrong_, but sort of defeats the
purpose of prerasing. Skipping the block and trying another:
1. Is better in terms of wear-leveling (try not to double erase!)
2. Minimizes latency if we have other preerased blocks we can use
- Made lfs3_fs_gc_ preerasing actually conditional on the
LFS3_GC_PREERASE flag.
Before, lfs3_fs_gc_ was unconditionally preerasing, which is wrong!
---
Currently passing:
LFS3_YES_GBMAP=1 \
LFS3_YES_REVPERTURB=1 \
LFS3_PREERASE=1 \
make test-runner -j \
& ./scripts/test.py -j -b
Other test fixes:
- Mostly just adding the necessary LFS3_I_PREERASE flags for all
lfs3_fs_stat calls.
- LFS3_I_PREERASE and LFS3_I_LOOKAHEAD can interact in funny ways. Just
needed testing.
- lfs3_trv_t doesn't actually do anything with LFS3_T_PREERASE, so we
shouldn't try to test it.
- Adopted lfs3_fs_ck instead of explicit traversals where possible.
- test_badblocks_*_btree_many was still running with LFS3_YES_GBMAP, but
it shouldn't be. The gbmap state is undefined during internal btree
tests.
Code changes:
code stack ctx
before: 35260 2136 660
after: 35260 (+0.0%) 2136 (+0.0%) 660 (+0.0%)
code stack ctx
gbmap before: 38492 2144 776
gbmap after: 38560 (+0.2%) 2144 (+0.0%) 776 (+0.0%)
code stack ctx
preerase before: 39036 2168 796
preerase after: 39168 (+0.3%) 2168 (+0.0%) 796 (+0.0%)
This commit is contained in:
@@ -10185,7 +10185,8 @@ static inline void lfs3_alloc_ckpoint_(lfs3_t *lfs3);
|
||||
static inline bool lfs3_alloc_canlookahead(const lfs3_t *lfs3);
|
||||
static inline bool lfs3_alloc_canlookgbmap(const lfs3_t *lfs3);
|
||||
static void lfs3_alloc_adopt(lfs3_t *lfs3, lfs3_block_t known);
|
||||
static int lfs3_gbmap_zero(lfs3_t *lfs3, lfs3_btree_t *gbmap);
|
||||
static int lfs3_gbmap_zerounknown(lfs3_t *lfs3, lfs3_btree_t *gbmap,
|
||||
lfs3_block_t window, lfs3_block_t size);
|
||||
static int lfs3_gbmap_setbptr(lfs3_t *lfs3, lfs3_btree_t *gbmap,
|
||||
lfs3_tag_t tag, const lfs3_bptr_t *bptr,
|
||||
lfs3_tag_t tag_);
|
||||
@@ -10236,8 +10237,8 @@ static lfs3_stag_t lfs3_mtree_gc(lfs3_t *lfs3, lfs3_mgc_t *mgc,
|
||||
&& !lfs3_alloc_canlookahead(lfs3),
|
||||
false)) {
|
||||
#ifdef LFS3_GBMAP
|
||||
// lfs3_gbmap_zero may allocate, so checkpoint the
|
||||
// lookahead buffer
|
||||
// lfs3_gbmap_zerounknown may allocate, so checkpoint
|
||||
// the lookahead buffer
|
||||
lfs3_alloc_ckpoint_(lfs3);
|
||||
|
||||
// create a copy of the gbmap
|
||||
@@ -10246,9 +10247,12 @@ static lfs3_stag_t lfs3_mtree_gc(lfs3_t *lfs3, lfs3_mgc_t *mgc,
|
||||
// mark any in-use blocks as free
|
||||
//
|
||||
// we do this instead of creating a new gbmap to
|
||||
// (1) preserve any erased/bad info and (2) try to best
|
||||
// use any available erased-state
|
||||
int err = lfs3_gbmap_zero(lfs3, &mgc->gbmap_);
|
||||
// (1) preserve any known erased/bad info and (2) try to
|
||||
// best use any in-btree erased-state
|
||||
LFS3_ASSERT(lfs3->lookahead.ckpoint >= lfs3->gbmap.known);
|
||||
int err = lfs3_gbmap_zerounknown(lfs3, &mgc->gbmap_,
|
||||
lfs3->gbmap.window + lfs3->gbmap.known,
|
||||
lfs3->lookahead.ckpoint - lfs3->gbmap.known);
|
||||
if (err) {
|
||||
return err;
|
||||
}
|
||||
@@ -10666,8 +10670,7 @@ static const lfs3_ecksum_t lfs3_gbmap_defaultecksum = {.cksize=-1};
|
||||
static int lfs3_gbmap_set_(lfs3_t *lfs3, lfs3_btree_t *gbmap,
|
||||
lfs3_block_t block, lfs3_block_t weight,
|
||||
lfs3_tag_t tag, const lfs3_ecksum_t *ecksum) {
|
||||
return lfs3_gbmap_set__(lfs3, gbmap,
|
||||
block, weight, tag,
|
||||
return lfs3_gbmap_set__(lfs3, gbmap, block, weight, tag,
|
||||
// default to not-ecksum if NULL
|
||||
(ecksum) ? ecksum : &lfs3_gbmap_defaultecksum);
|
||||
}
|
||||
@@ -10718,27 +10721,33 @@ static int lfs3_gbmap_setbptr(lfs3_t *lfs3, lfs3_btree_t *gbmap,
|
||||
#if !defined(LFS3_RDONLY) && defined(LFS3_GBMAP)
|
||||
// note this is not completely atomic, but worst case we just end up with
|
||||
// only some ranges zeroed
|
||||
static int lfs3_gbmap_zero(lfs3_t *lfs3, lfs3_btree_t *gbmap) {
|
||||
lfs3_block_t block__ = -1;
|
||||
while (true) {
|
||||
lfs3_block_t weight__;
|
||||
lfs3_stag_t tag__ = lfs3_gbmap_lookupnext(lfs3, gbmap, block__+1,
|
||||
&block__, &weight__, NULL);
|
||||
static int lfs3_gbmap_zerounknown(lfs3_t *lfs3, lfs3_btree_t *gbmap,
|
||||
lfs3_block_t window, lfs3_block_t size) {
|
||||
lfs3_block_t window_ = window % lfs3->block_count;
|
||||
lfs3_block_t size_ = size;
|
||||
while (size_ > 0) {
|
||||
lfs3_block_t block__;
|
||||
lfs3_stag_t tag__ = lfs3_gbmap_lookupnext(lfs3, gbmap, window_,
|
||||
&block__, NULL, NULL);
|
||||
if (tag__ < 0) {
|
||||
if (tag__ == LFS3_ERR_NOENT) {
|
||||
break;
|
||||
}
|
||||
LFS3_ASSERT(tag__ != LFS3_ERR_NOENT);
|
||||
return tag__;
|
||||
}
|
||||
lfs3_sblock_t d = lfs3_min(
|
||||
block__+1 - window_,
|
||||
size_);
|
||||
|
||||
// mark in-use/erased ranges as free
|
||||
if (tag__ == LFS3_TAG_BMINUSE || tag__ == LFS3_TAG_BMERASED) {
|
||||
int err = lfs3_gbmap_set_(lfs3, gbmap,
|
||||
block__, weight__, LFS3_TAG_BMFREE, NULL);
|
||||
int err = lfs3_gbmap_set_(lfs3, gbmap, window_+d-1, d,
|
||||
LFS3_TAG_BMFREE, NULL);
|
||||
if (err) {
|
||||
return err;
|
||||
}
|
||||
}
|
||||
|
||||
window_ = (window_ + d) % lfs3->block_count;
|
||||
size_ -= d;
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -10849,7 +10858,7 @@ static inline bool lfs3_alloc_canpreerase(const lfs3_t *lfs3) {
|
||||
return lfs3_f_isgbmap(lfs3->flags)
|
||||
// have we pre-erased enough blocks?
|
||||
&& lfs3->gbmap.preeraser.count
|
||||
< lfs3->cfg->gc_preerase_count
|
||||
< (lfs3_block_t)lfs3->cfg->gc_preerase_count
|
||||
// are there any more blocks in our known window?
|
||||
&& lfs3->gbmap.preeraser.known
|
||||
< lfs3->gbmap.known;
|
||||
@@ -10963,6 +10972,12 @@ static int lfs3_alloc_adoptgbmap(lfs3_t *lfs3,
|
||||
// adopt new gbmap
|
||||
lfs3->gbmap.known = known;
|
||||
lfs3->gbmap.b = *gbmap;
|
||||
// reset preeraser, don't worry this should rediscover any
|
||||
// erased ranges in the gbmap
|
||||
#ifdef LFS3_PREERASE
|
||||
lfs3->gbmap.preeraser.known = 0;
|
||||
lfs3->gbmap.preeraser.count = 0;
|
||||
#endif
|
||||
|
||||
// eagerly find the next free block so lookgbmap scans can make
|
||||
// the most progress
|
||||
@@ -10998,8 +11013,18 @@ static void lfs3_alloc_inc(lfs3_t *lfs3) {
|
||||
if (lfs3_f_isgbmap(lfs3->flags)) {
|
||||
lfs3->gbmap.window = (lfs3->gbmap.window + 1) % lfs3->block_count;
|
||||
lfs3->gbmap.known -= lfs3_min(1, lfs3->gbmap.known);
|
||||
#ifdef LFS3_PREERASE
|
||||
lfs3->gbmap.preeraser.known
|
||||
-= lfs3_min(1, lfs3->gbmap.preeraser.known);
|
||||
#endif
|
||||
if (lfs3->gbmap.next > 0) {
|
||||
lfs3->gbmap.next -= 1;
|
||||
#ifdef LFS3_PREERASE
|
||||
if (lfs3_ecksum_isecksum(&lfs3->gbmap.ecksum)) {
|
||||
lfs3->gbmap.preeraser.count
|
||||
-= lfs3_min(1, lfs3->gbmap.preeraser.count);
|
||||
}
|
||||
#endif
|
||||
} else if (lfs3->gbmap.next < 0) {
|
||||
lfs3->gbmap.next += 1;
|
||||
}
|
||||
@@ -11035,6 +11060,9 @@ static lfs3_sblock_t lfs3_alloc_findfree(lfs3_t *lfs3,
|
||||
if (tag < 0) {
|
||||
return tag;
|
||||
}
|
||||
lfs3_block_t d = lfs3_min(
|
||||
(block+1) - lfs3->gbmap.window,
|
||||
lfs3->gbmap.known);
|
||||
|
||||
// free? erased?
|
||||
//
|
||||
@@ -11045,15 +11073,11 @@ static lfs3_sblock_t lfs3_alloc_findfree(lfs3_t *lfs3,
|
||||
tag == LFS3_TAG_BMERASED
|
||||
&& lfs3_m_isrevperturb(lfs3->flags),
|
||||
false)) {
|
||||
lfs3->gbmap.next = lfs3_min(
|
||||
(block+1) - lfs3->gbmap.window,
|
||||
lfs3->gbmap.known);
|
||||
lfs3->gbmap.next = +d;
|
||||
|
||||
// in-use? bad? erased? treat as in-use
|
||||
} else {
|
||||
lfs3->gbmap.next = -lfs3_min(
|
||||
(block+1) - lfs3->gbmap.window,
|
||||
lfs3->gbmap.known);
|
||||
lfs3->gbmap.next = -d;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11215,6 +11239,9 @@ static lfs3_sblock_t lfs3_alloc_(lfs3_t *lfs3, uint32_t flags,
|
||||
#endif
|
||||
return block;
|
||||
}
|
||||
|
||||
// try another block in case we have other preerased blocks
|
||||
continue;
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -11305,9 +11332,12 @@ static int lfs3_alloc_lookgbmap(lfs3_t *lfs3) {
|
||||
// mark any in-use blocks as free
|
||||
//
|
||||
// we do this instead of creating a new gbmap to (1) preserve any
|
||||
// erased/bad info and (2) try to best use any available
|
||||
// known erased/bad info and (2) try to best use any in-btree
|
||||
// erased-state
|
||||
int err = lfs3_gbmap_zero(lfs3, &gbmap_);
|
||||
LFS3_ASSERT(lfs3->lookahead.ckpoint >= lfs3->gbmap.known);
|
||||
int err = lfs3_gbmap_zerounknown(lfs3, &gbmap_,
|
||||
lfs3->gbmap.window + lfs3->gbmap.known,
|
||||
lfs3->lookahead.ckpoint - lfs3->gbmap.known);
|
||||
if (err) {
|
||||
return err;
|
||||
}
|
||||
@@ -11360,12 +11390,12 @@ static int lfs3_alloc_preerase(lfs3_t *lfs3) {
|
||||
LFS3_ASSERT(tag__ != LFS3_ERR_NOENT);
|
||||
return tag__;
|
||||
}
|
||||
lfs3_block_t d = lfs3_min(
|
||||
block__+1 - block,
|
||||
lfs3->gbmap.known - lfs3->gbmap.preeraser.known);
|
||||
|
||||
// not free?
|
||||
if (tag__ != LFS3_TAG_BMFREE) {
|
||||
lfs3_sblock_t d = lfs3_min(
|
||||
block__+1 - block,
|
||||
lfs3->gbmap.known - lfs3->gbmap.preeraser.known);
|
||||
// wait, already erased?
|
||||
if (tag__ == LFS3_TAG_BMERASED) {
|
||||
lfs3->gbmap.preeraser.count += d;
|
||||
@@ -11390,8 +11420,8 @@ static int lfs3_alloc_preerase(lfs3_t *lfs3) {
|
||||
// commit into gbmap
|
||||
//
|
||||
// this relies on lfs3_gbmap_commit being atomic
|
||||
err = lfs3_gbmap_set(lfs3, &lfs3->gbmap.b,
|
||||
block, LFS3_TAG_BMERASED, &ecksum);
|
||||
err = lfs3_gbmap_set(lfs3, &lfs3->gbmap.b, block,
|
||||
LFS3_TAG_BMERASED, &ecksum);
|
||||
if (err) {
|
||||
return err;
|
||||
}
|
||||
@@ -16669,7 +16699,8 @@ static int lfs3_fs_gc_(lfs3_t *lfs3, lfs3_mgc_t *mgc,
|
||||
} else if (LFS3_IFDEF_RDONLY(
|
||||
false,
|
||||
LFS3_IFDEF_PREERASE(
|
||||
lfs3_alloc_canpreerase(lfs3),
|
||||
lfs3_t_ispreerase(flags)
|
||||
&& lfs3_alloc_canpreerase(lfs3),
|
||||
false))) {
|
||||
#if !defined(LFS3_RDONLY) && defined(LFS3_PREERASE)
|
||||
int err = lfs3_alloc_preerase(lfs3);
|
||||
|
||||
@@ -37,6 +37,8 @@ defines.LOOKAHEAD_SIZE = '(BLOCK_COUNT+8-1) / 8'
|
||||
defines.SEED = 42
|
||||
fuzz = 'SEED'
|
||||
if = 'LFS3_IFDEF_CKPROGS(true, !CKPROGS)'
|
||||
# don't bother testing with more complicated block allocators
|
||||
ifndef = 'LFS3_YES_GBMAP'
|
||||
in = 'lfs3.c'
|
||||
code = '''
|
||||
// test all possible bad blocks
|
||||
@@ -1999,6 +2001,8 @@ defines.LOOKAHEAD_SIZE = '(BLOCK_COUNT+8-1) / 8'
|
||||
defines.SEED = 42
|
||||
fuzz = 'SEED'
|
||||
if = 'LFS3_IFDEF_CKPROGS(true, !CKPROGS)'
|
||||
# don't bother testing with more complicated block allocators
|
||||
ifndef = 'LFS3_YES_GBMAP'
|
||||
in = 'lfs3.c'
|
||||
code = '''
|
||||
// test a large region of bad blocks
|
||||
@@ -3964,6 +3968,8 @@ defines.LOOKAHEAD_SIZE = '(BLOCK_COUNT+8-1) / 8'
|
||||
defines.SEED = 42
|
||||
fuzz = 'SEED'
|
||||
if = 'LFS3_IFDEF_CKPROGS(true, !CKPROGS)'
|
||||
# don't bother testing with more complicated block allocators
|
||||
ifndef = 'LFS3_YES_GBMAP'
|
||||
in = 'lfs3.c'
|
||||
code = '''
|
||||
// test a large region of bad blocks
|
||||
|
||||
+68
-78
@@ -1818,12 +1818,14 @@ done:;
|
||||
defines.AFTER = [0, 1, 2, 3]
|
||||
defines.MKCONSISTENT = [false, true]
|
||||
defines.LOOKAHEAD = [false, true]
|
||||
defines.PREERASE = [false, true]
|
||||
defines.COMPACT = [false, true]
|
||||
defines.CKMETA = [false, true]
|
||||
defines.CKDATA = [false, true]
|
||||
defines.GC_FLAGS = '''
|
||||
((MKCONSISTENT) ? LFS3_GC_MKCONSISTENT : 0)
|
||||
| ((LOOKAHEAD) ? LFS3_GC_LOOKAHEAD : 0)
|
||||
| ((PREERASE) ? LFS3_IFDEF_PREERASE(LFS3_GC_PREERASE, -1) : 0)
|
||||
| ((COMPACT) ? LFS3_GC_COMPACT : 0)
|
||||
| ((CKMETA) ? LFS3_GC_CKMETA : 0)
|
||||
| ((CKDATA) ? LFS3_GC_CKDATA : 0)
|
||||
@@ -1842,6 +1844,10 @@ defines.SIZE = [
|
||||
if = [
|
||||
'(SIZE*N)/BLOCK_SIZE <= 32',
|
||||
'LFS3_IFDEF_GC(true, AFTER != 0)',
|
||||
'LFS3_IFDEF_PREERASE(true, !PREERASE)',
|
||||
'GBMAP || !PREERASE',
|
||||
# lfs3_trv_t doesn't make progress on this
|
||||
'!PREERASE || AFTER != 1',
|
||||
]
|
||||
code = '''
|
||||
lfs3_t lfs3;
|
||||
@@ -1883,6 +1889,7 @@ code = '''
|
||||
| ((!GBMAP || (fsinfo.flags & LFS3_I_LOOKAHEAD))
|
||||
? LFS3_I_LOOKAHEAD
|
||||
: 0)
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -1904,6 +1911,9 @@ code = '''
|
||||
if (!(fsinfo.flags & (
|
||||
((MKCONSISTENT) ? LFS3_I_MKCONSISTENT : 0)
|
||||
| ((LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0)
|
||||
| ((PREERASE)
|
||||
? LFS3_IFDEF_PREERASE(LFS3_I_PREERASE, -1)
|
||||
: 0)
|
||||
| ((COMPACT) ? LFS3_I_COMPACT : 0)
|
||||
| ((CKMETA) ? LFS3_I_CKMETA : 0)
|
||||
| ((CKDATA) ? LFS3_I_CKDATA : 0)))) {
|
||||
@@ -1933,6 +1943,9 @@ code = '''
|
||||
if (!(fsinfo.flags & (
|
||||
((MKCONSISTENT) ? LFS3_I_MKCONSISTENT : 0)
|
||||
| ((LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0)
|
||||
| ((PREERASE)
|
||||
? LFS3_IFDEF_PREERASE(LFS3_I_PREERASE, -1)
|
||||
: 0)
|
||||
| ((COMPACT) ? LFS3_I_COMPACT : 0)
|
||||
| ((CKMETA) ? LFS3_I_CKMETA : 0)
|
||||
| ((CKDATA) ? LFS3_I_CKDATA : 0)))) {
|
||||
@@ -1944,35 +1957,17 @@ code = '''
|
||||
}
|
||||
|
||||
if (LOOKAHEAD && (fsinfo.flags & LFS3_I_LOOKAHEAD)) {
|
||||
// we need an explicit traversal for this
|
||||
lfs3_trv_t trv;
|
||||
lfs3_trv_open(&lfs3, &trv,
|
||||
LFS3_T_RDWR | LFS3_T_LOOKAHEAD) => 0;
|
||||
while (true) {
|
||||
struct lfs3_tinfo tinfo;
|
||||
int err = lfs3_trv_read(&lfs3, &trv, &tinfo);
|
||||
assert(err == 0 || err == LFS3_ERR_NOENT);
|
||||
if (err == LFS3_ERR_NOENT) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
lfs3_trv_close(&lfs3, &trv) => 0;
|
||||
lfs3_fs_ck(&lfs3, LFS3_CK_LOOKAHEAD) => 0;
|
||||
}
|
||||
|
||||
#ifdef LFS3_PREERASE
|
||||
if (PREERASE && (fsinfo.flags & LFS3_I_PREERASE)) {
|
||||
lfs3_fs_ck(&lfs3, LFS3_CK_PREERASE) => 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (COMPACT && (fsinfo.flags & LFS3_I_COMPACT)) {
|
||||
// we need an explicit traversal for this
|
||||
lfs3_trv_t trv;
|
||||
lfs3_trv_open(&lfs3, &trv,
|
||||
LFS3_T_RDWR | LFS3_T_COMPACT) => 0;
|
||||
while (true) {
|
||||
struct lfs3_tinfo tinfo;
|
||||
int err = lfs3_trv_read(&lfs3, &trv, &tinfo);
|
||||
assert(err == 0 || err == LFS3_ERR_NOENT);
|
||||
if (err == LFS3_ERR_NOENT) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
lfs3_trv_close(&lfs3, &trv) => 0;
|
||||
lfs3_fs_ck(&lfs3, LFS3_CK_COMPACT) => 0;
|
||||
}
|
||||
|
||||
if (CKMETA && (fsinfo.flags & LFS3_I_CKMETA)) {
|
||||
@@ -2003,6 +1998,9 @@ code = '''
|
||||
&& (!GBMAP || (fsinfo.flags & LFS3_I_LOOKAHEAD)))
|
||||
? LFS3_I_LOOKAHEAD
|
||||
: 0)
|
||||
| LFS3_IFDEF_PREERASE(
|
||||
(GBMAP && !PREERASE) ? LFS3_I_PREERASE : 0,
|
||||
0)
|
||||
| ((!COMPACT) ? LFS3_I_COMPACT : 0)
|
||||
// note ckdata implies ckmeta
|
||||
| ((!CKMETA && !CKDATA) ? LFS3_I_CKMETA : 0)
|
||||
@@ -2021,12 +2019,14 @@ code = '''
|
||||
defines.AFTER = [0, 1, 2, 3]
|
||||
defines.MKCONSISTENT = [false, true]
|
||||
defines.LOOKAHEAD = [false, true]
|
||||
defines.PREERASE = [false, true]
|
||||
defines.COMPACT = [false, true]
|
||||
defines.CKMETA = [false, true]
|
||||
defines.CKDATA = [false, true]
|
||||
defines.GC_FLAGS = '''
|
||||
((MKCONSISTENT) ? LFS3_GC_MKCONSISTENT : 0)
|
||||
| ((LOOKAHEAD) ? LFS3_GC_LOOKAHEAD : 0)
|
||||
| ((PREERASE) ? LFS3_IFDEF_PREERASE(LFS3_GC_PREERASE, -1) : 0)
|
||||
| ((COMPACT) ? LFS3_GC_COMPACT : 0)
|
||||
| ((CKMETA) ? LFS3_GC_CKMETA : 0)
|
||||
| ((CKDATA) ? LFS3_GC_CKDATA : 0)
|
||||
@@ -2045,6 +2045,10 @@ defines.SIZE = [
|
||||
if = [
|
||||
'(SIZE*N)/BLOCK_SIZE <= 32',
|
||||
'LFS3_IFDEF_GC(true, AFTER != 0)',
|
||||
'LFS3_IFDEF_PREERASE(true, !PREERASE)',
|
||||
'GBMAP || !PREERASE',
|
||||
# lfs3_trv_t doesn't make progress on this
|
||||
'!PREERASE || AFTER != 1',
|
||||
]
|
||||
code = '''
|
||||
lfs3_t lfs3;
|
||||
@@ -2086,6 +2090,7 @@ code = '''
|
||||
| ((!GBMAP || (fsinfo.flags & LFS3_I_LOOKAHEAD))
|
||||
? LFS3_I_LOOKAHEAD
|
||||
: 0)
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -2107,6 +2112,9 @@ code = '''
|
||||
if (!(fsinfo.flags & (
|
||||
((MKCONSISTENT) ? LFS3_I_MKCONSISTENT : 0)
|
||||
| ((LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0)
|
||||
| ((PREERASE)
|
||||
? LFS3_IFDEF_PREERASE(LFS3_I_PREERASE, -1)
|
||||
: 0)
|
||||
| ((COMPACT) ? LFS3_I_COMPACT : 0)
|
||||
| ((CKMETA) ? LFS3_I_CKMETA : 0)
|
||||
| ((CKDATA) ? LFS3_I_CKDATA : 0)))) {
|
||||
@@ -2136,6 +2144,9 @@ code = '''
|
||||
if (!(fsinfo.flags & (
|
||||
((MKCONSISTENT) ? LFS3_I_MKCONSISTENT : 0)
|
||||
| ((LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0)
|
||||
| ((PREERASE)
|
||||
? LFS3_IFDEF_PREERASE(LFS3_I_PREERASE, -1)
|
||||
: 0)
|
||||
| ((COMPACT) ? LFS3_I_COMPACT : 0)
|
||||
| ((CKMETA) ? LFS3_I_CKMETA : 0)
|
||||
| ((CKDATA) ? LFS3_I_CKDATA : 0)))) {
|
||||
@@ -2147,35 +2158,17 @@ code = '''
|
||||
}
|
||||
|
||||
if (LOOKAHEAD && (fsinfo.flags & LFS3_I_LOOKAHEAD)) {
|
||||
// we need an explicit traversal for this
|
||||
lfs3_trv_t trv;
|
||||
lfs3_trv_open(&lfs3, &trv,
|
||||
LFS3_T_RDWR | LFS3_T_LOOKAHEAD) => 0;
|
||||
while (true) {
|
||||
struct lfs3_tinfo tinfo;
|
||||
int err = lfs3_trv_read(&lfs3, &trv, &tinfo);
|
||||
assert(err == 0 || err == LFS3_ERR_NOENT);
|
||||
if (err == LFS3_ERR_NOENT) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
lfs3_trv_close(&lfs3, &trv) => 0;
|
||||
lfs3_fs_ck(&lfs3, LFS3_CK_LOOKAHEAD) => 0;
|
||||
}
|
||||
|
||||
#ifdef LFS3_PREERASE
|
||||
if (PREERASE && (fsinfo.flags & LFS3_I_PREERASE)) {
|
||||
lfs3_fs_ck(&lfs3, LFS3_CK_PREERASE) => 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (COMPACT && (fsinfo.flags & LFS3_I_COMPACT)) {
|
||||
// we need an explicit traversal for this
|
||||
lfs3_trv_t trv;
|
||||
lfs3_trv_open(&lfs3, &trv,
|
||||
LFS3_T_RDWR | LFS3_T_COMPACT) => 0;
|
||||
while (true) {
|
||||
struct lfs3_tinfo tinfo;
|
||||
int err = lfs3_trv_read(&lfs3, &trv, &tinfo);
|
||||
assert(err == 0 || err == LFS3_ERR_NOENT);
|
||||
if (err == LFS3_ERR_NOENT) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
lfs3_trv_close(&lfs3, &trv) => 0;
|
||||
lfs3_fs_ck(&lfs3, LFS3_CK_COMPACT) => 0;
|
||||
}
|
||||
|
||||
if (CKMETA && (fsinfo.flags & LFS3_I_CKMETA)) {
|
||||
@@ -2206,6 +2199,9 @@ code = '''
|
||||
&& (!GBMAP || (fsinfo.flags & LFS3_I_LOOKAHEAD)))
|
||||
? LFS3_I_LOOKAHEAD
|
||||
: 0)
|
||||
| LFS3_IFDEF_PREERASE(
|
||||
(GBMAP && !PREERASE) ? LFS3_I_PREERASE : 0,
|
||||
0)
|
||||
| ((!COMPACT) ? LFS3_I_COMPACT : 0)
|
||||
// note ckdata implies ckmeta
|
||||
| ((!CKMETA && !CKDATA) ? LFS3_I_CKMETA : 0)
|
||||
@@ -2224,6 +2220,9 @@ code = '''
|
||||
| ((!GBMAP || (fsinfo.flags & LFS3_I_LOOKAHEAD))
|
||||
? LFS3_I_LOOKAHEAD
|
||||
: 0)
|
||||
| LFS3_IFDEF_PREERASE(
|
||||
(GBMAP && !PREERASE) ? LFS3_I_PREERASE : 0,
|
||||
0)
|
||||
| LFS3_I_COMPACT
|
||||
// note ckdata implies ckmeta, but uncking ckdata does
|
||||
// _not_ imply uncking ckmeta
|
||||
@@ -2247,6 +2246,9 @@ code = '''
|
||||
if (!(fsinfo.flags & (
|
||||
((MKCONSISTENT) ? LFS3_I_MKCONSISTENT : 0)
|
||||
| ((LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0)
|
||||
| ((PREERASE)
|
||||
? LFS3_IFDEF_PREERASE(LFS3_I_PREERASE, -1)
|
||||
: 0)
|
||||
| ((COMPACT) ? LFS3_I_COMPACT : 0)
|
||||
| ((CKMETA) ? LFS3_I_CKMETA : 0)
|
||||
| ((CKDATA) ? LFS3_I_CKDATA : 0)))) {
|
||||
@@ -2276,6 +2278,9 @@ code = '''
|
||||
if (!(fsinfo.flags & (
|
||||
((MKCONSISTENT) ? LFS3_I_MKCONSISTENT : 0)
|
||||
| ((LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0)
|
||||
| ((PREERASE)
|
||||
? LFS3_IFDEF_PREERASE(LFS3_I_PREERASE, -1)
|
||||
: 0)
|
||||
| ((COMPACT) ? LFS3_I_COMPACT : 0)
|
||||
| ((CKMETA) ? LFS3_I_CKMETA : 0)
|
||||
| ((CKDATA) ? LFS3_I_CKDATA : 0)))) {
|
||||
@@ -2287,35 +2292,17 @@ code = '''
|
||||
}
|
||||
|
||||
if (LOOKAHEAD && (fsinfo.flags & LFS3_I_LOOKAHEAD)) {
|
||||
// we need an explicit traversal for this
|
||||
lfs3_trv_t trv;
|
||||
lfs3_trv_open(&lfs3, &trv,
|
||||
LFS3_T_RDWR | LFS3_T_LOOKAHEAD) => 0;
|
||||
while (true) {
|
||||
struct lfs3_tinfo tinfo;
|
||||
int err = lfs3_trv_read(&lfs3, &trv, &tinfo);
|
||||
assert(err == 0 || err == LFS3_ERR_NOENT);
|
||||
if (err == LFS3_ERR_NOENT) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
lfs3_trv_close(&lfs3, &trv) => 0;
|
||||
lfs3_fs_ck(&lfs3, LFS3_CK_LOOKAHEAD) => 0;
|
||||
}
|
||||
|
||||
#ifdef LFS3_PREERASE
|
||||
if (PREERASE && (fsinfo.flags & LFS3_I_PREERASE)) {
|
||||
lfs3_fs_ck(&lfs3, LFS3_CK_PREERASE) => 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (COMPACT && (fsinfo.flags & LFS3_I_COMPACT)) {
|
||||
// we need an explicit traversal for this
|
||||
lfs3_trv_t trv;
|
||||
lfs3_trv_open(&lfs3, &trv,
|
||||
LFS3_T_RDWR | LFS3_T_COMPACT) => 0;
|
||||
while (true) {
|
||||
struct lfs3_tinfo tinfo;
|
||||
int err = lfs3_trv_read(&lfs3, &trv, &tinfo);
|
||||
assert(err == 0 || err == LFS3_ERR_NOENT);
|
||||
if (err == LFS3_ERR_NOENT) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
lfs3_trv_close(&lfs3, &trv) => 0;
|
||||
lfs3_fs_ck(&lfs3, LFS3_CK_COMPACT) => 0;
|
||||
}
|
||||
|
||||
if (CKMETA && (fsinfo.flags & LFS3_I_CKMETA)) {
|
||||
@@ -2346,6 +2333,9 @@ code = '''
|
||||
&& (!GBMAP || (fsinfo.flags & LFS3_I_LOOKAHEAD)))
|
||||
? LFS3_I_LOOKAHEAD
|
||||
: 0)
|
||||
| LFS3_IFDEF_PREERASE(
|
||||
(GBMAP && !PREERASE) ? LFS3_I_PREERASE : 0,
|
||||
0)
|
||||
| ((!COMPACT) ? LFS3_I_COMPACT : 0)
|
||||
// note ckdata implies ckmeta
|
||||
| ((!CKMETA && !CKDATA) ? LFS3_I_CKMETA : 0)
|
||||
|
||||
+28
-2
@@ -32,6 +32,7 @@ defines.CKMETAPARITY = [false, true]
|
||||
defines.CKDATACKSUMS = [false, true]
|
||||
defines.MKCONSISTENT = [false, true]
|
||||
defines.LOOKAHEAD = [false, true]
|
||||
defines.PREERASE = [false, true]
|
||||
defines.COMPACT = [false, true]
|
||||
defines.CKMETA = [false, true]
|
||||
defines.CKDATA = [false, true]
|
||||
@@ -44,6 +45,9 @@ if = [
|
||||
'LFS3_IFDEF_CKDATACKSUMS(true, !CKDATACKSUMS)',
|
||||
'!RDONLY || !MKCONSISTENT',
|
||||
'!RDONLY || !LOOKAHEAD',
|
||||
'LFS3_IFDEF_PREERASE(true, !PREERASE)',
|
||||
'GBMAP || !PREERASE',
|
||||
'!RDONLY || !PREERASE',
|
||||
'!RDONLY || !COMPACT',
|
||||
]
|
||||
code = '''
|
||||
@@ -70,6 +74,7 @@ code = '''
|
||||
: 0)
|
||||
| ((MKCONSISTENT) ? LFS3_M_MKCONSISTENT : 0)
|
||||
| ((LOOKAHEAD) ? LFS3_M_LOOKAHEAD : 0)
|
||||
| ((PREERASE) ? LFS3_IFDEF_PREERASE(LFS3_M_PREERASE, -1) : 0)
|
||||
| ((COMPACT) ? LFS3_M_COMPACT : 0)
|
||||
| ((CKMETA) ? LFS3_M_CKMETA : 0)
|
||||
| ((CKDATA) ? LFS3_M_CKDATA : 0),
|
||||
@@ -95,7 +100,12 @@ code = '''
|
||||
? LFS3_IFDEF_CKDATACKSUMS(LFS3_I_CKDATACKSUMS, -1)
|
||||
: 0)
|
||||
| ((!MKCONSISTENT) ? LFS3_I_MKCONSISTENT : 0)
|
||||
| ((!LOOKAHEAD && !GBMAP) ? LFS3_I_LOOKAHEAD : 0)
|
||||
| ((!LOOKAHEAD && (!GBMAP || PREERASE))
|
||||
? LFS3_I_LOOKAHEAD
|
||||
: 0)
|
||||
| LFS3_IFDEF_PREERASE(
|
||||
(GBMAP && !PREERASE) ? LFS3_I_PREERASE : 0,
|
||||
0)
|
||||
| ((!COMPACT) ? LFS3_I_COMPACT : 0)
|
||||
// note ckdata implies ckmeta
|
||||
| ((!CKMETA && !CKDATA) ? LFS3_I_CKMETA : 0)
|
||||
@@ -117,6 +127,7 @@ defines.CKMETAPARITY = [false, true]
|
||||
defines.CKDATACKSUMS = [false, true]
|
||||
defines.MKCONSISTENT = [false, true]
|
||||
defines.LOOKAHEAD = [false, true]
|
||||
defines.PREERASE = [false, true]
|
||||
defines.COMPACT = [false, true]
|
||||
defines.CKMETA = [false, true]
|
||||
defines.CKDATA = [false, true]
|
||||
@@ -127,6 +138,8 @@ if = [
|
||||
'LFS3_IFDEF_CKFETCHES(true, !CKFETCHES)',
|
||||
'LFS3_IFDEF_CKMETAPARITY(true, !CKMETAPARITY)',
|
||||
'LFS3_IFDEF_CKDATACKSUMS(true, !CKDATACKSUMS)',
|
||||
'LFS3_IFDEF_PREERASE(true, !PREERASE)',
|
||||
'GBMAP || !PREERASE',
|
||||
]
|
||||
code = '''
|
||||
lfs3_t lfs3;
|
||||
@@ -146,6 +159,7 @@ code = '''
|
||||
: 0)
|
||||
| ((MKCONSISTENT) ? LFS3_F_MKCONSISTENT : 0)
|
||||
| ((LOOKAHEAD) ? LFS3_F_LOOKAHEAD : 0)
|
||||
| ((PREERASE) ? LFS3_IFDEF_PREERASE(LFS3_F_PREERASE, -1) : 0)
|
||||
| ((COMPACT) ? LFS3_F_COMPACT : 0)
|
||||
| ((CKMETA) ? LFS3_F_CKMETA : 0)
|
||||
| ((CKDATA) ? LFS3_F_CKDATA : 0)
|
||||
@@ -160,7 +174,10 @@ code = '''
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| LFS3_I_MKCONSISTENT
|
||||
| ((!GBMAP) ? LFS3_I_LOOKAHEAD : 0)
|
||||
| ((!GBMAP || (PREERASE && !LOOKAHEAD))
|
||||
? LFS3_I_LOOKAHEAD
|
||||
: 0)
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -194,6 +211,7 @@ code = '''
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| LFS3_I_MKCONSISTENT
|
||||
| ((!GBMAP) ? LFS3_I_LOOKAHEAD : 0)
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -212,6 +230,7 @@ code = '''
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| LFS3_I_MKCONSISTENT
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
// note ckdata implies ckmeta
|
||||
| ((!CKMETA && !CKDATA) ? LFS3_I_CKMETA : 0)
|
||||
@@ -248,6 +267,7 @@ code = '''
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| LFS3_I_MKCONSISTENT
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -272,6 +292,7 @@ code = '''
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| LFS3_I_MKCONSISTENT
|
||||
| LFS3_I_LOOKAHEAD
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -290,6 +311,7 @@ code = '''
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| LFS3_I_MKCONSISTENT
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
// note ckdata implies ckmeta
|
||||
| ((!CKMETA && !CKDATA) ? LFS3_I_CKMETA : 0)
|
||||
@@ -354,6 +376,7 @@ code = '''
|
||||
| ((!GBMAP || SIZE >= BLOCK_SIZE/4)
|
||||
? LFS3_I_LOOKAHEAD
|
||||
: 0)
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -376,6 +399,7 @@ code = '''
|
||||
| ((!LOOKAHEAD && (!GBMAP || SIZE >= BLOCK_SIZE/4))
|
||||
? LFS3_I_LOOKAHEAD
|
||||
: 0)
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
// note ckdata implies ckmeta
|
||||
| ((!CKMETA && !CKDATA) ? LFS3_I_CKMETA : 0)
|
||||
| ((!CKDATA) ? LFS3_I_CKDATA : 0)
|
||||
@@ -469,6 +493,7 @@ code = '''
|
||||
| ((!GBMAP || ORPHANS >= 100)
|
||||
? LFS3_I_LOOKAHEAD
|
||||
: 0)
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -491,6 +516,7 @@ code = '''
|
||||
| ((!LOOKAHEAD && (!GBMAP || ORPHANS >= 100))
|
||||
? LFS3_I_LOOKAHEAD
|
||||
: 0)
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| ((!COMPACT) ? LFS3_I_COMPACT : 0)
|
||||
// note ckdata implies ckmeta
|
||||
| ((!CKMETA && !CKDATA) ? LFS3_I_CKMETA : 0)
|
||||
|
||||
@@ -1760,9 +1760,14 @@ done:;
|
||||
[cases.test_trvs_flags]
|
||||
defines.MKCONSISTENT = [false, true]
|
||||
defines.LOOKAHEAD = [false, true]
|
||||
defines.PREERASE = [false, true]
|
||||
defines.COMPACT = [false, true]
|
||||
defines.CKMETA = [false, true]
|
||||
defines.CKDATA = [false, true]
|
||||
if = [
|
||||
'LFS3_IFDEF_PREERASE(true, !PREERASE)',
|
||||
'GBMAP || !PREERASE',
|
||||
]
|
||||
code = '''
|
||||
lfs3_t lfs3;
|
||||
lfs3_format(&lfs3,
|
||||
@@ -1779,6 +1784,7 @@ code = '''
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| LFS3_I_MKCONSISTENT
|
||||
| ((!GBMAP) ? LFS3_I_LOOKAHEAD : 0)
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -1790,6 +1796,9 @@ code = '''
|
||||
LFS3_T_RDWR
|
||||
| ((MKCONSISTENT) ? LFS3_T_MKCONSISTENT : 0)
|
||||
| ((LOOKAHEAD) ? LFS3_T_LOOKAHEAD : 0)
|
||||
| ((PREERASE)
|
||||
? LFS3_IFDEF_PREERASE(LFS3_T_PREERASE, -1)
|
||||
: 0)
|
||||
| ((COMPACT) ? LFS3_T_COMPACT : 0)
|
||||
| ((CKMETA) ? LFS3_T_CKMETA : 0)
|
||||
| ((CKDATA) ? LFS3_T_CKDATA : 0)) => 0;
|
||||
@@ -1816,6 +1825,7 @@ code = '''
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| ((!MKCONSISTENT) ? LFS3_I_MKCONSISTENT : 0)
|
||||
| ((!LOOKAHEAD && !GBMAP) ? LFS3_I_LOOKAHEAD : 0)
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| ((!COMPACT) ? LFS3_I_COMPACT : 0)
|
||||
// note ckdata implies ckmeta
|
||||
| ((!CKMETA && !CKDATA) ? LFS3_I_CKMETA : 0)
|
||||
@@ -1916,6 +1926,7 @@ done:;
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| ((!GBMAP) ? LFS3_I_LOOKAHEAD : 0)
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -1991,6 +2002,7 @@ code = '''
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| ((!GBMAP) ? LFS3_I_LOOKAHEAD : 0)
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -2024,6 +2036,7 @@ code = '''
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| ((!GBMAP) ? LFS3_I_LOOKAHEAD : 0)
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -2115,6 +2128,7 @@ done:;
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| ((!GBMAP) ? LFS3_I_LOOKAHEAD : 0)
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -2210,6 +2224,7 @@ done:;
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| ((!GBMAP) ? LFS3_I_LOOKAHEAD : 0)
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -2313,6 +2328,7 @@ done:;
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| ((!GBMAP) ? LFS3_I_LOOKAHEAD : 0)
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -2399,6 +2415,7 @@ code = '''
|
||||
| ((!GBMAP || SIZE >= BLOCK_SIZE/4)
|
||||
? LFS3_I_LOOKAHEAD
|
||||
: 0)
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -2499,6 +2516,7 @@ code = '''
|
||||
&& (!GBMAP || SIZE >= BLOCK_SIZE/4))
|
||||
? LFS3_I_LOOKAHEAD
|
||||
: 0)
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
// and maybe ckmeta/ckdata, note ckdata implies ckmeta
|
||||
| (((!CKMETA && !CKDATA) || SIZE > FCACHE_SIZE || SYNC)
|
||||
@@ -2619,6 +2637,7 @@ done:;
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| ((!GBMAP) ? LFS3_I_LOOKAHEAD : 0)
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -2751,6 +2770,7 @@ done:;
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| LFS3_I_LOOKAHEAD
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -2873,6 +2893,7 @@ done:;
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| LFS3_I_LOOKAHEAD
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -2980,6 +3001,7 @@ done:;
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| ((!GBMAP) ? LFS3_I_LOOKAHEAD : 0)
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -3114,6 +3136,7 @@ done:;
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| LFS3_I_LOOKAHEAD
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -3238,6 +3261,7 @@ done:;
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| LFS3_I_LOOKAHEAD
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -3358,6 +3382,7 @@ done:;
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| ((DESYNC) ? LFS3_I_MKCONSISTENT : 0)
|
||||
| ((!(LOOKAHEAD && DESYNC) && !GBMAP) ? LFS3_I_LOOKAHEAD : 0)
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
// note ckdata implies ckmeta
|
||||
| ((!(CKMETA && DESYNC) && !(CKDATA && DESYNC))
|
||||
@@ -3503,6 +3528,7 @@ done:;
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| ((DESYNC) ? LFS3_I_MKCONSISTENT : 0)
|
||||
| ((!(LOOKAHEAD && DESYNC)) ? LFS3_I_LOOKAHEAD : 0)
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
// note ckdata implies ckmeta
|
||||
| ((!(CKMETA && DESYNC) && !(CKDATA && DESYNC))
|
||||
@@ -3638,6 +3664,7 @@ done:;
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| ((DESYNC) ? LFS3_I_MKCONSISTENT : 0)
|
||||
| ((!(LOOKAHEAD && DESYNC)) ? LFS3_I_LOOKAHEAD : 0)
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
// note ckdata implies ckmeta
|
||||
| ((!(CKMETA && DESYNC) && !(CKDATA && DESYNC))
|
||||
@@ -3759,6 +3786,7 @@ done:;
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| ((DESYNC) ? LFS3_I_MKCONSISTENT : 0)
|
||||
| ((!(LOOKAHEAD && DESYNC)) ? LFS3_I_LOOKAHEAD : 0)
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
// note ckdata implies ckmeta
|
||||
| ((!(CKMETA && DESYNC) && !(CKDATA && DESYNC))
|
||||
@@ -3882,6 +3910,7 @@ done:;
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| LFS3_I_LOOKAHEAD
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -4007,6 +4036,7 @@ done:;
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| LFS3_I_LOOKAHEAD
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -4138,6 +4168,7 @@ done:;
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| LFS3_I_LOOKAHEAD
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -4279,6 +4310,7 @@ done:;
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| LFS3_I_LOOKAHEAD
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -4420,6 +4452,7 @@ done:;
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| LFS3_I_LOOKAHEAD
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -4541,6 +4574,7 @@ done:;
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| LFS3_I_LOOKAHEAD
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -4663,6 +4697,7 @@ done:;
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| LFS3_I_LOOKAHEAD
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -4793,6 +4828,7 @@ done:;
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| LFS3_I_LOOKAHEAD
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -4929,6 +4965,7 @@ done:;
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| LFS3_I_LOOKAHEAD
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -5119,6 +5156,7 @@ done:;
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| LFS3_I_LOOKAHEAD
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -5325,6 +5363,7 @@ done:;
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| LFS3_I_LOOKAHEAD
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -5526,6 +5565,7 @@ done:;
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| LFS3_I_LOOKAHEAD
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -5724,6 +5764,7 @@ done:;
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| LFS3_I_LOOKAHEAD
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -5928,6 +5969,7 @@ done:;
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| LFS3_I_LOOKAHEAD
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -6132,6 +6174,7 @@ done:;
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| LFS3_I_LOOKAHEAD
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -6346,6 +6389,7 @@ done:;
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| LFS3_I_LOOKAHEAD
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -6419,6 +6463,7 @@ code = '''
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| ((!GBMAP) ? LFS3_I_LOOKAHEAD : 0)
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -6457,6 +6502,7 @@ code = '''
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| ((!GBMAP) ? LFS3_I_LOOKAHEAD : 0)
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -6482,6 +6528,7 @@ code = '''
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| ((!LOOKAHEAD && !GBMAP) ? LFS3_I_LOOKAHEAD : 0)
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
// note ckdata implies ckmeta
|
||||
| ((!CKMETA && !CKDATA) ? LFS3_I_CKMETA : 0)
|
||||
| ((!CKDATA) ? LFS3_I_CKDATA : 0)
|
||||
@@ -6569,6 +6616,7 @@ code = '''
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| LFS3_I_LOOKAHEAD
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -6615,6 +6663,7 @@ code = '''
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| LFS3_I_LOOKAHEAD
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -6642,6 +6691,7 @@ code = '''
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| ((!LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0)
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
// note ckdata implies ckmeta
|
||||
| ((!CKMETA && !CKDATA) ? LFS3_I_CKMETA : 0)
|
||||
| ((!CKDATA) ? LFS3_I_CKDATA : 0)
|
||||
@@ -6728,6 +6778,7 @@ code = '''
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| LFS3_I_LOOKAHEAD
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -6774,6 +6825,7 @@ code = '''
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| LFS3_I_LOOKAHEAD
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -6801,6 +6853,7 @@ code = '''
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| ((!LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0)
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
// note ckdata implies ckmeta
|
||||
| ((!CKMETA && !CKDATA) ? LFS3_I_CKMETA : 0)
|
||||
| ((!CKDATA) ? LFS3_I_CKDATA : 0)
|
||||
@@ -6869,6 +6922,7 @@ code = '''
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| ((!GBMAP) ? LFS3_I_LOOKAHEAD : 0)
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -6909,6 +6963,7 @@ code = '''
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| LFS3_I_LOOKAHEAD
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -6934,6 +6989,7 @@ code = '''
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| ((!LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0)
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
// note ckdata implies ckmeta
|
||||
| ((!CKMETA && !CKDATA) ? LFS3_I_CKMETA : 0)
|
||||
| ((!CKDATA) ? LFS3_I_CKDATA : 0)
|
||||
@@ -7029,6 +7085,7 @@ code = '''
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| ((!GBMAP) ? LFS3_I_LOOKAHEAD : 0)
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -7081,6 +7138,7 @@ code = '''
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| LFS3_I_LOOKAHEAD
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -7107,6 +7165,7 @@ code = '''
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| ((!LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0)
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
// note ckdata implies ckmeta
|
||||
| ((!CKMETA && !CKDATA) ? LFS3_I_CKMETA : 0)
|
||||
| ((!CKDATA) ? LFS3_I_CKDATA : 0)
|
||||
@@ -7256,6 +7315,7 @@ code = '''
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| LFS3_I_LOOKAHEAD
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -7315,6 +7375,7 @@ code = '''
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| LFS3_I_LOOKAHEAD
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -7343,6 +7404,7 @@ code = '''
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| ((!LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0)
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
// note ckdata implies ckmeta
|
||||
| ((!CKMETA && !CKDATA) ? LFS3_I_CKMETA : 0)
|
||||
| ((!CKDATA) ? LFS3_I_CKDATA : 0)
|
||||
@@ -7497,6 +7559,7 @@ code = '''
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| LFS3_I_LOOKAHEAD
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -7561,6 +7624,7 @@ code = '''
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| LFS3_I_LOOKAHEAD
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -7589,6 +7653,7 @@ code = '''
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| ((!LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0)
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
// note ckdata implies ckmeta
|
||||
| ((!CKMETA && !CKDATA) ? LFS3_I_CKMETA : 0)
|
||||
| ((!CKDATA) ? LFS3_I_CKDATA : 0)
|
||||
@@ -7709,6 +7774,7 @@ code = '''
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| ((ORPHANS > 0) ? LFS3_I_MKCONSISTENT : 0)
|
||||
| ((!GBMAP || ORPHANS >= 100) ? LFS3_I_LOOKAHEAD : 0)
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -7779,6 +7845,7 @@ code = '''
|
||||
&& (!GBMAP || ORPHANS >= 100))
|
||||
? LFS3_I_LOOKAHEAD
|
||||
: 0)
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
// note ckdata implies ckmeta
|
||||
| (((!CKMETA && !CKDATA) || ORPHANS > 0) ? LFS3_I_CKMETA : 0)
|
||||
@@ -7858,6 +7925,7 @@ code = '''
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| ((!GBMAP) ? LFS3_I_LOOKAHEAD : 0)
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -7953,6 +8021,7 @@ code = '''
|
||||
&& (!GBMAP || ORPHANS >= 100))
|
||||
? LFS3_I_LOOKAHEAD
|
||||
: 0)
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
// note ckdata implies ckmeta
|
||||
| (((!CKMETA && !CKDATA) || ORPHANS > 0) ? LFS3_I_CKMETA : 0)
|
||||
@@ -8058,6 +8127,7 @@ code = '''
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| ((ORPHANS > 0) ? LFS3_I_MKCONSISTENT : 0)
|
||||
| LFS3_I_LOOKAHEAD
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -8138,6 +8208,7 @@ code = '''
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| ((!LOOKAHEAD || ORPHANS > 0) ? LFS3_I_LOOKAHEAD : 0)
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
// note ckdata implies ckmeta
|
||||
| (((!CKMETA && !CKDATA) || ORPHANS > 0) ? LFS3_I_CKMETA : 0)
|
||||
@@ -8243,6 +8314,7 @@ code = '''
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| ((ORPHANS > 0) ? LFS3_I_MKCONSISTENT : 0)
|
||||
| LFS3_I_LOOKAHEAD
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -8323,6 +8395,7 @@ code = '''
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| ((!LOOKAHEAD || ORPHANS > 0) ? LFS3_I_LOOKAHEAD : 0)
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
// note ckdata implies ckmeta
|
||||
| (((!CKMETA && !CKDATA) || ORPHANS > 0) ? LFS3_I_CKMETA : 0)
|
||||
@@ -8429,6 +8502,7 @@ code = '''
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| ((ORPHANS > 0) ? LFS3_I_MKCONSISTENT : 0)
|
||||
| LFS3_I_LOOKAHEAD
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -8517,6 +8591,7 @@ code = '''
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| ((!LOOKAHEAD || ORPHANS > 0) ? LFS3_I_LOOKAHEAD : 0)
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
// note ckdata implies ckmeta
|
||||
| (((!CKMETA && !CKDATA) || ORPHANS > 0) ? LFS3_I_CKMETA : 0)
|
||||
@@ -8623,6 +8698,7 @@ code = '''
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| ((ORPHANS > 0) ? LFS3_I_MKCONSISTENT : 0)
|
||||
| LFS3_I_LOOKAHEAD
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -8711,6 +8787,7 @@ code = '''
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| ((!LOOKAHEAD || ORPHANS > 0) ? LFS3_I_LOOKAHEAD : 0)
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
// note ckdata implies ckmeta
|
||||
| (((!CKMETA && !CKDATA) || ORPHANS > 0) ? LFS3_I_CKMETA : 0)
|
||||
@@ -8837,6 +8914,7 @@ code = '''
|
||||
| ((!GBMAP || ORPHANS >= 100)
|
||||
? LFS3_I_LOOKAHEAD
|
||||
: 0)
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -8911,6 +8989,7 @@ code = '''
|
||||
| ((!GBMAP || ORPHANS >= 100)
|
||||
? LFS3_I_LOOKAHEAD
|
||||
: 0)
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -8939,6 +9018,7 @@ code = '''
|
||||
| ((!LOOKAHEAD && (!GBMAP || ORPHANS >= 100))
|
||||
? LFS3_I_LOOKAHEAD
|
||||
: 0)
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
// note ckdata implies ckmeta
|
||||
| ((!CKMETA && !CKDATA) ? LFS3_I_CKMETA : 0)
|
||||
| ((!CKDATA) ? LFS3_I_CKDATA : 0)
|
||||
@@ -9040,6 +9120,7 @@ code = '''
|
||||
LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0)
|
||||
| LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0)
|
||||
| ((!GBMAP) ? LFS3_I_LOOKAHEAD : 0)
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
@@ -9139,6 +9220,7 @@ code = '''
|
||||
| ((!GBMAP || ORPHANS >= 100)
|
||||
? LFS3_I_LOOKAHEAD
|
||||
: 0)
|
||||
| LFS3_IFDEF_PREERASE((GBMAP) ? LFS3_I_PREERASE : 0, 0)
|
||||
| LFS3_I_COMPACT
|
||||
| LFS3_I_CKMETA
|
||||
| LFS3_I_CKDATA
|
||||
|
||||
Reference in New Issue
Block a user