gbmap: Renamed gbmap_rebuild_thresh -> gbmap_repop_thresh

And tweaked a few related comments.

I'm still on the fence with this name, I don't think it's great, but it
at least betters describes the "repopulation" operation than
"rebuilding". The important distinction is that we don't throw away
information. Bad/erased block info (future) is still carried over into
the new gbmap snapshot, and persists unless you explicitly call
rmgbmap + mkgbmap.

So, adopting gbmap_repop_thresh for now to see if it's just a habit
thing, but may adopt a different name in the future.

As a plus, gbmap_repop_thresh is two characters shorter.
This commit is contained in:
Christopher Haster
2025-10-16 13:46:14 -05:00
parent fb90bf976c
commit 3b4e1e9e0b
8 changed files with 249 additions and 248 deletions

88
lfs3.c
View File

@ -7399,10 +7399,10 @@ static inline bool lfs3_t_islookahead(uint32_t flags) {
#endif
}
static inline bool lfs3_t_isrebuildgbmap(uint32_t flags) {
static inline bool lfs3_t_isrepopgbmap(uint32_t flags) {
(void)flags;
#if !defined(LFS3_RDONLY) && defined(LFS3_GBMAP)
return flags & LFS3_T_REBUILDGBMAP;
return flags & LFS3_T_REPOPGBMAP;
#else
return false;
#endif
@ -10642,7 +10642,7 @@ static lfs3_stag_t lfs3_mtree_gc(lfs3_t *lfs3, lfs3_mgc_t *mgc,
//
// note because we bail as soon as a ckpoint is triggered
// (lfs3_t_isckpointed), we don't need to traverse this
if (lfs3_t_isrebuildgbmap(mgc->t.b.h.flags)
if (lfs3_t_isrepopgbmap(mgc->t.b.h.flags)
&& lfs3_f_isgbmap(lfs3->flags)
&& !lfs3_t_ismtreeonly(mgc->t.b.h.flags)) {
// at least checkpoint the lookahead buffer
@ -10692,7 +10692,7 @@ dropped:;
// mark in-use blocks in gbmap?
#ifdef LFS3_GBMAP
if (lfs3_t_isrebuildgbmap(mgc->t.b.h.flags)
if (lfs3_t_isrepopgbmap(mgc->t.b.h.flags)
&& lfs3_f_isgbmap(lfs3->flags)
&& !lfs3_t_ismtreeonly(mgc->t.b.h.flags)
&& !lfs3_t_isckpointed(mgc->t.b.h.flags)) {
@ -10774,9 +10774,9 @@ eot:;
}
#endif
// was gbmap rebuild successful?
// was gbmap repop successful?
#ifdef LFS3_GBMAP
if (lfs3_t_isrebuildgbmap(mgc->t.b.h.flags)
if (lfs3_t_isrepopgbmap(mgc->t.b.h.flags)
&& lfs3_f_isgbmap(lfs3->flags)
&& !lfs3_t_ismtreeonly(mgc->t.b.h.flags)
&& !lfs3_t_isckpointed(mgc->t.b.h.flags)) {
@ -10916,7 +10916,7 @@ failed:;
// range, cross-range sets are not currently not supported
//
// really this just provides a shortcut for bulk clearing ranges in
// lfs3_alloc_rebuildgbmap
// lfs3_alloc_repopgbmap
static int lfs3_gbmap_mark_(lfs3_t *lfs3, lfs3_btree_t *gbmap,
lfs3_block_t block, lfs3_block_t weight, lfs3_tag_t tag) {
// lookup gbmap range
@ -11122,7 +11122,7 @@ static inline void lfs3_alloc_ckpoint_(lfs3_t *lfs3) {
#endif
// needed in lfs3_alloc_ckpoint
static int lfs3_alloc_rebuildgbmap(lfs3_t *lfs3);
static int lfs3_alloc_repopgbmap(lfs3_t *lfs3);
// checkpoint the allocator
//
@ -11138,12 +11138,12 @@ static inline int lfs3_alloc_ckpoint(lfs3_t *lfs3) {
lfs3_alloc_ckpoint_(lfs3);
#ifdef LFS3_GBMAP
// do we need to rebuild the gbmap?
// do we need to repop the gbmap?
if (lfs3_f_isgbmap(lfs3->flags)
&& lfs3->gbmap.known < lfs3_min(
lfs3->cfg->gbmap_rebuild_thresh,
lfs3->cfg->gbmap_repop_thresh,
lfs3->block_count)) {
int err = lfs3_alloc_rebuildgbmap(lfs3);
int err = lfs3_alloc_repopgbmap(lfs3);
if (err) {
return err;
}
@ -11308,7 +11308,7 @@ static void lfs3_alloc_inc(lfs3_t *lfs3) {
lfs3->gbmap.known = lfs3_smax(lfs3->gbmap.known-1, 0);
// signal that the gbmap is no longer full
lfs3->flags |= LFS3_I_REBUILDGBMAP;
lfs3->flags |= LFS3_I_REPOPGBMAP;
}
#endif
}
@ -11457,14 +11457,13 @@ static void lfs3_alloc_adoptgbmap(lfs3_t *lfs3,
lfs3->gbmap.b = *gbmap;
// signal that gbmap is full, this is cleared on first alloc
lfs3->flags &= ~LFS3_I_REBUILDGBMAP;
lfs3->flags &= ~LFS3_I_REPOPGBMAP;
}
#endif
#if !defined(LFS3_RDONLY) && defined(LFS3_GBMAP)
static int lfs3_alloc_rebuildgbmap(lfs3_t *lfs3) {
LFS3_INFO("Rebuilding gbmap "
"(gbmap %"PRId32"/%"PRId32")",
static int lfs3_alloc_repopgbmap(lfs3_t *lfs3) {
LFS3_INFO("Repopulating gbmap (gbmap %"PRId32"/%"PRId32")",
lfs3->gbmap.known,
lfs3->block_count);
@ -11511,7 +11510,7 @@ static int lfs3_alloc_rebuildgbmap(lfs3_t *lfs3) {
//
// we don't commit this to disk immediately, instead we piggypack on
// the next mdir commit, most writes terminate in an mdir commit so
// this avoids extra writing at a risk of needing to rebuild the
// this avoids extra writing at a risk of needing to repop the
// gbmap if we lose power
//
lfs3_alloc_adoptgbmap(lfs3, &gbmap_, lfs3->lookahead.ckpoint);
@ -15446,7 +15445,7 @@ static int lfs3_init(lfs3_t *lfs3, uint32_t flags,
LFS3_ASSERT((lfs3->cfg->gc_flags & ~(
LFS3_GC_MKCONSISTENT
| LFS3_GC_LOOKAHEAD
| LFS3_IFDEF_GBMAP(LFS3_GC_REBUILDGBMAP, 0)
| LFS3_IFDEF_GBMAP(LFS3_GC_REPOPGBMAP, 0)
| LFS3_GC_COMPACT
| LFS3_GC_CKMETA
| LFS3_GC_CKDATA)) == 0);
@ -16283,13 +16282,14 @@ static int lfs3_mountinited(lfs3_t *lfs3) {
// known gbmap window
lfs3->lookahead.window = lfs3->gbmap.window;
// and mark our gbmap as rebuildable if known window does not
// and mark our gbmap as repopulatable if known window does not
// include the entire disk
//
// unfortunately the use of block allocation during gbmap
// rebuilds means this almost never happens
// repops means the known window almost never includes the
// entire disk
if (lfs3->gbmap.known < lfs3->block_count) {
lfs3->flags |= LFS3_I_REBUILDGBMAP;
lfs3->flags |= LFS3_I_REPOPGBMAP;
}
#endif
@ -16346,8 +16346,8 @@ int lfs3_mount(lfs3_t *lfs3, uint32_t flags,
#ifdef LFS3_YES_LOOKAHEAD
flags |= LFS3_M_LOOKAHEAD;
#endif
#ifdef LFS3_YES_REBUILDGBMAP
flags |= LFS3_YES_REBUILDGBMAP;
#ifdef LFS3_YES_REPOPGBMAP
flags |= LFS3_YES_REPOPGBMAP;
#endif
#ifdef LFS3_YES_COMPACT
flags |= LFS3_M_COMPACT;
@ -16374,14 +16374,14 @@ int lfs3_mount(lfs3_t *lfs3, uint32_t flags,
| LFS3_IFDEF_RDONLY(0, LFS3_M_MKCONSISTENT)
| LFS3_IFDEF_RDONLY(0, LFS3_M_LOOKAHEAD)
| LFS3_IFDEF_RDONLY(0,
LFS3_IFDEF_GBMAP(LFS3_M_REBUILDGBMAP, 0))
LFS3_IFDEF_GBMAP(LFS3_M_REPOPGBMAP, 0))
| LFS3_IFDEF_RDONLY(0, LFS3_M_COMPACT)
| LFS3_M_CKMETA
| LFS3_M_CKDATA)) == 0);
// these flags require a writable filesystem
LFS3_ASSERT(!lfs3_m_isrdonly(flags) || !lfs3_t_ismkconsistent(flags));
LFS3_ASSERT(!lfs3_m_isrdonly(flags) || !lfs3_t_islookahead(flags));
LFS3_ASSERT(!lfs3_m_isrdonly(flags) || !lfs3_t_isrebuildgbmap(flags));
LFS3_ASSERT(!lfs3_m_isrdonly(flags) || !lfs3_t_isrepopgbmap(flags));
LFS3_ASSERT(!lfs3_m_isrdonly(flags) || !lfs3_t_iscompact(flags));
int err = lfs3_init(lfs3,
@ -16411,7 +16411,7 @@ int lfs3_mount(lfs3_t *lfs3, uint32_t flags,
LFS3_IFDEF_RDONLY(0, LFS3_M_MKCONSISTENT)
| LFS3_IFDEF_RDONLY(0, LFS3_M_LOOKAHEAD)
| LFS3_IFDEF_RDONLY(0,
LFS3_IFDEF_GBMAP(LFS3_M_REBUILDGBMAP, 0))
LFS3_IFDEF_GBMAP(LFS3_M_REPOPGBMAP, 0))
| LFS3_IFDEF_RDONLY(0, LFS3_M_COMPACT)
| LFS3_M_CKMETA
| LFS3_M_CKDATA)) {
@ -16421,7 +16421,7 @@ int lfs3_mount(lfs3_t *lfs3, uint32_t flags,
LFS3_IFDEF_RDONLY(0, LFS3_M_MKCONSISTENT)
| LFS3_IFDEF_RDONLY(0, LFS3_M_LOOKAHEAD)
| LFS3_IFDEF_RDONLY(0,
LFS3_IFDEF_GBMAP(LFS3_M_REBUILDGBMAP, 0))
LFS3_IFDEF_GBMAP(LFS3_M_REPOPGBMAP, 0))
| LFS3_IFDEF_RDONLY(0, LFS3_M_COMPACT)
| LFS3_M_CKMETA
| LFS3_M_CKDATA),
@ -16765,7 +16765,7 @@ int lfs3_fs_stat(lfs3_t *lfs3, struct lfs3_fsinfo *fsinfo) {
| LFS3_IFDEF_RDONLY(0, LFS3_I_MKCONSISTENT)
| LFS3_IFDEF_RDONLY(0, LFS3_I_LOOKAHEAD)
| LFS3_IFDEF_RDONLY(0,
LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, 0))
LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, 0))
| LFS3_IFDEF_RDONLY(0, LFS3_I_COMPACT)
| LFS3_I_CKMETA
| LFS3_I_CKDATA
@ -17034,18 +17034,18 @@ static int lfs3_fs_gc_(lfs3_t *lfs3, lfs3_mgc_t *mgc,
LFS3_IFDEF_RDONLY(0, LFS3_T_MKCONSISTENT)
| LFS3_IFDEF_RDONLY(0, LFS3_T_LOOKAHEAD)
| LFS3_IFDEF_RDONLY(0,
LFS3_IFDEF_GBMAP(LFS3_T_REBUILDGBMAP, 0))
LFS3_IFDEF_GBMAP(LFS3_T_REPOPGBMAP, 0))
| LFS3_IFDEF_RDONLY(0, LFS3_T_COMPACT)
| LFS3_T_CKMETA
| LFS3_T_CKDATA)) == 0);
// these flags require a writable filesystem
LFS3_ASSERT(!lfs3_m_isrdonly(lfs3->flags) || !lfs3_t_ismkconsistent(flags));
LFS3_ASSERT(!lfs3_m_isrdonly(lfs3->flags) || !lfs3_t_islookahead(flags));
LFS3_ASSERT(!lfs3_m_isrdonly(lfs3->flags) || !lfs3_t_isrebuildgbmap(flags));
LFS3_ASSERT(!lfs3_m_isrdonly(lfs3->flags) || !lfs3_t_isrepopgbmap(flags));
LFS3_ASSERT(!lfs3_m_isrdonly(lfs3->flags) || !lfs3_t_iscompact(flags));
// some flags don't make sense when only traversing the mtree
LFS3_ASSERT(!lfs3_t_ismtreeonly(flags) || !lfs3_t_islookahead(flags));
LFS3_ASSERT(!lfs3_t_ismtreeonly(flags) || !lfs3_t_isrebuildgbmap(flags));
LFS3_ASSERT(!lfs3_t_ismtreeonly(flags) || !lfs3_t_isrepopgbmap(flags));
LFS3_ASSERT(!lfs3_t_ismtreeonly(flags) || !lfs3_t_isckdata(flags));
// fix pending grms if requested
@ -17065,7 +17065,7 @@ static int lfs3_fs_gc_(lfs3_t *lfs3, lfs3_mgc_t *mgc,
LFS3_IFDEF_RDONLY(0, LFS3_I_MKCONSISTENT)
| LFS3_IFDEF_RDONLY(0, LFS3_I_LOOKAHEAD)
| LFS3_IFDEF_RDONLY(0,
LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, 0))
LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, 0))
| LFS3_IFDEF_RDONLY(0, LFS3_I_COMPACT)
| LFS3_I_CKMETA
| LFS3_I_CKDATA)));
@ -17082,7 +17082,7 @@ static int lfs3_fs_gc_(lfs3_t *lfs3, lfs3_mgc_t *mgc,
if (lfs3_t_isckpointed(mgc->t.b.h.flags)) {
mgc->t.b.h.flags &= ~LFS3_T_LOOKAHEAD;
#ifdef LFS3_GBMAP
mgc->t.b.h.flags &= ~LFS3_T_REBUILDGBMAP;
mgc->t.b.h.flags &= ~LFS3_T_REPOPGBMAP;
#endif
}
#endif
@ -17092,7 +17092,7 @@ static int lfs3_fs_gc_(lfs3_t *lfs3, lfs3_mgc_t *mgc,
LFS3_IFDEF_RDONLY(0, LFS3_T_MKCONSISTENT)
| LFS3_IFDEF_RDONLY(0, LFS3_T_LOOKAHEAD)
| LFS3_IFDEF_RDONLY(0,
LFS3_IFDEF_GBMAP(LFS3_T_REBUILDGBMAP, 0))
LFS3_IFDEF_GBMAP(LFS3_T_REPOPGBMAP, 0))
| LFS3_IFDEF_RDONLY(0, LFS3_T_COMPACT)
| LFS3_T_CKMETA
| LFS3_T_CKDATA))) {
@ -17104,7 +17104,7 @@ static int lfs3_fs_gc_(lfs3_t *lfs3, lfs3_mgc_t *mgc,
if (!(mgc->t.b.h.flags & (
LFS3_IFDEF_RDONLY(0, LFS3_T_LOOKAHEAD)
| LFS3_IFDEF_RDONLY(0,
LFS3_IFDEF_GBMAP(LFS3_T_REBUILDGBMAP, 0))
LFS3_IFDEF_GBMAP(LFS3_T_REPOPGBMAP, 0))
| LFS3_T_CKMETA
| LFS3_T_CKDATA))) {
mgc->t.b.h.flags |= LFS3_T_MTREEONLY;
@ -17127,7 +17127,7 @@ static int lfs3_fs_gc_(lfs3_t *lfs3, lfs3_mgc_t *mgc,
LFS3_IFDEF_RDONLY(0, LFS3_I_MKCONSISTENT)
| LFS3_IFDEF_RDONLY(0, LFS3_I_LOOKAHEAD)
| LFS3_IFDEF_RDONLY(0,
LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, 0))
LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, 0))
| LFS3_IFDEF_RDONLY(0, LFS3_I_COMPACT)
| LFS3_I_CKMETA
| LFS3_I_CKDATA);
@ -17162,7 +17162,7 @@ int lfs3_fs_unck(lfs3_t *lfs3, uint32_t flags) {
LFS3_IFDEF_RDONLY(0, LFS3_I_MKCONSISTENT)
| LFS3_IFDEF_RDONLY(0, LFS3_I_LOOKAHEAD)
| LFS3_IFDEF_RDONLY(0,
LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, 0))
LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, 0))
| LFS3_IFDEF_RDONLY(0, LFS3_I_COMPACT)
| LFS3_I_CKMETA
| LFS3_I_CKDATA)) == 0);
@ -17235,7 +17235,7 @@ int lfs3_fs_grow(lfs3_t *lfs3, lfs3_size_t block_count_) {
}
// checkpoint the lookahead buffer, but _not_ the gbmap, we
// cann't rebuild the gbmap until we've resized it
// can't repop the gbmap until we've resized it
lfs3_alloc_ckpoint_(lfs3);
// we don't need a copy because this is atomic, and mdir commit
@ -17297,10 +17297,9 @@ int lfs3_fs_mkgbmap(lfs3_t *lfs3) {
return err;
}
// create an empty gbmap
// create an empty gbmap, let lfs3_alloc_ckpoint populate it
lfs3_gbmap_init(&lfs3->gbmap);
// start with everything free, rebuilding the gbmap will populate it
err = lfs3_gbmap_commit(lfs3, &lfs3->gbmap.b, 0, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_BMFREE, +lfs3->block_count)));
if (err) {
@ -17315,7 +17314,8 @@ int lfs3_fs_mkgbmap(lfs3_t *lfs3) {
lfs3->gbmap.window = (lfs3->lookahead.window + lfs3->lookahead.off)
% lfs3->block_count;
// checkpoint the allocator again, this should trigger a rebuild
// checkpoint the allocator again, this should trigger a
// repopulation scan
err = lfs3_alloc_ckpoint(lfs3);
if (err) {
goto failed;
@ -17394,7 +17394,7 @@ int lfs3_trv_open(lfs3_t *lfs3, lfs3_trv_t *trv, uint32_t flags) {
| LFS3_IFDEF_RDONLY(0, LFS3_T_MKCONSISTENT)
| LFS3_IFDEF_RDONLY(0, LFS3_T_LOOKAHEAD)
| LFS3_IFDEF_RDONLY(0,
LFS3_IFDEF_GBMAP(LFS3_T_REBUILDGBMAP, 0))
LFS3_IFDEF_GBMAP(LFS3_T_REPOPGBMAP, 0))
| LFS3_IFDEF_RDONLY(0, LFS3_T_COMPACT)
| LFS3_T_CKMETA
| LFS3_T_CKDATA)) == 0);
@ -17403,11 +17403,11 @@ int lfs3_trv_open(lfs3_t *lfs3, lfs3_trv_t *trv, uint32_t flags) {
// these flags require a writable traversal
LFS3_ASSERT(!lfs3_t_isrdonly(flags) || !lfs3_t_ismkconsistent(flags));
LFS3_ASSERT(!lfs3_t_isrdonly(flags) || !lfs3_t_islookahead(flags));
LFS3_ASSERT(!lfs3_t_isrdonly(flags) || !lfs3_t_isrebuildgbmap(flags));
LFS3_ASSERT(!lfs3_t_isrdonly(flags) || !lfs3_t_isrepopgbmap(flags));
LFS3_ASSERT(!lfs3_t_isrdonly(flags) || !lfs3_t_iscompact(flags));
// some flags don't make sense when only traversing the mtree
LFS3_ASSERT(!lfs3_t_ismtreeonly(flags) || !lfs3_t_islookahead(flags));
LFS3_ASSERT(!lfs3_t_ismtreeonly(flags) || !lfs3_t_isrebuildgbmap(flags));
LFS3_ASSERT(!lfs3_t_ismtreeonly(flags) || !lfs3_t_isrepopgbmap(flags));
LFS3_ASSERT(!lfs3_t_ismtreeonly(flags) || !lfs3_t_isckdata(flags));
// setup traversal state

33
lfs3.h
View File

@ -237,8 +237,8 @@ enum lfs3_type {
0x00000200 // Populate lookahead buffer
#endif
#if !defined(LFS3_RDONLY) && defined(LFS3_GBMAP)
#define LFS3_M_REBUILDGBMAP \
0x00000400 // Rebuild the gbmap
#define LFS3_M_REPOPGBMAP \
0x00000400 // Repopulate the gbmap
#endif
#ifndef LFS3_RDONLY
#define LFS3_M_COMPACT 0x00000800 // Compact metadata logs
@ -282,7 +282,7 @@ enum lfs3_type {
0x00000200 // Lookahead buffer is not full
#endif
#if !defined(LFS3_RDONLY) && defined(LFS3_GBMAP)
#define LFS3_I_REBUILDGBMAP \
#define LFS3_I_REPOPGBMAP \
0x00000400 // The gbmap is not full
#endif
#ifndef LFS3_RDONLY
@ -327,8 +327,8 @@ enum lfs3_btype {
0x00000200 // Populate lookahead buffer
#endif
#if !defined(LFS3_RDONLY) && defined(LFS3_GBMAP)
#define LFS3_T_REBUILDGBMAP \
0x00000400 // Rebuild the gbmap
#define LFS3_T_REPOPGBMAP \
0x00000400 // Repopulate the gbmap
#endif
#ifndef LFS3_RDONLY
#define LFS3_T_COMPACT 0x00000800 // Compact metadata logs
@ -356,8 +356,8 @@ enum lfs3_btype {
0x00000200 // Populate lookahead buffer
#endif
#if !defined(LFS3_RDONLY) && defined(LFS3_GBMAP)
#define LFS3_GC_REBUILDGBMAP \
0x00000400 // Rebuild the gbmap
#define LFS3_GC_REPOPGBMAP \
0x00000400 // Repopulate the gbmap
#endif
#ifndef LFS3_RDONLY
#define LFS3_GC_COMPACT 0x00000800 // Compact metadata logs
@ -564,16 +564,17 @@ struct lfs3_cfg {
lfs3_size_t crystal_thresh;
#endif
// Threshold for when to rebuild the global on-disk block-map (gbmap).
// littlefs will attempt to rebuild the gbmap when fewer than this
// many blocks are known. Larger values rebuild the gbmap more
// frequently, reducing the chance of falling back to a slower
// allocator at the cost of amortized allocator throughput.
// Threshold for when to repopulate the global on-disk block-map
// (gbmap). When <= this many blocks have a known state, littlefs
// will traverse the filesystem and attempt to repopulate the gbmap.
// Smaller values decrease repop frequency and improves overall
// allocator throughput, at the risk of needing to fallback to the
// slower lookahead allocator when empty.
//
// 0 only rebuilds the gbmap when empty, but note rebuilding the
// gbmap may require allocating blocks.
// 0 only repopulates the gbmap when empty, minimizing gbmap
// repops but may introduce large latency spikes.
#ifdef LFS3_GBMAP
lfs3_block_t gbmap_rebuild_thresh;
lfs3_block_t gbmap_repop_thresh;
#endif
};
@ -837,7 +838,7 @@ typedef struct lfs3_mgc {
lfs3_mtrv_t t;
#ifdef LFS3_GBMAP
// rebuild gbmap when traversing with rebuildgbmap
// repopulate gbmap when traversing with repopgbmap
lfs3_btree_t gbmap_;
#endif
} lfs3_mgc_t;

View File

@ -120,7 +120,7 @@ void bench_permutation(size_t i, uint32_t *buffer, size_t size);
BENCH_DEFINE(INLINE_SIZE, BLOCK_SIZE/4 ) \
BENCH_DEFINE(FRAGMENT_SIZE, LFS3_MIN(BLOCK_SIZE/8, 512) ) \
BENCH_DEFINE(CRYSTAL_THRESH, BLOCK_SIZE/8 ) \
BENCH_DEFINE(GBMAP_REBUILD_THRESH, BLOCK_COUNT/4 ) \
BENCH_DEFINE(GBMAP_REPOP_THRESH, BLOCK_COUNT/4 ) \
BENCH_DEFINE(ERASE_VALUE, 0xff ) \
BENCH_DEFINE(ERASE_CYCLES, 0 ) \
BENCH_DEFINE(BADBLOCK_BEHAVIOR, LFS3_EMUBD_BADBLOCK_PROGERROR ) \
@ -154,7 +154,7 @@ void bench_permutation(size_t i, uint32_t *buffer, size_t size);
#ifdef LFS3_GBMAP
#define BENCH_GBMAP_CFG \
.gbmap_rebuild_thresh = GBMAP_REBUILD_THRESH,
.gbmap_repop_thresh = GBMAP_REPOP_THRESH,
#else
#define BENCH_GBMAP_CFG
#endif

View File

@ -111,7 +111,7 @@ void test_permutation(size_t i, uint32_t *buffer, size_t size);
TEST_DEFINE(INLINE_SIZE, BLOCK_SIZE/4 ) \
TEST_DEFINE(FRAGMENT_SIZE, LFS3_MIN(BLOCK_SIZE/8, 512) ) \
TEST_DEFINE(CRYSTAL_THRESH, BLOCK_SIZE/8 ) \
TEST_DEFINE(GBMAP_REBUILD_THRESH, BLOCK_COUNT/4 ) \
TEST_DEFINE(GBMAP_REPOP_THRESH, BLOCK_COUNT/4 ) \
TEST_DEFINE(ERASE_VALUE, 0xff ) \
TEST_DEFINE(ERASE_CYCLES, 0 ) \
TEST_DEFINE(BADBLOCK_BEHAVIOR, LFS3_EMUBD_BADBLOCK_PROGERROR ) \
@ -145,7 +145,7 @@ void test_permutation(size_t i, uint32_t *buffer, size_t size);
#ifdef LFS3_GBMAP
#define TEST_GBMAP_CFG \
.gbmap_rebuild_thresh = GBMAP_REBUILD_THRESH,
.gbmap_repop_thresh = GBMAP_REPOP_THRESH,
#else
#define TEST_GBMAP_CFG
#endif

View File

@ -90,7 +90,7 @@ FLAGS = [
('M_MKCONSISTENT', 0x00000100, "Make the filesystem consistent" ),
('M_LOOKAHEAD', 0x00000200, "Populate lookahead buffer" ),
('M_REBUILDGBMAP', 0x00000400, "Rebuild the gbmap" ),
('M_REPOPGBMAP', 0x00000400, "Repopulate the gbmap" ),
('M_COMPACT', 0x00000800, "Compact metadata logs" ),
('M_CKMETA', 0x00001000, "Check metadata checksums" ),
('M_CKDATA', 0x00002000, "Check metadata + data checksums" ),
@ -98,7 +98,7 @@ FLAGS = [
# GC flags
('GC_MKCONSISTENT',0x00000100, "Make the filesystem consistent" ),
('GC_LOOKAHEAD', 0x00000200, "Populate lookahead buffer" ),
('GC_REBUILDGBMAP',0x00000400, "Rebuild the gbmap" ),
('GC_REPOPGBMAP', 0x00000400, "Repopulate the gbmap" ),
('GC_COMPACT', 0x00000800, "Compact metadata logs" ),
('GC_CKMETA', 0x00001000, "Check metadata checksums" ),
('GC_CKDATA', 0x00002000, "Check metadata + data checksums" ),
@ -116,7 +116,7 @@ FLAGS = [
('I_MKCONSISTENT', 0x00000100, "Filesystem needs mkconsistent to write" ),
('I_LOOKAHEAD', 0x00000200, "Lookahead buffer is not full" ),
('I_REBUILDGBMAP', 0x00000400, "The gbmap is not full" ),
('I_REPOPGBMAP', 0x00000400, "The gbmap is not full" ),
('I_COMPACT', 0x00000800, "Filesystem may have uncompacted metadata" ),
('I_CKMETA', 0x00001000, "Metadata checksums not checked recently" ),
('I_CKDATA', 0x00002000, "Data checksums not checked recently" ),
@ -135,7 +135,7 @@ FLAGS = [
('T_MKCONSISTENT',
0x00000100, "Make the filesystem consistent" ),
('T_LOOKAHEAD', 0x00000200, "Populate lookahead buffer" ),
('T_REBUILDGBMAP', 0x00000400, "Rebuild the gbmap" ),
('T_REPOPGBMAP', 0x00000400, "Repopulate the gbmap" ),
('T_COMPACT', 0x00000800, "Compact metadata logs" ),
('T_CKMETA', 0x00001000, "Check metadata checksums" ),
('T_CKDATA', 0x00002000, "Check metadata + data checksums" ),

View File

@ -162,13 +162,13 @@ code = '''
'''
# test that rebuildgbmap can make progress in isolation
[cases.test_gc_rebuildgbmap_progress]
# test that repopgbmap can make progress in isolation
[cases.test_gc_repopgbmap_progress]
defines.LOOKAHEAD = [false, true]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.GC_FLAGS = '''
LFS3_GC_REBUILDGBMAP
LFS3_GC_REPOPGBMAP
| ((LOOKAHEAD) ? LFS3_GC_LOOKAHEAD : 0)
| ((CKMETA) ? LFS3_GC_CKMETA : 0)
| ((CKDATA) ? LFS3_GC_CKDATA : 0)
@ -206,7 +206,7 @@ code = '''
// expect dirty initial state or else our test doesn't work
struct lfs3_fsinfo fsinfo;
lfs3_fs_stat(&lfs3, &fsinfo) => 0;
assert(fsinfo.flags & LFS3_I_REBUILDGBMAP);
assert(fsinfo.flags & LFS3_I_REPOPGBMAP);
assert(lfs3.handles != &lfs3.gc.gc.t.b.h);
// run GC until we make progress
@ -217,7 +217,7 @@ code = '''
lfs3_fs_gc(&lfs3) => 0;
lfs3_fs_stat(&lfs3, &fsinfo) => 0;
if (!(fsinfo.flags & LFS3_I_REBUILDGBMAP)) {
if (!(fsinfo.flags & LFS3_I_REPOPGBMAP)) {
break;
}
}
@ -232,13 +232,13 @@ code = '''
lfs3_unmount(&lfs3) => 0;
'''
# test that rebuildgbmap dirtying still works with the GC API
[cases.test_gc_rebuildgbmap_mutation]
# test that repopgbmap dirtying still works with the GC API
[cases.test_gc_repopgbmap_mutation]
defines.LOOKAHEAD = [false, true]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.GC_FLAGS = '''
LFS3_GC_REBUILDGBMAP
LFS3_GC_REPOPGBMAP
| ((LOOKAHEAD) ? LFS3_GC_LOOKAHEAD : 0)
| ((CKMETA) ? LFS3_GC_CKMETA : 0)
| ((CKDATA) ? LFS3_GC_CKDATA : 0)
@ -279,7 +279,7 @@ code = '''
// expect dirty initial state or else our test doesn't work
struct lfs3_fsinfo fsinfo;
lfs3_fs_stat(&lfs3, &fsinfo) => 0;
assert(fsinfo.flags & LFS3_I_REBUILDGBMAP);
assert(fsinfo.flags & LFS3_I_REPOPGBMAP);
assert(lfs3.handles != &lfs3.gc.gc.t.b.h);
// run GC one step
@ -302,7 +302,7 @@ code = '''
// we should _not_ make progress
lfs3_fs_stat(&lfs3, &fsinfo) => 0;
assert(fsinfo.flags & LFS3_I_REBUILDGBMAP);
assert(fsinfo.flags & LFS3_I_REPOPGBMAP);
// check the file contents
lfs3_file_open(&lfs3, &file, "spider", LFS3_O_RDONLY) => 0;
@ -1599,14 +1599,14 @@ done:;
defines.AFTER = [0, 1, 2, 3]
defines.MKCONSISTENT = [false, true]
defines.LOOKAHEAD = [false, true]
defines.REBUILDGBMAP = [false, true]
defines.REPOPGBMAP = [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)
| ((REBUILDGBMAP) ? LFS3_IFDEF_GBMAP(LFS3_GC_REBUILDGBMAP, -1) : 0)
| ((REPOPGBMAP) ? LFS3_IFDEF_GBMAP(LFS3_GC_REPOPGBMAP, -1) : 0)
| ((COMPACT) ? LFS3_GC_COMPACT : 0)
| ((CKMETA) ? LFS3_GC_CKMETA : 0)
| ((CKDATA) ? LFS3_GC_CKDATA : 0)
@ -1625,7 +1625,7 @@ defines.SIZE = [
if = [
'(SIZE*N)/BLOCK_SIZE <= 32',
'LFS3_IFDEF_GC(true, AFTER != 0)',
'GBMAP || !REBUILDGBMAP',
'GBMAP || !REPOPGBMAP',
]
code = '''
lfs3_t lfs3;
@ -1664,7 +1664,7 @@ code = '''
LFS3_I_MKCONSISTENT
| LFS3_I_LOOKAHEAD
| ((GBMAP)
? (LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1)
? (LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1)
& fsinfo.flags)
: 0)
| LFS3_I_COMPACT
@ -1688,8 +1688,8 @@ code = '''
if (!(fsinfo.flags & (
((MKCONSISTENT) ? LFS3_I_MKCONSISTENT : 0)
| ((LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0)
| ((REBUILDGBMAP)
? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1)
| ((REPOPGBMAP)
? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1)
: 0)
| ((COMPACT) ? LFS3_I_COMPACT : 0)
| ((CKMETA) ? LFS3_I_CKMETA : 0)
@ -1720,8 +1720,8 @@ code = '''
if (!(fsinfo.flags & (
((MKCONSISTENT) ? LFS3_I_MKCONSISTENT : 0)
| ((LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0)
| ((REBUILDGBMAP)
? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1)
| ((REPOPGBMAP)
? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1)
: 0)
| ((COMPACT) ? LFS3_I_COMPACT : 0)
| ((CKMETA) ? LFS3_I_CKMETA : 0)
@ -1750,11 +1750,11 @@ code = '''
}
#ifdef LFS3_GBMAP
if (REBUILDGBMAP && (fsinfo.flags & LFS3_I_REBUILDGBMAP)) {
if (REPOPGBMAP && (fsinfo.flags & LFS3_I_REPOPGBMAP)) {
// we need an explicit traversal for this
lfs3_trv_t trv;
lfs3_trv_open(&lfs3, &trv,
LFS3_T_RDWR | LFS3_T_REBUILDGBMAP) => 0;
LFS3_T_RDWR | LFS3_T_REPOPGBMAP) => 0;
while (true) {
struct lfs3_tinfo tinfo;
int err = lfs3_trv_read(&lfs3, &trv, &tinfo);
@ -1806,9 +1806,9 @@ code = '''
assert(fsinfo.flags == (
((!MKCONSISTENT) ? LFS3_I_MKCONSISTENT : 0)
| ((!LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0)
| ((!REBUILDGBMAP)
| ((!REPOPGBMAP)
? ((GBMAP)
? (LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1)
? (LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1)
& fsinfo.flags)
: 0)
: 0)
@ -1830,14 +1830,14 @@ code = '''
defines.AFTER = [0, 1, 2, 3]
defines.MKCONSISTENT = [false, true]
defines.LOOKAHEAD = [false, true]
defines.REBUILDGBMAP = [false, true]
defines.REPOPGBMAP = [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)
| ((REBUILDGBMAP) ? LFS3_IFDEF_GBMAP(LFS3_GC_REBUILDGBMAP, -1) : 0)
| ((REPOPGBMAP) ? LFS3_IFDEF_GBMAP(LFS3_GC_REPOPGBMAP, -1) : 0)
| ((COMPACT) ? LFS3_GC_COMPACT : 0)
| ((CKMETA) ? LFS3_GC_CKMETA : 0)
| ((CKDATA) ? LFS3_GC_CKDATA : 0)
@ -1856,7 +1856,7 @@ defines.SIZE = [
if = [
'(SIZE*N)/BLOCK_SIZE <= 32',
'LFS3_IFDEF_GC(true, AFTER != 0)',
'GBMAP || !REBUILDGBMAP',
'GBMAP || !REPOPGBMAP',
]
code = '''
lfs3_t lfs3;
@ -1895,7 +1895,7 @@ code = '''
LFS3_I_MKCONSISTENT
| LFS3_I_LOOKAHEAD
| ((GBMAP)
? (LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1)
? (LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1)
& fsinfo.flags)
: 0)
| LFS3_I_COMPACT
@ -1919,8 +1919,8 @@ code = '''
if (!(fsinfo.flags & (
((MKCONSISTENT) ? LFS3_I_MKCONSISTENT : 0)
| ((LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0)
| ((REBUILDGBMAP)
? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1)
| ((REPOPGBMAP)
? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1)
: 0)
| ((COMPACT) ? LFS3_I_COMPACT : 0)
| ((CKMETA) ? LFS3_I_CKMETA : 0)
@ -1951,8 +1951,8 @@ code = '''
if (!(fsinfo.flags & (
((MKCONSISTENT) ? LFS3_I_MKCONSISTENT : 0)
| ((LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0)
| ((REBUILDGBMAP)
? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1)
| ((REPOPGBMAP)
? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1)
: 0)
| ((COMPACT) ? LFS3_I_COMPACT : 0)
| ((CKMETA) ? LFS3_I_CKMETA : 0)
@ -1981,11 +1981,11 @@ code = '''
}
#ifdef LFS3_GBMAP
if (REBUILDGBMAP && (fsinfo.flags & LFS3_I_REBUILDGBMAP)) {
if (REPOPGBMAP && (fsinfo.flags & LFS3_I_REPOPGBMAP)) {
// we need an explicit traversal for this
lfs3_trv_t trv;
lfs3_trv_open(&lfs3, &trv,
LFS3_T_RDWR | LFS3_T_REBUILDGBMAP) => 0;
LFS3_T_RDWR | LFS3_T_REPOPGBMAP) => 0;
while (true) {
struct lfs3_tinfo tinfo;
int err = lfs3_trv_read(&lfs3, &trv, &tinfo);
@ -2037,9 +2037,9 @@ code = '''
assert(fsinfo.flags == (
((!MKCONSISTENT) ? LFS3_I_MKCONSISTENT : 0)
| ((!LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0)
| ((!REBUILDGBMAP)
| ((!REPOPGBMAP)
? ((GBMAP)
? (LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1)
? (LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1)
& fsinfo.flags)
: 0)
: 0)
@ -2057,10 +2057,10 @@ code = '''
assert(fsinfo.flags == (
LFS3_I_MKCONSISTENT
| LFS3_I_LOOKAHEAD
| ((REBUILDGBMAP)
? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1U)
| ((REPOPGBMAP)
? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1U)
: (GBMAP)
? (LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1)
? (LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1)
& fsinfo.flags)
: 0)
| LFS3_I_COMPACT
@ -2086,8 +2086,8 @@ code = '''
if (!(fsinfo.flags & (
((MKCONSISTENT) ? LFS3_I_MKCONSISTENT : 0)
| ((LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0)
| ((REBUILDGBMAP)
? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1)
| ((REPOPGBMAP)
? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1)
: 0)
| ((COMPACT) ? LFS3_I_COMPACT : 0)
| ((CKMETA) ? LFS3_I_CKMETA : 0)
@ -2118,8 +2118,8 @@ code = '''
if (!(fsinfo.flags & (
((MKCONSISTENT) ? LFS3_I_MKCONSISTENT : 0)
| ((LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0)
| ((REBUILDGBMAP)
? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1)
| ((REPOPGBMAP)
? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1)
: 0)
| ((COMPACT) ? LFS3_I_COMPACT : 0)
| ((CKMETA) ? LFS3_I_CKMETA : 0)
@ -2148,11 +2148,11 @@ code = '''
}
#ifdef LFS3_GBMAP
if (REBUILDGBMAP && (fsinfo.flags & LFS3_I_REBUILDGBMAP)) {
if (REPOPGBMAP && (fsinfo.flags & LFS3_I_REPOPGBMAP)) {
// we need an explicit traversal for this
lfs3_trv_t trv;
lfs3_trv_open(&lfs3, &trv,
LFS3_T_RDWR | LFS3_T_REBUILDGBMAP) => 0;
LFS3_T_RDWR | LFS3_T_REPOPGBMAP) => 0;
while (true) {
struct lfs3_tinfo tinfo;
int err = lfs3_trv_read(&lfs3, &trv, &tinfo);
@ -2204,9 +2204,9 @@ code = '''
assert(fsinfo.flags == (
((!MKCONSISTENT) ? LFS3_I_MKCONSISTENT : 0)
| ((!LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0)
| ((!REBUILDGBMAP)
| ((!REPOPGBMAP)
? ((GBMAP)
? (LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1)
? (LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1)
& fsinfo.flags)
: 0)
: 0)
@ -2225,14 +2225,14 @@ code = '''
defines.N = 100
defines.MKCONSISTENT = [false, true]
defines.LOOKAHEAD = [false, true]
defines.REBUILDGBMAP = [false, true]
defines.REPOPGBMAP = [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)
| ((REBUILDGBMAP) ? LFS3_IFDEF_GBMAP(LFS3_GC_REBUILDGBMAP, -1) : 0)
| ((REPOPGBMAP) ? LFS3_IFDEF_GBMAP(LFS3_GC_REPOPGBMAP, -1) : 0)
| ((COMPACT) ? LFS3_GC_COMPACT : 0)
| ((CKMETA) ? LFS3_GC_CKMETA : 0)
| ((CKDATA) ? LFS3_GC_CKDATA : 0)
@ -2248,7 +2248,7 @@ defines.SIZE = [
'2*BLOCK_SIZE',
'8*BLOCK_SIZE',
]
if = 'GBMAP || !REBUILDGBMAP'
if = 'GBMAP || !REPOPGBMAP'
ifdef = 'LFS3_GC'
code = '''
lfs3_t lfs3;
@ -2300,14 +2300,14 @@ code = '''
defines.N = 100
defines.MKCONSISTENT = [false, true]
defines.LOOKAHEAD = [false, true]
defines.REBUILDGBMAP = [false, true]
defines.REPOPGBMAP = [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)
| ((REBUILDGBMAP) ? LFS3_IFDEF_GBMAP(LFS3_GC_REBUILDGBMAP, -1) : 0)
| ((REPOPGBMAP) ? LFS3_IFDEF_GBMAP(LFS3_GC_REPOPGBMAP, -1) : 0)
| ((COMPACT) ? LFS3_GC_COMPACT : 0)
| ((CKMETA) ? LFS3_GC_CKMETA : 0)
| ((CKDATA) ? LFS3_GC_CKDATA : 0)
@ -2323,7 +2323,7 @@ defines.SIZE = [
'2*BLOCK_SIZE',
'8*BLOCK_SIZE',
]
if = 'GBMAP || !REBUILDGBMAP'
if = 'GBMAP || !REPOPGBMAP'
ifdef = 'LFS3_GC'
code = '''
lfs3_t lfs3;
@ -2382,7 +2382,7 @@ code = '''
[cases.test_gc_spam_dir_many]
defines.MKCONSISTENT = [false, true]
defines.LOOKAHEAD = [false, true]
defines.REBUILDGBMAP = [false, true]
defines.REPOPGBMAP = [false, true]
defines.COMPACT = [false, true]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
@ -2390,7 +2390,7 @@ defines.UNCK = [false, true]
defines.GC_FLAGS = '''
((MKCONSISTENT) ? LFS3_GC_MKCONSISTENT : 0)
| ((LOOKAHEAD) ? LFS3_GC_LOOKAHEAD : 0)
| ((REBUILDGBMAP) ? LFS3_IFDEF_GBMAP(LFS3_GC_REBUILDGBMAP, -1) : 0)
| ((REPOPGBMAP) ? LFS3_IFDEF_GBMAP(LFS3_GC_REPOPGBMAP, -1) : 0)
| ((COMPACT) ? LFS3_GC_COMPACT : 0)
| ((CKMETA) ? LFS3_GC_CKMETA : 0)
| ((CKDATA) ? LFS3_GC_CKDATA : 0)
@ -2399,7 +2399,7 @@ defines.GC_STEPS = [-1, 1, 2, 10, 100, 1000]
# set compact thresh to minimum
defines.GC_COMPACT_THRESH = 'BLOCK_SIZE/2'
defines.N = [1, 2, 4, 8, 16, 32, 64, 128, 256]
if = 'GBMAP || !REBUILDGBMAP'
if = 'GBMAP || !REPOPGBMAP'
ifdef = 'LFS3_GC'
code = '''
// test creating directories
@ -2492,7 +2492,7 @@ code = '''
[cases.test_gc_spam_dir_fuzz]
defines.MKCONSISTENT = [false, true]
defines.LOOKAHEAD = [false, true]
defines.REBUILDGBMAP = [false, true]
defines.REPOPGBMAP = [false, true]
defines.COMPACT = [false, true]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
@ -2500,7 +2500,7 @@ defines.UNCK = [false, true]
defines.GC_FLAGS = '''
((MKCONSISTENT) ? LFS3_GC_MKCONSISTENT : 0)
| ((LOOKAHEAD) ? LFS3_GC_LOOKAHEAD : 0)
| ((REBUILDGBMAP) ? LFS3_IFDEF_GBMAP(LFS3_GC_REBUILDGBMAP, -1) : 0)
| ((REPOPGBMAP) ? LFS3_IFDEF_GBMAP(LFS3_GC_REPOPGBMAP, -1) : 0)
| ((COMPACT) ? LFS3_GC_COMPACT : 0)
| ((CKMETA) ? LFS3_GC_CKMETA : 0)
| ((CKDATA) ? LFS3_GC_CKDATA : 0)
@ -2512,7 +2512,7 @@ defines.N = [1, 2, 4, 8, 16, 32, 64, 128, 256]
defines.OPS = '2*N'
defines.SEED = 42
fuzz = 'SEED'
if = 'GBMAP || !REBUILDGBMAP'
if = 'GBMAP || !REPOPGBMAP'
ifdef = 'LFS3_GC'
code = '''
// test fuzz with dirs
@ -2673,7 +2673,7 @@ code = '''
[cases.test_gc_spam_file_many]
defines.MKCONSISTENT = [false, true]
defines.LOOKAHEAD = [false, true]
defines.REBUILDGBMAP = [false, true]
defines.REPOPGBMAP = [false, true]
defines.COMPACT = [false, true]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
@ -2681,7 +2681,7 @@ defines.UNCK = [false, true]
defines.GC_FLAGS = '''
((MKCONSISTENT) ? LFS3_GC_MKCONSISTENT : 0)
| ((LOOKAHEAD) ? LFS3_GC_LOOKAHEAD : 0)
| ((REBUILDGBMAP) ? LFS3_IFDEF_GBMAP(LFS3_GC_REBUILDGBMAP, -1) : 0)
| ((REPOPGBMAP) ? LFS3_IFDEF_GBMAP(LFS3_GC_REPOPGBMAP, -1) : 0)
| ((COMPACT) ? LFS3_GC_COMPACT : 0)
| ((CKMETA) ? LFS3_GC_CKMETA : 0)
| ((CKDATA) ? LFS3_GC_CKDATA : 0)
@ -2701,7 +2701,7 @@ defines.SIZE = [
]
if = [
'(SIZE*N)/BLOCK_SIZE <= 32',
'GBMAP || !REBUILDGBMAP',
'GBMAP || !REPOPGBMAP',
]
ifdef = 'LFS3_GC'
code = '''
@ -2779,7 +2779,7 @@ code = '''
[cases.test_gc_spam_file_fuzz]
defines.MKCONSISTENT = [false, true]
defines.LOOKAHEAD = [false, true]
defines.REBUILDGBMAP = [false, true]
defines.REPOPGBMAP = [false, true]
defines.COMPACT = [false, true]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
@ -2787,7 +2787,7 @@ defines.UNCK = [false, true]
defines.GC_FLAGS = '''
((MKCONSISTENT) ? LFS3_GC_MKCONSISTENT : 0)
| ((LOOKAHEAD) ? LFS3_GC_LOOKAHEAD : 0)
| ((REBUILDGBMAP) ? LFS3_IFDEF_GBMAP(LFS3_GC_REBUILDGBMAP, -1) : 0)
| ((REPOPGBMAP) ? LFS3_IFDEF_GBMAP(LFS3_GC_REPOPGBMAP, -1) : 0)
| ((COMPACT) ? LFS3_GC_COMPACT : 0)
| ((CKMETA) ? LFS3_GC_CKMETA : 0)
| ((CKDATA) ? LFS3_GC_CKDATA : 0)
@ -2810,7 +2810,7 @@ defines.SEED = 42
fuzz = 'SEED'
if = [
'(SIZE*N)/BLOCK_SIZE <= 16',
'GBMAP || !REBUILDGBMAP',
'GBMAP || !REPOPGBMAP',
]
ifdef = 'LFS3_GC'
code = '''
@ -3024,7 +3024,7 @@ code = '''
[cases.test_gc_spam_fwrite_fuzz]
defines.MKCONSISTENT = [false, true]
defines.LOOKAHEAD = [false, true]
defines.REBUILDGBMAP = [false, true]
defines.REPOPGBMAP = [false, true]
defines.COMPACT = [false, true]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
@ -3032,7 +3032,7 @@ defines.UNCK = [false, true]
defines.GC_FLAGS = '''
((MKCONSISTENT) ? LFS3_GC_MKCONSISTENT : 0)
| ((LOOKAHEAD) ? LFS3_GC_LOOKAHEAD : 0)
| ((REBUILDGBMAP) ? LFS3_IFDEF_GBMAP(LFS3_GC_REBUILDGBMAP, -1) : 0)
| ((REPOPGBMAP) ? LFS3_IFDEF_GBMAP(LFS3_GC_REPOPGBMAP, -1) : 0)
| ((COMPACT) ? LFS3_GC_COMPACT : 0)
| ((CKMETA) ? LFS3_GC_CKMETA : 0)
| ((CKDATA) ? LFS3_GC_CKDATA : 0)
@ -3062,7 +3062,7 @@ if = [
'CHUNK <= SIZE',
# this just saves testing time
'SIZE <= 4*1024*FRAGMENT_SIZE',
'GBMAP || !REBUILDGBMAP',
'GBMAP || !REPOPGBMAP',
]
ifdef = 'LFS3_GC'
code = '''
@ -3187,7 +3187,7 @@ code = '''
[cases.test_gc_spam_uz_fuzz]
defines.MKCONSISTENT = [false, true]
defines.LOOKAHEAD = [false, true]
defines.REBUILDGBMAP = [false, true]
defines.REPOPGBMAP = [false, true]
defines.COMPACT = [false, true]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
@ -3195,7 +3195,7 @@ defines.UNCK = [false, true]
defines.GC_FLAGS = '''
((MKCONSISTENT) ? LFS3_GC_MKCONSISTENT : 0)
| ((LOOKAHEAD) ? LFS3_GC_LOOKAHEAD : 0)
| ((REBUILDGBMAP) ? LFS3_IFDEF_GBMAP(LFS3_GC_REBUILDGBMAP, -1) : 0)
| ((REPOPGBMAP) ? LFS3_IFDEF_GBMAP(LFS3_GC_REPOPGBMAP, -1) : 0)
| ((COMPACT) ? LFS3_GC_COMPACT : 0)
| ((CKMETA) ? LFS3_GC_CKMETA : 0)
| ((CKDATA) ? LFS3_GC_CKDATA : 0)
@ -3218,7 +3218,7 @@ defines.SEED = 42
fuzz = 'SEED'
if = [
'(SIZE*N)/BLOCK_SIZE <= 16',
'GBMAP || !REBUILDGBMAP',
'GBMAP || !REPOPGBMAP',
]
ifdef = 'LFS3_GC'
code = '''
@ -3639,7 +3639,7 @@ code = '''
[cases.test_gc_spam_uzd_fuzz]
defines.MKCONSISTENT = [false, true]
defines.LOOKAHEAD = [false, true]
defines.REBUILDGBMAP = [false, true]
defines.REPOPGBMAP = [false, true]
defines.COMPACT = [false, true]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
@ -3647,7 +3647,7 @@ defines.UNCK = [false, true]
defines.GC_FLAGS = '''
((MKCONSISTENT) ? LFS3_GC_MKCONSISTENT : 0)
| ((LOOKAHEAD) ? LFS3_GC_LOOKAHEAD : 0)
| ((REBUILDGBMAP) ? LFS3_IFDEF_GBMAP(LFS3_GC_REBUILDGBMAP, -1) : 0)
| ((REPOPGBMAP) ? LFS3_IFDEF_GBMAP(LFS3_GC_REPOPGBMAP, -1) : 0)
| ((COMPACT) ? LFS3_GC_COMPACT : 0)
| ((CKMETA) ? LFS3_GC_CKMETA : 0)
| ((CKDATA) ? LFS3_GC_CKDATA : 0)
@ -3670,7 +3670,7 @@ defines.SEED = 42
fuzz = 'SEED'
if = [
'(SIZE*N)/BLOCK_SIZE <= 16',
'GBMAP || !REBUILDGBMAP',
'GBMAP || !REPOPGBMAP',
]
ifdef = 'LFS3_GC'
code = '''

View File

@ -25,7 +25,7 @@ defines.CKMETAPARITY = [false, true]
defines.CKDATACKSUMS = [false, true]
defines.MKCONSISTENT = [false, true]
defines.LOOKAHEAD = [false, true]
defines.REBUILDGBMAP = [false, true]
defines.REPOPGBMAP = [false, true]
defines.COMPACT = [false, true]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
@ -39,8 +39,8 @@ if = [
'LFS3_IFDEF_CKDATACKSUMS(true, !CKDATACKSUMS)',
'!RDONLY || !MKCONSISTENT',
'!RDONLY || !LOOKAHEAD',
'LFS3_IFDEF_YES_GBMAP(true, !REBUILDGBMAP)',
'!RDONLY || !REBUILDGBMAP',
'LFS3_IFDEF_YES_GBMAP(true, !REPOPGBMAP)',
'!RDONLY || !REPOPGBMAP',
'!RDONLY || !COMPACT',
]
code = '''
@ -62,8 +62,8 @@ code = '''
: 0)
| ((MKCONSISTENT) ? LFS3_M_MKCONSISTENT : 0)
| ((LOOKAHEAD) ? LFS3_M_LOOKAHEAD : 0)
| ((REBUILDGBMAP)
? LFS3_IFDEF_GBMAP(LFS3_M_REBUILDGBMAP, -1)
| ((REPOPGBMAP)
? LFS3_IFDEF_GBMAP(LFS3_M_REPOPGBMAP, -1)
: 0)
| ((COMPACT) ? LFS3_M_COMPACT : 0)
| ((CKMETA) ? LFS3_M_CKMETA : 0)
@ -198,7 +198,7 @@ code = '''
lfs3_unmount(&lfs3) => 0;
'''
[cases.test_mount_t_rebuildgbmap]
[cases.test_mount_t_repopgbmap]
ifdef = 'LFS3_GBMAP'
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
@ -243,18 +243,18 @@ code = '''
assert(fsinfo.flags == (
LFS3_I_MKCONSISTENT
| LFS3_I_LOOKAHEAD
| LFS3_I_REBUILDGBMAP
| LFS3_I_REPOPGBMAP
| LFS3_I_COMPACT
| LFS3_I_CKMETA
| LFS3_I_CKDATA
| LFS3_IFDEF_GBMAP(LFS3_I_GBMAP, 0)));
lfs3_unmount(&lfs3) => 0;
// with LFS3_M_REBUILDGBMAP, mount performs a gbmap rebuild
// with LFS3_M_REPOPGBMAP, mount performs a gbmap repop
lfs3_mount(&lfs3,
LFS3_M_RDWR
| LFS3_M_LOOKAHEAD
| LFS3_M_REBUILDGBMAP
| LFS3_M_REPOPGBMAP
| ((CKMETA) ? LFS3_M_CKMETA : 0)
| ((CKDATA) ? LFS3_M_CKDATA : 0),
CFG) => 0;
@ -319,7 +319,7 @@ code = '''
LFS3_I_MKCONSISTENT
| LFS3_I_LOOKAHEAD
| LFS3_IFDEF_YES_GBMAP(
(SIZE >= BLOCK_SIZE/4) ? LFS3_I_REBUILDGBMAP : 0,
(SIZE >= BLOCK_SIZE/4) ? LFS3_I_REPOPGBMAP : 0,
0)
| LFS3_I_COMPACT
| LFS3_I_CKMETA
@ -340,7 +340,7 @@ code = '''
LFS3_I_MKCONSISTENT
| ((!LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0)
| LFS3_IFDEF_YES_GBMAP(
(SIZE >= BLOCK_SIZE/4) ? LFS3_I_REBUILDGBMAP : 0,
(SIZE >= BLOCK_SIZE/4) ? LFS3_I_REPOPGBMAP : 0,
0)
// note ckdata implies ckmeta
| ((!CKMETA && !CKDATA) ? LFS3_I_CKMETA : 0)
@ -429,7 +429,7 @@ code = '''
LFS3_I_MKCONSISTENT
| LFS3_I_LOOKAHEAD
| LFS3_IFDEF_YES_GBMAP(
(ORPHANS >= 100) ? LFS3_I_REBUILDGBMAP : 0,
(ORPHANS >= 100) ? LFS3_I_REPOPGBMAP : 0,
0)
| LFS3_I_COMPACT
| LFS3_I_CKMETA
@ -450,7 +450,7 @@ code = '''
assert(fsinfo.flags == (
((!LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0)
| LFS3_IFDEF_YES_GBMAP(
(ORPHANS >= 100) ? LFS3_I_REBUILDGBMAP : 0,
(ORPHANS >= 100) ? LFS3_I_REPOPGBMAP : 0,
0)
| ((!COMPACT) ? LFS3_I_COMPACT : 0)
// note ckdata implies ckmeta

View File

@ -20,11 +20,11 @@ if = '''
[cases.test_trvs_simple]
defines.MKCONSISTENT = [false, true]
defines.LOOKAHEAD = [false, true]
defines.REBUILDGBMAP = [false, true]
defines.REPOPGBMAP = [false, true]
defines.COMPACT = [false, true]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
if = 'GBMAP || !REBUILDGBMAP'
if = 'GBMAP || !REPOPGBMAP'
code = '''
lfs3_t lfs3;
lfs3_format(&lfs3,
@ -39,8 +39,8 @@ code = '''
LFS3_T_RDWR
| ((MKCONSISTENT) ? LFS3_T_MKCONSISTENT : 0)
| ((LOOKAHEAD) ? LFS3_T_LOOKAHEAD : 0)
| ((REBUILDGBMAP)
? LFS3_IFDEF_GBMAP(LFS3_T_REBUILDGBMAP, -1)
| ((REPOPGBMAP)
? LFS3_IFDEF_GBMAP(LFS3_T_REPOPGBMAP, -1)
: 0)
| ((COMPACT) ? LFS3_T_COMPACT : 0)
| ((CKMETA) ? LFS3_T_CKMETA : 0)
@ -84,8 +84,8 @@ code = '''
LFS3_T_RDWR
| ((MKCONSISTENT) ? LFS3_T_MKCONSISTENT : 0)
| ((LOOKAHEAD) ? LFS3_T_LOOKAHEAD : 0)
| ((REBUILDGBMAP)
? LFS3_IFDEF_GBMAP(LFS3_T_REBUILDGBMAP, -1)
| ((REPOPGBMAP)
? LFS3_IFDEF_GBMAP(LFS3_T_REPOPGBMAP, -1)
: 0)
| ((COMPACT) ? LFS3_T_COMPACT : 0)
| ((CKMETA) ? LFS3_T_CKMETA : 0)
@ -126,11 +126,11 @@ code = '''
[cases.test_trvs_idempotent]
defines.MKCONSISTENT = [false, true]
defines.LOOKAHEAD = [false, true]
defines.REBUILDGBMAP = [false, true]
defines.REPOPGBMAP = [false, true]
defines.COMPACT = [false, true]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
if = 'GBMAP || !REBUILDGBMAP'
if = 'GBMAP || !REPOPGBMAP'
code = '''
lfs3_t lfs3;
lfs3_format(&lfs3,
@ -145,8 +145,8 @@ code = '''
LFS3_T_RDWR
| ((MKCONSISTENT) ? LFS3_T_MKCONSISTENT : 0)
| ((LOOKAHEAD) ? LFS3_T_LOOKAHEAD : 0)
| ((REBUILDGBMAP)
? LFS3_IFDEF_GBMAP(LFS3_T_REBUILDGBMAP, -1)
| ((REPOPGBMAP)
? LFS3_IFDEF_GBMAP(LFS3_T_REPOPGBMAP, -1)
: 0)
| ((COMPACT) ? LFS3_T_COMPACT : 0)
| ((CKMETA) ? LFS3_T_CKMETA : 0)
@ -1773,11 +1773,11 @@ done:;
[cases.test_trvs_flags]
defines.MKCONSISTENT = [false, true]
defines.LOOKAHEAD = [false, true]
defines.REBUILDGBMAP = [false, true]
defines.REPOPGBMAP = [false, true]
defines.COMPACT = [false, true]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
if = 'GBMAP || !REBUILDGBMAP'
if = 'GBMAP || !REPOPGBMAP'
code = '''
lfs3_t lfs3;
lfs3_format(&lfs3,
@ -1803,8 +1803,8 @@ code = '''
LFS3_T_RDWR
| ((MKCONSISTENT) ? LFS3_T_MKCONSISTENT : 0)
| ((LOOKAHEAD) ? LFS3_T_LOOKAHEAD : 0)
| ((REBUILDGBMAP)
? LFS3_IFDEF_GBMAP(LFS3_T_REBUILDGBMAP, -1)
| ((REPOPGBMAP)
? LFS3_IFDEF_GBMAP(LFS3_T_REPOPGBMAP, -1)
: 0)
| ((COMPACT) ? LFS3_T_COMPACT : 0)
| ((CKMETA) ? LFS3_T_CKMETA : 0)
@ -2265,7 +2265,7 @@ code = '''
assert(fsinfo.flags == (
LFS3_I_LOOKAHEAD
| ((GBMAP && SIZE >= BLOCK_SIZE/4)
? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1)
? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1)
: 0)
| LFS3_I_COMPACT
| LFS3_I_CKMETA
@ -2357,7 +2357,7 @@ code = '''
((!LOOKAHEAD || SIZE > FILE_CACHE_SIZE || SYNC)
? LFS3_I_LOOKAHEAD : 0)
| ((GBMAP && SIZE >= BLOCK_SIZE/4)
? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1)
? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1)
: 0)
| LFS3_I_COMPACT
| LFS3_I_CKMETA
@ -2574,7 +2574,7 @@ code = '''
lfs3_fs_stat(&lfs3, &fsinfo) => 0;
assert(fsinfo.flags == (
LFS3_I_LOOKAHEAD
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1) : 0)
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1) : 0)
| LFS3_I_COMPACT
| LFS3_I_CKMETA
| LFS3_I_CKDATA
@ -2680,7 +2680,7 @@ code = '''
lfs3_fs_stat(&lfs3, &fsinfo) => 0;
assert(fsinfo.flags == (
LFS3_I_LOOKAHEAD
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1) : 0)
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1) : 0)
| LFS3_I_COMPACT
| LFS3_I_CKMETA
| LFS3_I_CKDATA
@ -2890,7 +2890,7 @@ code = '''
lfs3_fs_stat(&lfs3, &fsinfo) => 0;
assert(fsinfo.flags == (
LFS3_I_LOOKAHEAD
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1) : 0)
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1) : 0)
| LFS3_I_COMPACT
| LFS3_I_CKMETA
| LFS3_I_CKDATA
@ -2998,7 +2998,7 @@ code = '''
lfs3_fs_stat(&lfs3, &fsinfo) => 0;
assert(fsinfo.flags == (
LFS3_I_LOOKAHEAD
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1) : 0)
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1) : 0)
| LFS3_I_COMPACT
| LFS3_I_CKMETA
| LFS3_I_CKDATA
@ -3219,7 +3219,7 @@ code = '''
assert(fsinfo.flags == (
((DESYNC) ? LFS3_I_MKCONSISTENT : 0)
| ((!(LOOKAHEAD && DESYNC)) ? LFS3_I_LOOKAHEAD : 0)
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1) : 0)
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1) : 0)
| LFS3_I_COMPACT
// note ckdata implies ckmeta
| ((!(CKMETA && DESYNC) && !(CKDATA && DESYNC))
@ -3334,7 +3334,7 @@ code = '''
assert(fsinfo.flags == (
((DESYNC) ? LFS3_I_MKCONSISTENT : 0)
| ((!(LOOKAHEAD && DESYNC)) ? LFS3_I_LOOKAHEAD : 0)
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1) : 0)
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1) : 0)
| LFS3_I_COMPACT
// note ckdata implies ckmeta
| ((!(CKMETA && DESYNC) && !(CKDATA && DESYNC))
@ -3444,7 +3444,7 @@ code = '''
assert(fsinfo.flags == (
((DESYNC) ? LFS3_I_MKCONSISTENT : 0)
| ((!(LOOKAHEAD && DESYNC)) ? LFS3_I_LOOKAHEAD : 0)
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1) : 0)
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1) : 0)
| LFS3_I_COMPACT
// note ckdata implies ckmeta
| ((!(CKMETA && DESYNC) && !(CKDATA && DESYNC))
@ -3556,7 +3556,7 @@ code = '''
lfs3_fs_stat(&lfs3, &fsinfo) => 0;
assert(fsinfo.flags == (
LFS3_I_LOOKAHEAD
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1) : 0)
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1) : 0)
| LFS3_I_COMPACT
| LFS3_I_CKMETA
| LFS3_I_CKDATA
@ -3665,7 +3665,7 @@ code = '''
lfs3_fs_stat(&lfs3, &fsinfo) => 0;
assert(fsinfo.flags == (
LFS3_I_LOOKAHEAD
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1) : 0)
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1) : 0)
| LFS3_I_COMPACT
| LFS3_I_CKMETA
| LFS3_I_CKDATA
@ -3782,7 +3782,7 @@ code = '''
lfs3_fs_stat(&lfs3, &fsinfo) => 0;
assert(fsinfo.flags == (
LFS3_I_LOOKAHEAD
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1) : 0)
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1) : 0)
| LFS3_I_COMPACT
| LFS3_I_CKMETA
| LFS3_I_CKDATA
@ -3910,7 +3910,7 @@ code = '''
lfs3_fs_stat(&lfs3, &fsinfo) => 0;
assert(fsinfo.flags == (
LFS3_I_LOOKAHEAD
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1) : 0)
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1) : 0)
| LFS3_I_COMPACT
| LFS3_I_CKMETA
| LFS3_I_CKDATA
@ -4038,7 +4038,7 @@ code = '''
lfs3_fs_stat(&lfs3, &fsinfo) => 0;
assert(fsinfo.flags == (
LFS3_I_LOOKAHEAD
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1) : 0)
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1) : 0)
| LFS3_I_COMPACT
| LFS3_I_CKMETA
| LFS3_I_CKDATA
@ -4153,7 +4153,7 @@ code = '''
lfs3_fs_stat(&lfs3, &fsinfo) => 0;
assert(fsinfo.flags == (
LFS3_I_LOOKAHEAD
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1) : 0)
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1) : 0)
| LFS3_I_COMPACT
| LFS3_I_CKMETA
| LFS3_I_CKDATA
@ -4262,7 +4262,7 @@ code = '''
lfs3_fs_stat(&lfs3, &fsinfo) => 0;
assert(fsinfo.flags == (
LFS3_I_LOOKAHEAD
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1) : 0)
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1) : 0)
| LFS3_I_COMPACT
| LFS3_I_CKMETA
| LFS3_I_CKDATA
@ -4386,7 +4386,7 @@ code = '''
lfs3_fs_stat(&lfs3, &fsinfo) => 0;
assert(fsinfo.flags == (
LFS3_I_LOOKAHEAD
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1) : 0)
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1) : 0)
| LFS3_I_COMPACT
| LFS3_I_CKMETA
| LFS3_I_CKDATA
@ -4509,7 +4509,7 @@ code = '''
lfs3_fs_stat(&lfs3, &fsinfo) => 0;
assert(fsinfo.flags == (
LFS3_I_LOOKAHEAD
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1) : 0)
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1) : 0)
| LFS3_I_COMPACT
| LFS3_I_CKMETA
| LFS3_I_CKDATA
@ -4685,7 +4685,7 @@ code = '''
lfs3_fs_stat(&lfs3, &fsinfo) => 0;
assert(fsinfo.flags == (
LFS3_I_LOOKAHEAD
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1) : 0)
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1) : 0)
| LFS3_I_COMPACT
| LFS3_I_CKMETA
| LFS3_I_CKDATA
@ -4878,7 +4878,7 @@ code = '''
lfs3_fs_stat(&lfs3, &fsinfo) => 0;
assert(fsinfo.flags == (
LFS3_I_LOOKAHEAD
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1) : 0)
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1) : 0)
| LFS3_I_COMPACT
| LFS3_I_CKMETA
| LFS3_I_CKDATA
@ -5065,7 +5065,7 @@ code = '''
lfs3_fs_stat(&lfs3, &fsinfo) => 0;
assert(fsinfo.flags == (
LFS3_I_LOOKAHEAD
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1) : 0)
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1) : 0)
| LFS3_I_COMPACT
| LFS3_I_CKMETA
| LFS3_I_CKDATA
@ -5249,7 +5249,7 @@ code = '''
lfs3_fs_stat(&lfs3, &fsinfo) => 0;
assert(fsinfo.flags == (
LFS3_I_LOOKAHEAD
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1) : 0)
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1) : 0)
| LFS3_I_COMPACT
| LFS3_I_CKMETA
| LFS3_I_CKDATA
@ -5440,7 +5440,7 @@ code = '''
lfs3_fs_stat(&lfs3, &fsinfo) => 0;
assert(fsinfo.flags == (
LFS3_I_LOOKAHEAD
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1) : 0)
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1) : 0)
| LFS3_I_COMPACT
| LFS3_I_CKMETA
| LFS3_I_CKDATA
@ -5630,7 +5630,7 @@ code = '''
lfs3_fs_stat(&lfs3, &fsinfo) => 0;
assert(fsinfo.flags == (
LFS3_I_LOOKAHEAD
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1) : 0)
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1) : 0)
| LFS3_I_COMPACT
| LFS3_I_CKMETA
| LFS3_I_CKDATA
@ -5831,7 +5831,7 @@ code = '''
lfs3_fs_stat(&lfs3, &fsinfo) => 0;
assert(fsinfo.flags == (
LFS3_I_LOOKAHEAD
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1) : 0)
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1) : 0)
| LFS3_I_COMPACT
| LFS3_I_CKMETA
| LFS3_I_CKDATA
@ -6045,7 +6045,7 @@ code = '''
lfs3_fs_stat(&lfs3, &fsinfo) => 0;
assert(fsinfo.flags == (
LFS3_I_LOOKAHEAD
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1) : 0)
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1) : 0)
| LFS3_I_COMPACT
| LFS3_I_CKMETA
| LFS3_I_CKDATA
@ -6089,7 +6089,7 @@ code = '''
lfs3_fs_stat(&lfs3, &fsinfo) => 0;
assert(fsinfo.flags == (
LFS3_I_LOOKAHEAD
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1) : 0)
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1) : 0)
| LFS3_I_COMPACT
| LFS3_I_CKMETA
| LFS3_I_CKDATA
@ -6115,7 +6115,7 @@ code = '''
lfs3_fs_stat(&lfs3, &fsinfo) => 0;
assert(fsinfo.flags == (
((!LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0)
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1) : 0)
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1) : 0)
// note ckdata implies ckmeta
| ((!CKMETA && !CKDATA) ? LFS3_I_CKMETA : 0)
| ((!CKDATA) ? LFS3_I_CKDATA : 0)
@ -6219,7 +6219,7 @@ code = '''
lfs3_fs_stat(&lfs3, &fsinfo) => 0;
assert(fsinfo.flags == (
LFS3_I_LOOKAHEAD
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1) : 0)
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1) : 0)
| LFS3_I_COMPACT
| LFS3_I_CKMETA
| LFS3_I_CKDATA
@ -6243,7 +6243,7 @@ code = '''
lfs3_fs_stat(&lfs3, &fsinfo) => 0;
assert(fsinfo.flags == (
((!LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0)
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1) : 0)
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1) : 0)
// note ckdata implies ckmeta
| ((!CKMETA && !CKDATA) ? LFS3_I_CKMETA : 0)
| ((!CKDATA) ? LFS3_I_CKDATA : 0)
@ -6386,7 +6386,7 @@ code = '''
lfs3_fs_stat(&lfs3, &fsinfo) => 0;
assert(fsinfo.flags == (
LFS3_I_LOOKAHEAD
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1) : 0)
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1) : 0)
| LFS3_I_COMPACT
| LFS3_I_CKMETA
| LFS3_I_CKDATA
@ -6411,7 +6411,7 @@ code = '''
lfs3_fs_stat(&lfs3, &fsinfo) => 0;
assert(fsinfo.flags == (
((!LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0)
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1) : 0)
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1) : 0)
// note ckdata implies ckmeta
| ((!CKMETA && !CKDATA) ? LFS3_I_CKMETA : 0)
| ((!CKDATA) ? LFS3_I_CKDATA : 0)
@ -6559,7 +6559,7 @@ code = '''
lfs3_fs_stat(&lfs3, &fsinfo) => 0;
assert(fsinfo.flags == (
LFS3_I_LOOKAHEAD
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1) : 0)
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1) : 0)
| LFS3_I_COMPACT
| LFS3_I_CKMETA
| LFS3_I_CKDATA
@ -6616,7 +6616,7 @@ code = '''
lfs3_fs_stat(&lfs3, &fsinfo) => 0;
assert(fsinfo.flags == (
LFS3_I_LOOKAHEAD
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1) : 0)
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1) : 0)
| LFS3_I_COMPACT
| LFS3_I_CKMETA
| LFS3_I_CKDATA
@ -6643,7 +6643,7 @@ code = '''
lfs3_fs_stat(&lfs3, &fsinfo) => 0;
assert(fsinfo.flags == (
((!LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0)
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1) : 0)
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1) : 0)
// note ckdata implies ckmeta
| ((!CKMETA && !CKDATA) ? LFS3_I_CKMETA : 0)
| ((!CKDATA) ? LFS3_I_CKDATA : 0)
@ -6796,7 +6796,7 @@ code = '''
lfs3_fs_stat(&lfs3, &fsinfo) => 0;
assert(fsinfo.flags == (
LFS3_I_LOOKAHEAD
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1) : 0)
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1) : 0)
| LFS3_I_COMPACT
| LFS3_I_CKMETA
| LFS3_I_CKDATA
@ -6858,7 +6858,7 @@ code = '''
lfs3_fs_stat(&lfs3, &fsinfo) => 0;
assert(fsinfo.flags == (
LFS3_I_LOOKAHEAD
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1) : 0)
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1) : 0)
| LFS3_I_COMPACT
| LFS3_I_CKMETA
| LFS3_I_CKDATA
@ -6885,7 +6885,7 @@ code = '''
lfs3_fs_stat(&lfs3, &fsinfo) => 0;
assert(fsinfo.flags == (
((!LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0)
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1) : 0)
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1) : 0)
// note ckdata implies ckmeta
| ((!CKMETA && !CKDATA) ? LFS3_I_CKMETA : 0)
| ((!CKDATA) ? LFS3_I_CKDATA : 0)
@ -7005,7 +7005,7 @@ code = '''
((ORPHANS > 0) ? LFS3_I_MKCONSISTENT : 0)
| LFS3_I_LOOKAHEAD
| ((GBMAP && ORPHANS >= 100)
? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1)
? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1)
: 0)
| LFS3_I_COMPACT
| LFS3_I_CKMETA
@ -7065,7 +7065,7 @@ code = '''
assert(fsinfo.flags == (
((!LOOKAHEAD || ORPHANS > 0) ? LFS3_I_LOOKAHEAD : 0)
| ((GBMAP && ORPHANS >= 100)
? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1)
? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1)
: 0)
| LFS3_I_COMPACT
// note ckdata implies ckmeta
@ -7223,7 +7223,7 @@ code = '''
((ORPHANS >= 3) ? LFS3_I_MKCONSISTENT : 0)
| ((!LOOKAHEAD || ORPHANS > 0) ? LFS3_I_LOOKAHEAD : 0)
| ((GBMAP && ORPHANS >= 100)
? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1)
? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1)
: 0)
| LFS3_I_COMPACT
// note ckdata implies ckmeta
@ -7328,7 +7328,7 @@ code = '''
assert(fsinfo.flags == (
((ORPHANS > 0) ? LFS3_I_MKCONSISTENT : 0)
| LFS3_I_LOOKAHEAD
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1) : 0)
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1) : 0)
| LFS3_I_COMPACT
| LFS3_I_CKMETA
| LFS3_I_CKDATA
@ -7400,7 +7400,7 @@ code = '''
lfs3_fs_stat(&lfs3, &fsinfo) => 0;
assert(fsinfo.flags == (
((!LOOKAHEAD || ORPHANS > 0) ? LFS3_I_LOOKAHEAD : 0)
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1) : 0)
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1) : 0)
| LFS3_I_COMPACT
// note ckdata implies ckmeta
| (((!CKMETA && !CKDATA) || ORPHANS > 0) ? LFS3_I_CKMETA : 0)
@ -7504,7 +7504,7 @@ code = '''
assert(fsinfo.flags == (
((ORPHANS > 0) ? LFS3_I_MKCONSISTENT : 0)
| LFS3_I_LOOKAHEAD
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1) : 0)
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1) : 0)
| LFS3_I_COMPACT
| LFS3_I_CKMETA
| LFS3_I_CKDATA
@ -7576,7 +7576,7 @@ code = '''
lfs3_fs_stat(&lfs3, &fsinfo) => 0;
assert(fsinfo.flags == (
((!LOOKAHEAD || ORPHANS > 0) ? LFS3_I_LOOKAHEAD : 0)
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1) : 0)
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1) : 0)
| LFS3_I_COMPACT
// note ckdata implies ckmeta
| (((!CKMETA && !CKDATA) || ORPHANS > 0) ? LFS3_I_CKMETA : 0)
@ -7681,7 +7681,7 @@ code = '''
assert(fsinfo.flags == (
((ORPHANS > 0) ? LFS3_I_MKCONSISTENT : 0)
| LFS3_I_LOOKAHEAD
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1) : 0)
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1) : 0)
| LFS3_I_COMPACT
| LFS3_I_CKMETA
| LFS3_I_CKDATA
@ -7761,7 +7761,7 @@ code = '''
lfs3_fs_stat(&lfs3, &fsinfo) => 0;
assert(fsinfo.flags == (
((!LOOKAHEAD || ORPHANS > 0) ? LFS3_I_LOOKAHEAD : 0)
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1) : 0)
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1) : 0)
| LFS3_I_COMPACT
// note ckdata implies ckmeta
| (((!CKMETA && !CKDATA) || ORPHANS > 0) ? LFS3_I_CKMETA : 0)
@ -7866,7 +7866,7 @@ code = '''
assert(fsinfo.flags == (
((ORPHANS > 0) ? LFS3_I_MKCONSISTENT : 0)
| LFS3_I_LOOKAHEAD
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1) : 0)
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1) : 0)
| LFS3_I_COMPACT
| LFS3_I_CKMETA
| LFS3_I_CKDATA
@ -7946,7 +7946,7 @@ code = '''
lfs3_fs_stat(&lfs3, &fsinfo) => 0;
assert(fsinfo.flags == (
((!LOOKAHEAD || ORPHANS > 0) ? LFS3_I_LOOKAHEAD : 0)
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1) : 0)
| ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1) : 0)
| LFS3_I_COMPACT
// note ckdata implies ckmeta
| (((!CKMETA && !CKDATA) || ORPHANS > 0) ? LFS3_I_CKMETA : 0)
@ -8070,7 +8070,7 @@ code = '''
((ORPHANS > 0) ? LFS3_I_MKCONSISTENT : 0)
| LFS3_I_LOOKAHEAD
| ((GBMAP && ORPHANS >= 100)
? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1)
? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1)
: 0)
| LFS3_I_COMPACT
| LFS3_I_CKMETA
@ -8135,7 +8135,7 @@ code = '''
assert(fsinfo.flags == (
LFS3_I_LOOKAHEAD
| ((GBMAP && ORPHANS >= 100)
? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1)
? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1)
: 0)
| LFS3_I_COMPACT
| LFS3_I_CKMETA
@ -8162,7 +8162,7 @@ code = '''
assert(fsinfo.flags == (
((!LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0)
| ((GBMAP && ORPHANS >= 100)
? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1)
? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1)
: 0)
// note ckdata implies ckmeta
| ((!CKMETA && !CKDATA) ? LFS3_I_CKMETA : 0)
@ -8347,7 +8347,7 @@ code = '''
((ORPHANS >= 3) ? LFS3_I_MKCONSISTENT : 0)
| LFS3_I_LOOKAHEAD
| ((GBMAP && ORPHANS >= 100)
? LFS3_IFDEF_GBMAP(LFS3_I_REBUILDGBMAP, -1)
? LFS3_IFDEF_GBMAP(LFS3_I_REPOPGBMAP, -1)
: 0)
| LFS3_I_COMPACT
| LFS3_I_CKMETA
@ -8396,14 +8396,14 @@ code = '''
defines.STEPS = [1, 2, 4, 8, 16, 32, 64, 128]
defines.MKCONSISTENT = [false, true]
defines.LOOKAHEAD = [false, true]
defines.REBUILDGBMAP = [false, true]
defines.REPOPGBMAP = [false, true]
defines.COMPACT = [false, true]
defines.CKMETA = [true]
defines.CKDATA = [true]
# set compact thresh to minimum
defines.GC_COMPACT_THRESH = 'BLOCK_SIZE/2'
defines.N = [1, 2, 4, 8, 16, 32, 64, 128, 256]
if = 'GBMAP || !REBUILDGBMAP'
if = 'GBMAP || !REPOPGBMAP'
code = '''
// test creating directories
lfs3_t lfs3;
@ -8419,8 +8419,8 @@ code = '''
LFS3_T_RDWR
| ((MKCONSISTENT) ? LFS3_T_MKCONSISTENT : 0)
| ((LOOKAHEAD) ? LFS3_T_LOOKAHEAD : 0)
| ((REBUILDGBMAP)
? LFS3_IFDEF_GBMAP(LFS3_T_REBUILDGBMAP, -1)
| ((REPOPGBMAP)
? LFS3_IFDEF_GBMAP(LFS3_T_REPOPGBMAP, -1)
: 0)
| ((COMPACT) ? LFS3_T_COMPACT : 0)
| ((CKMETA) ? LFS3_T_CKMETA : 0)
@ -8515,7 +8515,7 @@ code = '''
defines.STEPS = [1, 2, 4, 8, 16, 32, 64, 128]
defines.MKCONSISTENT = [false, true]
defines.LOOKAHEAD = [false, true]
defines.REBUILDGBMAP = [false, true]
defines.REPOPGBMAP = [false, true]
defines.COMPACT = [false, true]
defines.CKMETA = [true]
defines.CKDATA = [true]
@ -8525,7 +8525,7 @@ defines.N = [1, 2, 4, 8, 16, 32, 64, 128, 256]
defines.OPS = '2*N'
defines.SEED = 42
fuzz = 'SEED'
if = 'GBMAP || !REBUILDGBMAP'
if = 'GBMAP || !REPOPGBMAP'
code = '''
// test fuzz with dirs
lfs3_t lfs3;
@ -8545,8 +8545,8 @@ code = '''
LFS3_T_RDWR
| ((MKCONSISTENT) ? LFS3_T_MKCONSISTENT : 0)
| ((LOOKAHEAD) ? LFS3_T_LOOKAHEAD : 0)
| ((REBUILDGBMAP)
? LFS3_IFDEF_GBMAP(LFS3_T_REBUILDGBMAP, -1)
| ((REPOPGBMAP)
? LFS3_IFDEF_GBMAP(LFS3_T_REPOPGBMAP, -1)
: 0)
| ((COMPACT) ? LFS3_T_COMPACT : 0)
| ((CKMETA) ? LFS3_T_CKMETA : 0)
@ -8705,7 +8705,7 @@ code = '''
defines.STEPS = [1, 2, 4, 8, 16, 32, 64, 128]
defines.MKCONSISTENT = [false, true]
defines.LOOKAHEAD = [false, true]
defines.REBUILDGBMAP = [false, true]
defines.REPOPGBMAP = [false, true]
defines.COMPACT = [false, true]
defines.CKMETA = [true]
defines.CKDATA = [true]
@ -8723,7 +8723,7 @@ defines.SIZE = [
]
if = [
'(SIZE*N)/BLOCK_SIZE <= 32',
'GBMAP || !REBUILDGBMAP',
'GBMAP || !REPOPGBMAP',
]
code = '''
// test creating files
@ -8740,8 +8740,8 @@ code = '''
LFS3_T_RDWR
| ((MKCONSISTENT) ? LFS3_T_MKCONSISTENT : 0)
| ((LOOKAHEAD) ? LFS3_T_LOOKAHEAD : 0)
| ((REBUILDGBMAP)
? LFS3_IFDEF_GBMAP(LFS3_T_REBUILDGBMAP, -1)
| ((REPOPGBMAP)
? LFS3_IFDEF_GBMAP(LFS3_T_REPOPGBMAP, -1)
: 0)
| ((COMPACT) ? LFS3_T_COMPACT : 0)
| ((CKMETA) ? LFS3_T_CKMETA : 0)
@ -8820,7 +8820,7 @@ code = '''
defines.STEPS = [1, 2, 4, 8, 16, 32, 64, 128]
defines.MKCONSISTENT = [false, true]
defines.LOOKAHEAD = [false, true]
defines.REBUILDGBMAP = [false, true]
defines.REPOPGBMAP = [false, true]
defines.COMPACT = [false, true]
defines.CKMETA = [true]
defines.CKDATA = [true]
@ -8841,7 +8841,7 @@ defines.SEED = 42
fuzz = 'SEED'
if = [
'(SIZE*N)/BLOCK_SIZE <= 16',
'GBMAP || !REBUILDGBMAP',
'GBMAP || !REPOPGBMAP',
]
code = '''
// test fuzz with files
@ -8863,8 +8863,8 @@ code = '''
LFS3_T_RDWR
| ((MKCONSISTENT) ? LFS3_T_MKCONSISTENT : 0)
| ((LOOKAHEAD) ? LFS3_T_LOOKAHEAD : 0)
| ((REBUILDGBMAP)
? LFS3_IFDEF_GBMAP(LFS3_T_REBUILDGBMAP, -1)
| ((REPOPGBMAP)
? LFS3_IFDEF_GBMAP(LFS3_T_REPOPGBMAP, -1)
: 0)
| ((COMPACT) ? LFS3_T_COMPACT : 0)
| ((CKMETA) ? LFS3_T_CKMETA : 0)
@ -9074,7 +9074,7 @@ code = '''
defines.STEPS = [1, 2, 4, 8, 16, 32, 64, 128]
defines.MKCONSISTENT = [false, true]
defines.LOOKAHEAD = [false, true]
defines.REBUILDGBMAP = [false, true]
defines.REPOPGBMAP = [false, true]
defines.COMPACT = [false, true]
defines.CKMETA = [true]
defines.CKDATA = [true]
@ -9102,7 +9102,7 @@ if = [
'CHUNK <= SIZE',
# this just saves testing time
'SIZE <= 4*1024*FRAGMENT_SIZE',
'GBMAP || !REBUILDGBMAP',
'GBMAP || !REPOPGBMAP',
]
code = '''
// test with complex file writes
@ -9147,8 +9147,8 @@ code = '''
LFS3_T_RDWR
| ((MKCONSISTENT) ? LFS3_T_MKCONSISTENT : 0)
| ((LOOKAHEAD) ? LFS3_T_LOOKAHEAD : 0)
| ((REBUILDGBMAP)
? LFS3_IFDEF_GBMAP(LFS3_T_REBUILDGBMAP, -1)
| ((REPOPGBMAP)
? LFS3_IFDEF_GBMAP(LFS3_T_REPOPGBMAP, -1)
: 0)
| ((COMPACT) ? LFS3_T_COMPACT : 0)
| ((CKMETA) ? LFS3_T_CKMETA : 0)
@ -9246,7 +9246,7 @@ code = '''
defines.STEPS = [1, 2, 4, 8, 16, 32, 64, 128]
defines.MKCONSISTENT = [false, true]
defines.LOOKAHEAD = [false, true]
defines.REBUILDGBMAP = [false, true]
defines.REPOPGBMAP = [false, true]
defines.COMPACT = [false, true]
defines.CKMETA = [true]
defines.CKDATA = [true]
@ -9267,7 +9267,7 @@ defines.SEED = 42
fuzz = 'SEED'
if = [
'(SIZE*N)/BLOCK_SIZE <= 16',
'GBMAP || !REBUILDGBMAP',
'GBMAP || !REPOPGBMAP',
]
code = '''
// test with uncreats, zombies, etc
@ -9300,8 +9300,8 @@ code = '''
LFS3_T_RDWR
| ((MKCONSISTENT) ? LFS3_T_MKCONSISTENT : 0)
| ((LOOKAHEAD) ? LFS3_T_LOOKAHEAD : 0)
| ((REBUILDGBMAP)
? LFS3_IFDEF_GBMAP(LFS3_T_REBUILDGBMAP, -1)
| ((REPOPGBMAP)
? LFS3_IFDEF_GBMAP(LFS3_T_REPOPGBMAP, -1)
: 0)
| ((COMPACT) ? LFS3_T_COMPACT : 0)
| ((CKMETA) ? LFS3_T_CKMETA : 0)
@ -9707,7 +9707,7 @@ code = '''
defines.STEPS = [1, 2, 4, 8, 16, 32, 64, 128]
defines.MKCONSISTENT = [false, true]
defines.LOOKAHEAD = [false, true]
defines.REBUILDGBMAP = [false, true]
defines.REPOPGBMAP = [false, true]
defines.COMPACT = [false, true]
defines.CKMETA = [true]
defines.CKDATA = [true]
@ -9728,7 +9728,7 @@ defines.SEED = 42
fuzz = 'SEED'
if = [
'(SIZE*N)/BLOCK_SIZE <= 16',
'GBMAP || !REBUILDGBMAP',
'GBMAP || !REPOPGBMAP',
]
code = '''
// test with uncreats, zombies, dirs, etc
@ -9762,8 +9762,8 @@ code = '''
LFS3_T_RDWR
| ((MKCONSISTENT) ? LFS3_T_MKCONSISTENT : 0)
| ((LOOKAHEAD) ? LFS3_T_LOOKAHEAD : 0)
| ((REBUILDGBMAP)
? LFS3_IFDEF_GBMAP(LFS3_T_REBUILDGBMAP, -1)
| ((REPOPGBMAP)
? LFS3_IFDEF_GBMAP(LFS3_T_REPOPGBMAP, -1)
: 0)
| ((COMPACT) ? LFS3_T_COMPACT : 0)
| ((CKMETA) ? LFS3_T_CKMETA : 0)