Renamed RELOOKAHEAD -> LOOKAHEAD, REGBMAP -> LOOKGBMAP

Yeah, after using these for a bit, the RE* names were not great.

Trying LOOK* now, as an alternative that hopefully still implies the
similar behavior without needing an additional prefix for LOOKAHEAD:

- LFS3_*_RELOOKAHEAD        -> LFS3_*_LOOKAHEAD
- LFS3_*_REGBMAP            -> LFS3_*_LOOKGBMAP
- cfg.regbmap_thresh        -> cfg.lookgbmap_thresh
- cfg.gc_relookahead_thresh -> cfg.gc_lookahead_thresh
- cfg.gc_regbmap_thresh     -> cfg.gc_lookgbmap_thresh
This commit is contained in:
Christopher Haster
2025-11-13 14:49:42 -06:00
parent b6130da597
commit 8233ac9dfe
8 changed files with 589 additions and 584 deletions
+78 -78
View File
@@ -7368,19 +7368,19 @@ static inline bool lfs3_t_ismkconsistent(uint32_t flags) {
#endif
}
static inline bool lfs3_t_isrelookahead(uint32_t flags) {
static inline bool lfs3_t_islookahead(uint32_t flags) {
(void)flags;
#ifndef LFS3_RDONLY
return flags & LFS3_T_RELOOKAHEAD;
return flags & LFS3_T_LOOKAHEAD;
#else
return false;
#endif
}
static inline bool lfs3_t_isregbmap(uint32_t flags) {
static inline bool lfs3_t_islookgbmap(uint32_t flags) {
(void)flags;
#if !defined(LFS3_RDONLY) && defined(LFS3_GBMAP)
return flags & LFS3_T_REGBMAP;
return flags & LFS3_T_LOOKGBMAP;
#else
return false;
#endif
@@ -10431,9 +10431,9 @@ static lfs3_stag_t lfs3_mtree_gc(lfs3_t *lfs3, lfs3_mgc_t *mgc,
#ifndef LFS3_RDONLY
// checkpoint the allocator to maximize any lookahead scans
//
// note we try to repopupate even if the relookahead flag isn't
// note we try to repopupate even if the lookahead flag isn't
// set because there's no real downside
if (lfs3_t_isrelookahead(mgc->t.h.flags)
if (lfs3_t_islookahead(mgc->t.h.flags)
&& !lfs3_t_ismtreeonly(mgc->t.h.flags)
&& !lfs3_t_isckpointed(mgc->t.h.flags)) {
lfs3_alloc_ckpoint_(lfs3);
@@ -10445,17 +10445,17 @@ static lfs3_stag_t lfs3_mtree_gc(lfs3_t *lfs3, lfs3_mgc_t *mgc,
#if !defined(LFS3_RDONLY) && defined(LFS3_GBMAP)
// create a new gbmap snapshot
//
// note we _don't_ try to repopulate if the regbmap flag isn't set
// because repopulating the gbmap requires disk writes and is
// potentially destructive
// note we _don't_ try to repopulate if the lookgbmap flag isn't
// set because repopulating the gbmap requires disk writes and
// is potentially destructive
//
// note because we bail as soon as a ckpoint is triggered
// (lfs3_t_isckpointed), we don't need to include this snapshot
// in traversals, the ckpointed flag also means we don't need to
// worry about this repopulation condition becoming true later
if (lfs3_t_isregbmap(mgc->t.h.flags)
if (lfs3_t_islookgbmap(mgc->t.h.flags)
&& lfs3_f_isgbmap(lfs3->flags)
&& lfs3_t_isregbmap(lfs3->flags)
&& lfs3_t_islookgbmap(lfs3->flags)
&& !lfs3_t_ismtreeonly(mgc->t.h.flags)
&& !lfs3_t_isckpointed(mgc->t.h.flags)) {
// at least checkpoint the lookahead buffer
@@ -10493,7 +10493,7 @@ again:;
#ifndef LFS3_RDONLY
// mark in-use blocks in lookahead?
if (lfs3_t_isrelookahead(mgc->t.h.flags)
if (lfs3_t_islookahead(mgc->t.h.flags)
&& !lfs3_t_ismtreeonly(mgc->t.h.flags)
&& !lfs3_t_isckpointed(mgc->t.h.flags)) {
lfs3_alloc_markinusebptr(lfs3, tag, bptr_);
@@ -10501,9 +10501,9 @@ again:;
// mark in-use blocks in gbmap?
#ifdef LFS3_GBMAP
if (lfs3_t_isregbmap(mgc->t.h.flags)
if (lfs3_t_islookgbmap(mgc->t.h.flags)
&& lfs3_f_isgbmap(lfs3->flags)
&& lfs3_t_isregbmap(lfs3->flags)
&& lfs3_t_islookgbmap(lfs3->flags)
&& !lfs3_t_ismtreeonly(mgc->t.h.flags)
&& !lfs3_t_isckpointed(mgc->t.h.flags)) {
int err = lfs3_gbmap_markbptr(lfs3, &mgc->gbmap_, tag, bptr_,
@@ -10582,9 +10582,9 @@ eot:;
//
// gbmap takes priority because it actually writes to disk
if (LFS3_IFDEF_GBMAP(
lfs3_t_isregbmap(mgc->t.h.flags)
lfs3_t_islookgbmap(mgc->t.h.flags)
&& lfs3_f_isgbmap(lfs3->flags)
&& lfs3_t_isregbmap(lfs3->flags)
&& lfs3_t_islookgbmap(lfs3->flags)
&& !lfs3_t_ismtreeonly(mgc->t.h.flags)
&& !lfs3_t_isckpointed(mgc->t.h.flags),
false)) {
@@ -10593,7 +10593,7 @@ eot:;
#endif
// was lookahead scan successful?
} else if (lfs3_t_isrelookahead(mgc->t.h.flags)
} else if (lfs3_t_islookahead(mgc->t.h.flags)
&& !lfs3_t_ismtreeonly(mgc->t.h.flags)
&& !lfs3_t_isckpointed(mgc->t.h.flags)) {
lfs3_alloc_adopt(lfs3, lfs3->lookahead.ckpoint);
@@ -10713,7 +10713,7 @@ static int lfs3_gbmap_commit(lfs3_t *lfs3, lfs3_btree_t *gbmap,
// range, cross-range sets are not currently not supported
//
// really this just provides a shortcut for bulk clearing ranges in
// lfs3_alloc_regbmap
// lfs3_alloc_lookgbmap
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
@@ -10894,7 +10894,7 @@ static inline void lfs3_alloc_ckpoint_(lfs3_t *lfs3) {
#endif
// needed in lfs3_alloc_ckpoint
static int lfs3_alloc_regbmap(lfs3_t *lfs3);
static int lfs3_alloc_lookgbmap(lfs3_t *lfs3);
// checkpoint the allocator
//
@@ -10912,9 +10912,9 @@ static inline int lfs3_alloc_ckpoint(lfs3_t *lfs3) {
// do we need to repopulate the gbmap?
if (lfs3_f_isgbmap(lfs3->flags)
&& lfs3->gbmap.known < lfs3_min(
lfs3->cfg->regbmap_thresh,
lfs3->cfg->lookgbmap_thresh,
lfs3->block_count)) {
int err = lfs3_alloc_regbmap(lfs3);
int err = lfs3_alloc_lookgbmap(lfs3);
if (err) {
return err;
}
@@ -11034,7 +11034,7 @@ static void lfs3_alloc_adopt(lfs3_t *lfs3, lfs3_block_t known) {
known);
// signal that lookahead is full
lfs3->flags &= ~LFS3_I_RELOOKAHEAD;
lfs3->flags &= ~LFS3_I_LOOKAHEAD;
// eagerly find the next free block so lookahead scans can make
// the most progress
@@ -11044,10 +11044,10 @@ static void lfs3_alloc_adopt(lfs3_t *lfs3, lfs3_block_t known) {
// can we repopulate the lookahead buffer?
#if !defined(LFS3_RDONLY)
static inline bool lfs3_alloc_isrelookahead(const lfs3_t *lfs3) {
static inline bool lfs3_alloc_islookahead(const lfs3_t *lfs3) {
return lfs3->lookahead.known
<= lfs3_min(
lfs3->cfg->gc_relookahead_thresh,
lfs3->cfg->gc_lookahead_thresh,
lfs3_min(
8*lfs3->cfg->lookahead_size-1,
lfs3->block_count-1));
@@ -11056,12 +11056,12 @@ static inline bool lfs3_alloc_isrelookahead(const lfs3_t *lfs3) {
// can we repopulate the gbmap?
#if !defined(LFS3_RDONLY) && defined(LFS3_GBMAP)
static inline bool lfs3_alloc_isregbmap(const lfs3_t *lfs3) {
static inline bool lfs3_alloc_islookgbmap(const lfs3_t *lfs3) {
return lfs3->gbmap.known
<= lfs3_min(
lfs3_max(
lfs3->cfg->gc_regbmap_thresh,
lfs3->cfg->regbmap_thresh),
lfs3->cfg->gc_lookgbmap_thresh,
lfs3->cfg->lookgbmap_thresh),
lfs3->block_count-1);
}
#endif
@@ -11090,8 +11090,8 @@ static void lfs3_alloc_inc(lfs3_t *lfs3) {
lfs3->lookahead.ckpoint -= 1;
// signal that lookahead is no longer full
if (lfs3_alloc_isrelookahead(lfs3)) {
lfs3->flags |= LFS3_I_RELOOKAHEAD;
if (lfs3_alloc_islookahead(lfs3)) {
lfs3->flags |= LFS3_I_LOOKAHEAD;
}
// decrement gbmap known window
@@ -11101,8 +11101,8 @@ 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
if (lfs3_alloc_isregbmap(lfs3)) {
lfs3->flags |= LFS3_I_REGBMAP;
if (lfs3_alloc_islookgbmap(lfs3)) {
lfs3->flags |= LFS3_I_LOOKGBMAP;
}
}
#endif
@@ -11215,7 +11215,7 @@ static lfs3_sblock_t lfs3_alloc(lfs3_t *lfs3, uint32_t flags) {
// in-use in the next lookahead window
//
lfs3_mtrv_t mtrv;
lfs3_mtrv_init(&mtrv, LFS3_T_RDONLY | LFS3_T_RELOOKAHEAD);
lfs3_mtrv_init(&mtrv, LFS3_T_RDONLY | LFS3_T_LOOKAHEAD);
while (true) {
lfs3_bptr_t bptr;
lfs3_stag_t tag = lfs3_mtree_traverse(lfs3, &mtrv,
@@ -11282,12 +11282,12 @@ static void lfs3_alloc_adoptgbmap(lfs3_t *lfs3,
lfs3->gbmap.b = *gbmap;
// signal that gbmap is full
lfs3->flags &= ~LFS3_I_REGBMAP;
lfs3->flags &= ~LFS3_I_LOOKGBMAP;
}
#endif
#if !defined(LFS3_RDONLY) && defined(LFS3_GBMAP)
static int lfs3_alloc_regbmap(lfs3_t *lfs3) {
static int lfs3_alloc_lookgbmap(lfs3_t *lfs3) {
LFS3_INFO("Repopulating gbmap (gbmap %"PRId32"/%"PRId32")",
lfs3->gbmap.known,
lfs3->block_count);
@@ -14970,8 +14970,8 @@ static int lfs3_init(lfs3_t *lfs3, uint32_t flags,
// unknown gc flags?
LFS3_ASSERT((lfs3->cfg->gc_flags & ~(
LFS3_GC_MKCONSISTENT
| LFS3_GC_RELOOKAHEAD
| LFS3_IFDEF_GBMAP(LFS3_GC_REGBMAP, 0)
| LFS3_GC_LOOKAHEAD
| LFS3_IFDEF_GBMAP(LFS3_GC_LOOKGBMAP, 0)
| LFS3_GC_COMPACTMETA
| LFS3_GC_CKMETA
| LFS3_GC_CKDATA)) == 0);
@@ -14999,7 +14999,7 @@ static int lfs3_init(lfs3_t *lfs3, uint32_t flags,
// assume we contain orphans until proven otherwise
| LFS3_IFDEF_RDONLY(0, LFS3_I_MKCONSISTENT)
// default to an empty lookahead
| LFS3_IFDEF_RDONLY(0, LFS3_I_RELOOKAHEAD)
| LFS3_IFDEF_RDONLY(0, LFS3_I_LOOKAHEAD)
// default to assuming we need compaction somewhere, worst case
// this just makes lfs3_fs_gc read more than is strictly needed
| LFS3_IFDEF_RDONLY(0, LFS3_I_COMPACTMETA)
@@ -15807,12 +15807,12 @@ static int lfs3_mountinited(lfs3_t *lfs3) {
lfs3->lookahead.window = lfs3->gbmap.window;
// mark our gbmap as repopulatable if known window is
// <= gc_regbmap_thresh
// <= gc_lookgbmap_thresh
//
// unfortunately the dependency of the gbmap on block allocation
// means this rarely includes the entire disk
if (lfs3_alloc_isregbmap(lfs3)) {
lfs3->flags |= LFS3_I_REGBMAP;
if (lfs3_alloc_islookgbmap(lfs3)) {
lfs3->flags |= LFS3_I_LOOKGBMAP;
}
#endif
@@ -15866,11 +15866,11 @@ int lfs3_mount(lfs3_t *lfs3, uint32_t flags,
#ifdef LFS3_YES_MKCONSISTENT
flags |= LFS3_M_MKCONSISTENT;
#endif
#ifdef LFS3_YES_RELOOKAHEAD
flags |= LFS3_M_RELOOKAHEAD;
#ifdef LFS3_YES_LOOKAHEAD
flags |= LFS3_M_LOOKAHEAD;
#endif
#ifdef LFS3_YES_REGBMAP
flags |= LFS3_M_REGBMAP;
#ifdef LFS3_YES_LOOKGBMAP
flags |= LFS3_M_LOOKGBMAP;
#endif
#ifdef LFS3_YES_COMPACTMETA
flags |= LFS3_M_COMPACTMETA;
@@ -15895,16 +15895,16 @@ int lfs3_mount(lfs3_t *lfs3, uint32_t flags,
| LFS3_IFDEF_CKMETAPARITY(LFS3_M_CKMETAPARITY, 0)
| LFS3_IFDEF_CKDATACKSUMS(LFS3_M_CKDATACKSUMS, 0)
| LFS3_IFDEF_RDONLY(0, LFS3_M_MKCONSISTENT)
| LFS3_IFDEF_RDONLY(0, LFS3_M_RELOOKAHEAD)
| LFS3_IFDEF_RDONLY(0, LFS3_M_LOOKAHEAD)
| LFS3_IFDEF_RDONLY(0,
LFS3_IFDEF_GBMAP(LFS3_M_REGBMAP, 0))
LFS3_IFDEF_GBMAP(LFS3_M_LOOKGBMAP, 0))
| LFS3_IFDEF_RDONLY(0, LFS3_M_COMPACTMETA)
| 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_isrelookahead(flags));
LFS3_ASSERT(!lfs3_m_isrdonly(flags) || !lfs3_t_isregbmap(flags));
LFS3_ASSERT(!lfs3_m_isrdonly(flags) || !lfs3_t_islookahead(flags));
LFS3_ASSERT(!lfs3_m_isrdonly(flags) || !lfs3_t_islookgbmap(flags));
LFS3_ASSERT(!lfs3_m_isrdonly(flags) || !lfs3_t_compactmeta(flags));
int err = lfs3_init(lfs3,
@@ -15932,9 +15932,9 @@ int lfs3_mount(lfs3_t *lfs3, uint32_t flags,
// run gc if requested
if (flags & (
LFS3_IFDEF_RDONLY(0, LFS3_M_MKCONSISTENT)
| LFS3_IFDEF_RDONLY(0, LFS3_M_RELOOKAHEAD)
| LFS3_IFDEF_RDONLY(0, LFS3_M_LOOKAHEAD)
| LFS3_IFDEF_RDONLY(0,
LFS3_IFDEF_GBMAP(LFS3_M_REGBMAP, 0))
LFS3_IFDEF_GBMAP(LFS3_M_LOOKGBMAP, 0))
| LFS3_IFDEF_RDONLY(0, LFS3_M_COMPACTMETA)
| LFS3_M_CKMETA
| LFS3_M_CKDATA)) {
@@ -15942,9 +15942,9 @@ int lfs3_mount(lfs3_t *lfs3, uint32_t flags,
err = lfs3_fs_gc_(lfs3, &mgc,
flags & (
LFS3_IFDEF_RDONLY(0, LFS3_M_MKCONSISTENT)
| LFS3_IFDEF_RDONLY(0, LFS3_M_RELOOKAHEAD)
| LFS3_IFDEF_RDONLY(0, LFS3_M_LOOKAHEAD)
| LFS3_IFDEF_RDONLY(0,
LFS3_IFDEF_GBMAP(LFS3_M_REGBMAP, 0))
LFS3_IFDEF_GBMAP(LFS3_M_LOOKGBMAP, 0))
| LFS3_IFDEF_RDONLY(0, LFS3_M_COMPACTMETA)
| LFS3_M_CKMETA
| LFS3_M_CKDATA),
@@ -16183,11 +16183,11 @@ int lfs3_format(lfs3_t *lfs3, uint32_t flags,
#ifdef LFS3_YES_MKCONSISTENT
flags |= LFS3_F_MKCONSISTENT;
#endif
#ifdef LFS3_YES_RELOOKAHEAD
flags |= LFS3_F_RELOOKAHEAD;
#ifdef LFS3_YES_LOOKAHEAD
flags |= LFS3_F_LOOKAHEAD;
#endif
#ifdef LFS3_YES_REGBMAP
flags |= LFS3_F_REGBMAP;
#ifdef LFS3_YES_LOOKGBMAP
flags |= LFS3_F_LOOKGBMAP;
#endif
#ifdef LFS3_YES_COMPACTMETA
flags |= LFS3_F_COMPACTMETA;
@@ -16210,8 +16210,8 @@ int lfs3_format(lfs3_t *lfs3, uint32_t flags,
| LFS3_IFDEF_CKMETAPARITY(LFS3_F_CKMETAPARITY, 0)
| LFS3_IFDEF_CKDATACKSUMS(LFS3_F_CKDATACKSUMS, 0)
| LFS3_F_MKCONSISTENT
| LFS3_F_RELOOKAHEAD
| LFS3_IFDEF_GBMAP(LFS3_F_REGBMAP, 0)
| LFS3_F_LOOKAHEAD
| LFS3_IFDEF_GBMAP(LFS3_F_LOOKGBMAP, 0)
| LFS3_F_COMPACTMETA
| LFS3_F_CKMETA
| LFS3_F_CKDATA)) == 0);
@@ -16251,8 +16251,8 @@ int lfs3_format(lfs3_t *lfs3, uint32_t flags,
// run gc if requested
if (flags & (
LFS3_F_MKCONSISTENT
| LFS3_F_RELOOKAHEAD
| LFS3_IFDEF_GBMAP(LFS3_F_REGBMAP, 0)
| LFS3_F_LOOKAHEAD
| LFS3_IFDEF_GBMAP(LFS3_F_LOOKGBMAP, 0)
| LFS3_F_COMPACTMETA
| LFS3_F_CKMETA
| LFS3_F_CKDATA)) {
@@ -16260,8 +16260,8 @@ int lfs3_format(lfs3_t *lfs3, uint32_t flags,
err = lfs3_fs_gc_(lfs3, &mgc,
flags & (
LFS3_F_MKCONSISTENT
| LFS3_F_RELOOKAHEAD
| LFS3_IFDEF_GBMAP(LFS3_F_REGBMAP, 0)
| LFS3_F_LOOKAHEAD
| LFS3_IFDEF_GBMAP(LFS3_F_LOOKGBMAP, 0)
| LFS3_F_COMPACTMETA
| LFS3_F_CKMETA
| LFS3_F_CKDATA),
@@ -16297,8 +16297,8 @@ int lfs3_fs_stat(lfs3_t *lfs3, struct lfs3_fsinfo *fsinfo) {
| LFS3_IFDEF_CKMETAPARITY(LFS3_I_CKMETAPARITY, 0)
| LFS3_IFDEF_CKDATACKSUMS(LFS3_I_CKDATACKSUMS, 0)
| LFS3_IFDEF_RDONLY(0, LFS3_I_MKCONSISTENT)
| LFS3_IFDEF_RDONLY(0, LFS3_I_RELOOKAHEAD)
| LFS3_IFDEF_RDONLY(0, LFS3_IFDEF_GBMAP(LFS3_I_REGBMAP, 0))
| LFS3_IFDEF_RDONLY(0, LFS3_I_LOOKAHEAD)
| LFS3_IFDEF_RDONLY(0, LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, 0))
| LFS3_IFDEF_RDONLY(0, LFS3_I_COMPACTMETA)
| LFS3_I_CKMETA
| LFS3_I_CKDATA
@@ -16565,9 +16565,9 @@ static int lfs3_fs_gc_(lfs3_t *lfs3, lfs3_mgc_t *mgc,
LFS3_ASSERT(!lfs3_m_isrdonly(lfs3->flags)
|| !lfs3_t_ismkconsistent(flags));
LFS3_ASSERT(!lfs3_m_isrdonly(lfs3->flags)
|| !lfs3_t_isrelookahead(flags));
|| !lfs3_t_islookahead(flags));
LFS3_ASSERT(!lfs3_m_isrdonly(lfs3->flags)
|| !lfs3_t_isregbmap(flags));
|| !lfs3_t_islookgbmap(flags));
LFS3_ASSERT(!lfs3_m_isrdonly(lfs3->flags)
|| !lfs3_t_compactmeta(flags));
@@ -16595,9 +16595,9 @@ static int lfs3_fs_gc_(lfs3_t *lfs3, lfs3_mgc_t *mgc,
// don't bother with lookahead/gbmap if we've ckpointed
#ifndef LFS3_RDONLY
if (lfs3_t_isckpointed(mgc->t.h.flags)) {
mgc->t.h.flags &= ~LFS3_T_RELOOKAHEAD;
mgc->t.h.flags &= ~LFS3_T_LOOKAHEAD;
#ifdef LFS3_GBMAP
mgc->t.h.flags &= ~LFS3_T_REGBMAP;
mgc->t.h.flags &= ~LFS3_T_LOOKGBMAP;
#endif
}
#endif
@@ -16610,9 +16610,9 @@ static int lfs3_fs_gc_(lfs3_t *lfs3, lfs3_mgc_t *mgc,
// do we really need a full traversal?
if (!(mgc->t.h.flags & (
LFS3_IFDEF_RDONLY(0, LFS3_GC_RELOOKAHEAD)
LFS3_IFDEF_RDONLY(0, LFS3_GC_LOOKAHEAD)
| LFS3_IFDEF_RDONLY(0,
LFS3_IFDEF_GBMAP(LFS3_GC_REGBMAP, 0))
LFS3_IFDEF_GBMAP(LFS3_GC_LOOKGBMAP, 0))
| LFS3_GC_CKMETA
| LFS3_GC_CKDATA))) {
mgc->t.h.flags |= LFS3_T_MTREEONLY;
@@ -16661,9 +16661,9 @@ int lfs3_fs_unck(lfs3_t *lfs3, uint32_t flags) {
// unknown flags?
LFS3_ASSERT((flags & ~(
LFS3_IFDEF_RDONLY(0, LFS3_I_MKCONSISTENT)
| LFS3_IFDEF_RDONLY(0, LFS3_I_RELOOKAHEAD)
| LFS3_IFDEF_RDONLY(0, LFS3_I_LOOKAHEAD)
| LFS3_IFDEF_RDONLY(0,
LFS3_IFDEF_GBMAP(LFS3_I_REGBMAP, 0))
LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, 0))
| LFS3_IFDEF_RDONLY(0, LFS3_I_COMPACTMETA)
| LFS3_I_CKMETA
| LFS3_I_CKDATA)) == 0);
@@ -16894,9 +16894,9 @@ int lfs3_trv_open(lfs3_t *lfs3, lfs3_trv_t *trv, uint32_t flags) {
| LFS3_T_MTREEONLY
| LFS3_T_EXCL
| LFS3_IFDEF_RDONLY(0, LFS3_T_MKCONSISTENT)
| LFS3_IFDEF_RDONLY(0, LFS3_T_RELOOKAHEAD)
| LFS3_IFDEF_RDONLY(0, LFS3_T_LOOKAHEAD)
| LFS3_IFDEF_RDONLY(0,
LFS3_IFDEF_GBMAP(LFS3_T_REGBMAP, 0))
LFS3_IFDEF_GBMAP(LFS3_T_LOOKGBMAP, 0))
| LFS3_IFDEF_RDONLY(0, LFS3_T_COMPACTMETA)
| LFS3_T_CKMETA
| LFS3_T_CKDATA)) == 0);
@@ -16904,12 +16904,12 @@ int lfs3_trv_open(lfs3_t *lfs3, lfs3_trv_t *trv, uint32_t flags) {
LFS3_ASSERT(!lfs3_m_isrdonly(lfs3->flags) || lfs3_t_isrdonly(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_isrelookahead(flags));
LFS3_ASSERT(!lfs3_t_isrdonly(flags) || !lfs3_t_isregbmap(flags));
LFS3_ASSERT(!lfs3_t_isrdonly(flags) || !lfs3_t_islookahead(flags));
LFS3_ASSERT(!lfs3_t_isrdonly(flags) || !lfs3_t_islookgbmap(flags));
LFS3_ASSERT(!lfs3_t_isrdonly(flags) || !lfs3_t_compactmeta(flags));
// some flags don't make sense when only traversing the mtree
LFS3_ASSERT(!lfs3_t_ismtreeonly(flags) || !lfs3_t_isrelookahead(flags));
LFS3_ASSERT(!lfs3_t_ismtreeonly(flags) || !lfs3_t_isregbmap(flags));
LFS3_ASSERT(!lfs3_t_ismtreeonly(flags) || !lfs3_t_islookahead(flags));
LFS3_ASSERT(!lfs3_t_ismtreeonly(flags) || !lfs3_t_islookgbmap(flags));
LFS3_ASSERT(!lfs3_t_ismtreeonly(flags) || !lfs3_t_isckdata(flags));
// setup traversal state
+24 -19
View File
@@ -201,11 +201,12 @@ enum lfs3_type {
0x00000800 // Make the filesystem consistent
#endif
#ifndef LFS3_RDONLY
#define LFS3_F_RELOOKAHEAD \
#define LFS3_F_LOOKAHEAD \
0x00001000 // Repopulate lookahead buffer
#endif
#if !defined(LFS3_RDONLY) && defined(LFS3_GBMAP)
#define LFS3_F_REGBMAP 0x00002000 // Repopulate the gbmap
#define LFS3_F_LOOKGBMAP \
0x00002000 // Repopulate the gbmap
#endif
#ifndef LFS3_RDONLY
#define LFS3_F_COMPACTMETA \
@@ -252,11 +253,12 @@ enum lfs3_type {
0x00000800 // Make the filesystem consistent
#endif
#ifndef LFS3_RDONLY
#define LFS3_M_RELOOKAHEAD \
#define LFS3_M_LOOKAHEAD \
0x00001000 // Repopulate lookahead buffer
#endif
#if !defined(LFS3_RDONLY) && defined(LFS3_GBMAP)
#define LFS3_M_REGBMAP 0x00002000 // Repopulate the gbmap
#define LFS3_M_LOOKGBMAP \
0x00002000 // Repopulate the gbmap
#endif
#ifndef LFS3_RDONLY
#define LFS3_M_COMPACTMETA \
@@ -298,11 +300,12 @@ enum lfs3_type {
0x00000800 // Filesystem needs mkconsistent to write
#endif
#ifndef LFS3_RDONLY
#define LFS3_I_RELOOKAHEAD \
#define LFS3_I_LOOKAHEAD \
0x00001000 // Lookahead buffer is not full
#endif
#if !defined(LFS3_RDONLY) && defined(LFS3_GBMAP)
#define LFS3_I_REGBMAP 0x00002000 // The gbmap is not full
#define LFS3_I_LOOKGBMAP \
0x00002000 // The gbmap is not full
#endif
#ifndef LFS3_RDONLY
#define LFS3_I_COMPACTMETA \
@@ -333,11 +336,12 @@ enum lfs3_btype {
0x00000800 // Make the filesystem consistent
#endif
#ifndef LFS3_RDONLY
#define LFS3_T_RELOOKAHEAD \
#define LFS3_T_LOOKAHEAD \
0x00001000 // Repopulate lookahead buffer
#endif
#if !defined(LFS3_RDONLY) && defined(LFS3_GBMAP)
#define LFS3_T_REGBMAP 0x00002000 // Repopulate the gbmap
#define LFS3_T_LOOKGBMAP \
0x00002000 // Repopulate the gbmap
#endif
#ifndef LFS3_RDONLY
#define LFS3_T_COMPACTMETA \
@@ -361,11 +365,12 @@ enum lfs3_btype {
0x00000800 // Make the filesystem consistent
#endif
#ifndef LFS3_RDONLY
#define LFS3_GC_RELOOKAHEAD \
#define LFS3_GC_LOOKAHEAD \
0x00001000 // Repopulate lookahead buffer
#endif
#if !defined(LFS3_RDONLY) && defined(LFS3_GBMAP)
#define LFS3_GC_REGBMAP 0x00002000 // Repopulate the gbmap
#define LFS3_GC_LOOKGBMAP \
0x00002000 // Repopulate the gbmap
#endif
#ifndef LFS3_RDONLY
#define LFS3_GC_COMPACTMETA \
@@ -377,9 +382,9 @@ enum lfs3_btype {
// an alias for all possible GC work
#define LFS3_GC_ALL ( \
LFS3_IFDEF_RDONLY(0, LFS3_GC_MKCONSISTENT) \
| LFS3_IFDEF_RDONLY(0, LFS3_GC_RELOOKAHEAD) \
| LFS3_IFDEF_RDONLY(0, LFS3_GC_LOOKAHEAD) \
| LFS3_IFDEF_RDONLY(0, \
LFS3_IFDEF_GBMAP(LFS3_GC_REGBMAP, 0)) \
LFS3_IFDEF_GBMAP(LFS3_GC_LOOKGBMAP, 0)) \
| LFS3_IFDEF_RDONLY(0, LFS3_GC_COMPACTMETA) \
| LFS3_GC_CKMETA \
| LFS3_GC_CKDATA)
@@ -513,7 +518,7 @@ struct lfs3_cfg {
// any value >= 8*lookahead_size repopulates the lookahead buffer
// after any block allocation.
#ifndef LFS3_RDONLY
lfs3_block_t gc_relookahead_thresh;
lfs3_block_t gc_lookahead_thresh;
#endif
// Threshold for repopulating the gbmap during gc. This can be set
@@ -522,13 +527,13 @@ struct lfs3_cfg {
//
// Note this only affects explicit gc operations. During normal
// operations gbmap repopulations are controlled by
// regbmap_thresh.
// lookgbmap_thresh.
//
// Any value <= regbmap_thresh repopulates the gbmap when below
// regbmap_thresh, while -1 or any value >= block_count
// Any value <= lookgbmap_thresh repopulates the gbmap when below
// lookgbmap_thresh, while -1 or any value >= block_count
// repopulates the lookahead buffer after any block allocation.
#if !defined(LFS3_RDONLY) && defined(LFS3_GBMAP)
lfs3_block_t gc_regbmap_thresh;
lfs3_block_t gc_lookgbmap_thresh;
#endif
// Threshold for metadata compaction during gc in bytes.
@@ -624,7 +629,7 @@ struct lfs3_cfg {
// 0 only repopulates the gbmap when empty, minimizing gbmap
// repops at the risk of large latency spikes.
#ifdef LFS3_GBMAP
lfs3_block_t regbmap_thresh;
lfs3_block_t lookgbmap_thresh;
#endif
};
@@ -898,7 +903,7 @@ typedef struct lfs3_mgc {
lfs3_mtrv_t t;
#ifdef LFS3_GBMAP
// repopulate gbmap when traversing with regbmap
// repopulate gbmap when traversing with lookgbmap
lfs3_btree_t gbmap_;
#endif
} lfs3_mgc_t;
+6 -6
View File
@@ -116,13 +116,13 @@ void bench_permutation(size_t i, uint32_t *buffer, size_t size);
BENCH_DEFINE(LOOKAHEAD_SIZE, 16 ) \
BENCH_DEFINE(GC_FLAGS, LFS3_GC_ALL ) \
BENCH_DEFINE(GC_STEPS, 0 ) \
BENCH_DEFINE(GC_RELOOKAHEAD_THRESH, -1 ) \
BENCH_DEFINE(GC_REGBMAP_THRESH, -1 ) \
BENCH_DEFINE(GC_LOOKAHEAD_THRESH, -1 ) \
BENCH_DEFINE(GC_LOOKGBMAP_THRESH, -1 ) \
BENCH_DEFINE(GC_COMPACTMETA_THRESH, 0 ) \
BENCH_DEFINE(SHRUB_SIZE, BLOCK_SIZE/4 ) \
BENCH_DEFINE(FRAGMENT_SIZE, LFS3_MIN(BLOCK_SIZE/8, 512) ) \
BENCH_DEFINE(CRYSTAL_THRESH, BLOCK_SIZE/8 ) \
BENCH_DEFINE(REGBMAP_THRESH, BLOCK_COUNT/4 ) \
BENCH_DEFINE(LOOKGBMAP_THRESH, BLOCK_COUNT/4 ) \
BENCH_DEFINE(ERASE_VALUE, 0xff ) \
BENCH_DEFINE(ERASE_CYCLES, 0 ) \
BENCH_DEFINE(BADBLOCK_BEHAVIOR, LFS3_EMUBD_BADBLOCK_PROGERROR ) \
@@ -149,7 +149,7 @@ void bench_permutation(size_t i, uint32_t *buffer, size_t size);
.lookahead_size = LOOKAHEAD_SIZE, \
BENCH_GBMAP_CFG \
BENCH_GC_CFG \
.gc_relookahead_thresh = GC_RELOOKAHEAD_THRESH, \
.gc_lookahead_thresh = GC_LOOKAHEAD_THRESH, \
.gc_compactmeta_thresh = GC_COMPACTMETA_THRESH, \
.shrub_size = SHRUB_SIZE, \
.fragment_size = FRAGMENT_SIZE, \
@@ -157,8 +157,8 @@ void bench_permutation(size_t i, uint32_t *buffer, size_t size);
#ifdef LFS3_GBMAP
#define BENCH_GBMAP_CFG \
.gc_regbmap_thresh = GC_REGBMAP_THRESH, \
.regbmap_thresh = REGBMAP_THRESH,
.gc_lookgbmap_thresh = GC_LOOKGBMAP_THRESH, \
.lookgbmap_thresh = LOOKGBMAP_THRESH,
#else
#define BENCH_GBMAP_CFG
#endif
+6 -6
View File
@@ -107,13 +107,13 @@ void test_permutation(size_t i, uint32_t *buffer, size_t size);
TEST_DEFINE(LOOKAHEAD_SIZE, 16 ) \
TEST_DEFINE(GC_FLAGS, LFS3_GC_ALL ) \
TEST_DEFINE(GC_STEPS, 0 ) \
TEST_DEFINE(GC_RELOOKAHEAD_THRESH, -1 ) \
TEST_DEFINE(GC_REGBMAP_THRESH, -1 ) \
TEST_DEFINE(GC_LOOKAHEAD_THRESH, -1 ) \
TEST_DEFINE(GC_LOOKGBMAP_THRESH, -1 ) \
TEST_DEFINE(GC_COMPACTMETA_THRESH, 0 ) \
TEST_DEFINE(SHRUB_SIZE, BLOCK_SIZE/4 ) \
TEST_DEFINE(FRAGMENT_SIZE, LFS3_MIN(BLOCK_SIZE/8, 512) ) \
TEST_DEFINE(CRYSTAL_THRESH, BLOCK_SIZE/8 ) \
TEST_DEFINE(REGBMAP_THRESH, BLOCK_COUNT/4 ) \
TEST_DEFINE(LOOKGBMAP_THRESH, BLOCK_COUNT/4 ) \
TEST_DEFINE(ERASE_VALUE, 0xff ) \
TEST_DEFINE(ERASE_CYCLES, 0 ) \
TEST_DEFINE(BADBLOCK_BEHAVIOR, LFS3_EMUBD_BADBLOCK_PROGERROR ) \
@@ -140,7 +140,7 @@ void test_permutation(size_t i, uint32_t *buffer, size_t size);
.lookahead_size = LOOKAHEAD_SIZE, \
TEST_GBMAP_CFG \
TEST_GC_CFG \
.gc_relookahead_thresh = GC_RELOOKAHEAD_THRESH, \
.gc_lookahead_thresh = GC_LOOKAHEAD_THRESH, \
.gc_compactmeta_thresh = GC_COMPACTMETA_THRESH, \
.shrub_size = SHRUB_SIZE, \
.fragment_size = FRAGMENT_SIZE, \
@@ -148,8 +148,8 @@ void test_permutation(size_t i, uint32_t *buffer, size_t size);
#ifdef LFS3_GBMAP
#define TEST_GBMAP_CFG \
.gc_regbmap_thresh = GC_REGBMAP_THRESH, \
.regbmap_thresh = REGBMAP_THRESH,
.gc_lookgbmap_thresh = GC_LOOKGBMAP_THRESH, \
.lookgbmap_thresh = LOOKGBMAP_THRESH,
#else
#define TEST_GBMAP_CFG
#endif
+10 -10
View File
@@ -81,8 +81,8 @@ F_CKMETAPARITY = 0x00400000 # y- Check metadata tag parity bits
F_CKDATACKSUMS = 0x01000000 # y- Check data checksums on reads
F_MKCONSISTENT = 0x00000800 # y- Make the filesystem consistent
F_RELOOKAHEAD = 0x00001000 # y- Repopulate lookahead buffer
F_REGBMAP = 0x00002000 # y- Repopulate the gbmap
F_LOOKAHEAD = 0x00001000 # y- Repopulate lookahead buffer
F_LOOKGBMAP = 0x00002000 # y- Repopulate the gbmap
F_COMPACTMETA = 0x00008000 # y- Compact metadata logs
F_CKMETA = 0x00010000 # y- Check metadata checksums
F_CKDATA = 0x00020000 # y- Check metadata + data checksums
@@ -101,16 +101,16 @@ M_CKMETAPARITY = 0x00400000 # y- Check metadata tag parity bits
M_CKDATACKSUMS = 0x01000000 # y- Check data checksums on reads
M_MKCONSISTENT = 0x00000800 # y- Make the filesystem consistent
M_RELOOKAHEAD = 0x00001000 # y- Repopulate lookahead buffer
M_REGBMAP = 0x00002000 # y- Repopulate the gbmap
M_LOOKAHEAD = 0x00001000 # y- Repopulate lookahead buffer
M_LOOKGBMAP = 0x00002000 # y- Repopulate the gbmap
M_COMPACTMETA = 0x00008000 # y- Compact metadata logs
M_CKMETA = 0x00010000 # y- Check metadata checksums
M_CKDATA = 0x00020000 # y- Check metadata + data checksums
# GC flags
GC_MKCONSISTENT = 0x00000800 # -- Make the filesystem consistent
GC_RELOOKAHEAD = 0x00001000 # -- Repopulate lookahead buffer
GC_REGBMAP = 0x00002000 # -- Repopulate the gbmap
GC_LOOKAHEAD = 0x00001000 # -- Repopulate lookahead buffer
GC_LOOKGBMAP = 0x00002000 # -- Repopulate the gbmap
GC_COMPACTMETA = 0x00008000 # -- Compact metadata logs
GC_CKMETA = 0x00010000 # -- Check metadata checksums
GC_CKDATA = 0x00020000 # -- Check metadata + data checksums
@@ -129,8 +129,8 @@ I_CKMETAPARITY = 0x00400000 # -- Mounted with LFS3_M_CKMETAPARITY
I_CKDATACKSUMS = 0x01000000 # -- Mounted with LFS3_M_CKDATACKSUMS
I_MKCONSISTENT = 0x00000800 # -- Filesystem needs mkconsistent to write
I_RELOOKAHEAD = 0x00001000 # -- Lookahead buffer is not full
I_REGBMAP = 0x00002000 # -- The gbmap is not full
I_LOOKAHEAD = 0x00001000 # -- Lookahead buffer is not full
I_LOOKGBMAP = 0x00002000 # -- The gbmap is not full
I_COMPACTMETA = 0x00008000 # -- Filesystem may have uncompacted metadata
I_CKMETA = 0x00010000 # -- Metadata checksums not checked recently
I_CKDATA = 0x00020000 # -- Data checksums not checked recently
@@ -142,8 +142,8 @@ T_RDONLY = 1 # -^ Open traversal as read only
T_MTREEONLY = 0x00000002 # -- Only traverse the mtree
T_EXCL = 0x00000008 # -- Error if filesystem modified
T_MKCONSISTENT = 0x00000800 # -- Make the filesystem consistent
T_RELOOKAHEAD = 0x00001000 # -- Repopulate lookahead buffer
T_REGBMAP = 0x00002000 # -- Repopulate the gbmap
T_LOOKAHEAD = 0x00001000 # -- Repopulate lookahead buffer
T_LOOKGBMAP = 0x00002000 # -- Repopulate the gbmap
T_COMPACTMETA = 0x00008000 # -- Compact metadata logs
T_CKMETA = 0x00010000 # -- Check metadata checksums
T_CKDATA = 0x00020000 # -- Check metadata + data checksums
+145 -145
View File
@@ -18,7 +18,7 @@ if = '''
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.GC_FLAGS = '''
LFS3_GC_RELOOKAHEAD
LFS3_GC_LOOKAHEAD
| ((CKMETA) ? LFS3_GC_CKMETA : 0)
| ((CKDATA) ? LFS3_GC_CKDATA : 0)
'''
@@ -56,7 +56,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_RELOOKAHEAD);
assert(fsinfo.flags & LFS3_I_LOOKAHEAD);
assert(lfs3.handles != &lfs3.gc.t.h);
// run GC until we make progress
@@ -67,7 +67,7 @@ code = '''
lfs3_fs_gc(&lfs3) => 0;
lfs3_fs_stat(&lfs3, &fsinfo) => 0;
if (!(fsinfo.flags & LFS3_I_RELOOKAHEAD)) {
if (!(fsinfo.flags & LFS3_I_LOOKAHEAD)) {
break;
}
}
@@ -87,7 +87,7 @@ code = '''
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.GC_FLAGS = '''
LFS3_GC_RELOOKAHEAD
LFS3_GC_LOOKAHEAD
| ((CKMETA) ? LFS3_GC_CKMETA : 0)
| ((CKDATA) ? LFS3_GC_CKDATA : 0)
'''
@@ -126,7 +126,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_RELOOKAHEAD);
assert(fsinfo.flags & LFS3_I_LOOKAHEAD);
assert(lfs3.handles != &lfs3.gc.t.h);
// run GC one step
@@ -149,7 +149,7 @@ code = '''
// we should _not_ make progress
lfs3_fs_stat(&lfs3, &fsinfo) => 0;
assert(fsinfo.flags & LFS3_I_RELOOKAHEAD);
assert(fsinfo.flags & LFS3_I_LOOKAHEAD);
// check the file contents
lfs3_file_open(&lfs3, &file, "spider", LFS3_O_RDONLY) => 0;
@@ -165,7 +165,7 @@ code = '''
# gc_relookahead_thresh
[cases.test_gc_relookahead_relaxed]
# relax our repop thresh
defines.GC_RELOOKAHEAD_THRESH = [
defines.GC_LOOKAHEAD_THRESH = [
'-1',
'8*LOOKAHEAD_SIZE - (8*LOOKAHEAD_SIZE/4)',
'8*LOOKAHEAD_SIZE - (8*LOOKAHEAD_SIZE/2)',
@@ -173,7 +173,7 @@ defines.GC_RELOOKAHEAD_THRESH = [
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.GC_FLAGS = '''
LFS3_GC_RELOOKAHEAD
LFS3_GC_LOOKAHEAD
| ((CKMETA) ? LFS3_GC_CKMETA : 0)
| ((CKDATA) ? LFS3_GC_CKDATA : 0)
'''
@@ -210,7 +210,7 @@ code = '''
struct lfs3_fsinfo fsinfo;
lfs3_fs_stat(&lfs3, &fsinfo) => 0;
if (!(fsinfo.flags & LFS3_I_RELOOKAHEAD)) {
if (!(fsinfo.flags & LFS3_I_LOOKAHEAD)) {
break;
}
}
@@ -237,9 +237,9 @@ code = '''
struct lfs3_fsinfo fsinfo;
lfs3_fs_stat(&lfs3, &fsinfo) => 0;
if (fsinfo.flags & LFS3_I_RELOOKAHEAD) {
if (fsinfo.flags & LFS3_I_LOOKAHEAD) {
// check that we actually relaxed repopulations
if ((lfs3_size_t)GC_RELOOKAHEAD_THRESH
if ((lfs3_size_t)GC_LOOKAHEAD_THRESH
< (lfs3_size_t)(8*LOOKAHEAD_SIZE-1)) {
assert(i > 0);
} else {
@@ -258,7 +258,7 @@ code = '''
struct lfs3_fsinfo fsinfo;
lfs3_fs_stat(&lfs3, &fsinfo) => 0;
if (!(fsinfo.flags & LFS3_I_RELOOKAHEAD)) {
if (!(fsinfo.flags & LFS3_I_LOOKAHEAD)) {
break;
}
}
@@ -275,12 +275,12 @@ code = '''
# test that regbmap can make progress in isolation
[cases.test_gc_regbmap_progress]
defines.RELOOKAHEAD = [false, true]
defines.LOOKAHEAD = [false, true]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.GC_FLAGS = '''
LFS3_GC_REGBMAP
| ((RELOOKAHEAD) ? LFS3_GC_RELOOKAHEAD : 0)
LFS3_GC_LOOKGBMAP
| ((LOOKAHEAD) ? LFS3_GC_LOOKAHEAD : 0)
| ((CKMETA) ? LFS3_GC_CKMETA : 0)
| ((CKDATA) ? LFS3_GC_CKDATA : 0)
'''
@@ -317,7 +317,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_REGBMAP);
assert(fsinfo.flags & LFS3_I_LOOKGBMAP);
assert(lfs3.handles != &lfs3.gc.t.h);
// run GC until we make progress
@@ -328,7 +328,7 @@ code = '''
lfs3_fs_gc(&lfs3) => 0;
lfs3_fs_stat(&lfs3, &fsinfo) => 0;
if (!(fsinfo.flags & LFS3_I_REGBMAP)) {
if (!(fsinfo.flags & LFS3_I_LOOKGBMAP)) {
break;
}
}
@@ -345,12 +345,12 @@ code = '''
# test that regbmap dirtying still works with the GC API
[cases.test_gc_regbmap_mutation]
defines.RELOOKAHEAD = [false, true]
defines.LOOKAHEAD = [false, true]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.GC_FLAGS = '''
LFS3_GC_REGBMAP
| ((RELOOKAHEAD) ? LFS3_GC_RELOOKAHEAD : 0)
LFS3_GC_LOOKGBMAP
| ((LOOKAHEAD) ? LFS3_GC_LOOKAHEAD : 0)
| ((CKMETA) ? LFS3_GC_CKMETA : 0)
| ((CKDATA) ? LFS3_GC_CKDATA : 0)
'''
@@ -390,7 +390,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_REGBMAP);
assert(fsinfo.flags & LFS3_I_LOOKGBMAP);
assert(lfs3.handles != &lfs3.gc.t.h);
// run GC one step
@@ -413,7 +413,7 @@ code = '''
// we should _not_ make progress
lfs3_fs_stat(&lfs3, &fsinfo) => 0;
assert(fsinfo.flags & LFS3_I_REGBMAP);
assert(fsinfo.flags & LFS3_I_LOOKGBMAP);
// check the file contents
lfs3_file_open(&lfs3, &file, "spider", LFS3_O_RDONLY) => 0;
@@ -428,17 +428,17 @@ code = '''
# test that we can relax gbmap repopulation with gc_regbmap_thresh
[cases.test_gc_regbmap_relaxed]
# relax our repop thresh
defines.GC_REGBMAP_THRESH = [
defines.GC_LOOKGBMAP_THRESH = [
'-1',
'BLOCK_COUNT - (BLOCK_COUNT/4)',
'BLOCK_COUNT - (BLOCK_COUNT/2)',
]
defines.RELOOKAHEAD = [false, true]
defines.LOOKAHEAD = [false, true]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.GC_FLAGS = '''
LFS3_GC_REGBMAP
| ((RELOOKAHEAD) ? LFS3_GC_RELOOKAHEAD : 0)
LFS3_GC_LOOKGBMAP
| ((LOOKAHEAD) ? LFS3_GC_LOOKAHEAD : 0)
| ((CKMETA) ? LFS3_GC_CKMETA : 0)
| ((CKDATA) ? LFS3_GC_CKDATA : 0)
'''
@@ -476,7 +476,7 @@ code = '''
struct lfs3_fsinfo fsinfo;
lfs3_fs_stat(&lfs3, &fsinfo) => 0;
if (!(fsinfo.flags & LFS3_I_REGBMAP)) {
if (!(fsinfo.flags & LFS3_I_LOOKGBMAP)) {
break;
}
}
@@ -503,9 +503,9 @@ code = '''
struct lfs3_fsinfo fsinfo;
lfs3_fs_stat(&lfs3, &fsinfo) => 0;
if (fsinfo.flags & LFS3_I_REGBMAP) {
if (fsinfo.flags & LFS3_I_LOOKGBMAP) {
// check that we actually relaxed repopulations
if ((lfs3_size_t)GC_REGBMAP_THRESH
if ((lfs3_size_t)GC_LOOKGBMAP_THRESH
< BLOCK_COUNT-1) {
assert(i > 0);
} else {
@@ -524,7 +524,7 @@ code = '''
struct lfs3_fsinfo fsinfo;
lfs3_fs_stat(&lfs3, &fsinfo) => 0;
if (!(fsinfo.flags & LFS3_I_REGBMAP)) {
if (!(fsinfo.flags & LFS3_I_LOOKGBMAP)) {
break;
}
}
@@ -541,12 +541,12 @@ code = '''
# test that compactmeta can make progress in isolation
[cases.test_gc_compactmeta_progress]
defines.RELOOKAHEAD = [false, true]
defines.LOOKAHEAD = [false, true]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.GC_FLAGS = '''
LFS3_GC_COMPACTMETA
| ((RELOOKAHEAD) ? LFS3_GC_RELOOKAHEAD : 0)
| ((LOOKAHEAD) ? LFS3_GC_LOOKAHEAD : 0)
| ((CKMETA) ? LFS3_GC_CKMETA : 0)
| ((CKDATA) ? LFS3_GC_CKDATA : 0)
'''
@@ -632,12 +632,12 @@ code = '''
# test that compactmeta dirtying still works with the GC API
[cases.test_gc_compactmeta_mutation]
defines.RELOOKAHEAD = [false, true]
defines.LOOKAHEAD = [false, true]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.GC_FLAGS = '''
LFS3_GC_COMPACTMETA
| ((RELOOKAHEAD) ? LFS3_GC_RELOOKAHEAD : 0)
| ((LOOKAHEAD) ? LFS3_GC_LOOKAHEAD : 0)
| ((CKMETA) ? LFS3_GC_CKMETA : 0)
| ((CKDATA) ? LFS3_GC_CKDATA : 0)
'''
@@ -738,13 +738,13 @@ code = '''
# test that mkconsistent can make progress in isolation
[cases.test_gc_mkconsistent_progress]
defines.RELOOKAHEAD = [false, true]
defines.LOOKAHEAD = [false, true]
defines.COMPACTMETA = [false, true]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.GC_FLAGS = '''
LFS3_GC_MKCONSISTENT
| ((RELOOKAHEAD) ? LFS3_GC_RELOOKAHEAD : 0)
| ((LOOKAHEAD) ? LFS3_GC_LOOKAHEAD : 0)
| ((COMPACTMETA) ? LFS3_GC_COMPACTMETA : 0)
| ((CKMETA) ? LFS3_GC_CKMETA : 0)
| ((CKDATA) ? LFS3_GC_CKDATA : 0)
@@ -956,13 +956,13 @@ code = '''
# test that mkconsistent dirtying still works with the GC API
[cases.test_gc_mkconsistent_mutation]
defines.RELOOKAHEAD = [false, true]
defines.LOOKAHEAD = [false, true]
defines.COMPACTMETA = [false, true]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.GC_FLAGS = '''
LFS3_GC_MKCONSISTENT
| ((RELOOKAHEAD) ? LFS3_GC_RELOOKAHEAD : 0)
| ((LOOKAHEAD) ? LFS3_GC_LOOKAHEAD : 0)
| ((COMPACTMETA) ? LFS3_GC_COMPACTMETA : 0)
| ((CKMETA) ? LFS3_GC_CKMETA : 0)
| ((CKDATA) ? LFS3_GC_CKDATA : 0)
@@ -1822,15 +1822,15 @@ done:;
# AFTER=3 => after remounting
defines.AFTER = [0, 1, 2, 3]
defines.MKCONSISTENT = [false, true]
defines.RELOOKAHEAD = [false, true]
defines.REGBMAP = [false, true]
defines.LOOKAHEAD = [false, true]
defines.LOOKGBMAP = [false, true]
defines.COMPACTMETA = [false, true]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.GC_FLAGS = '''
((MKCONSISTENT) ? LFS3_GC_MKCONSISTENT : 0)
| ((RELOOKAHEAD) ? LFS3_GC_RELOOKAHEAD : 0)
| ((REGBMAP) ? LFS3_IFDEF_GBMAP(LFS3_GC_REGBMAP, -1) : 0)
| ((LOOKAHEAD) ? LFS3_GC_LOOKAHEAD : 0)
| ((LOOKGBMAP) ? LFS3_IFDEF_GBMAP(LFS3_GC_LOOKGBMAP, -1) : 0)
| ((COMPACTMETA) ? LFS3_GC_COMPACTMETA : 0)
| ((CKMETA) ? LFS3_GC_CKMETA : 0)
| ((CKDATA) ? LFS3_GC_CKDATA : 0)
@@ -1849,7 +1849,7 @@ defines.SIZE = [
if = [
'(SIZE*N)/BLOCK_SIZE <= 32',
'LFS3_IFDEF_GC(true, AFTER != 0)',
'GBMAP || !REGBMAP',
'GBMAP || !LOOKGBMAP',
]
code = '''
lfs3_t lfs3;
@@ -1888,9 +1888,9 @@ code = '''
LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0)
| LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0)
| LFS3_I_MKCONSISTENT
| LFS3_I_RELOOKAHEAD
| LFS3_I_LOOKAHEAD
| ((GBMAP)
? (LFS3_IFDEF_GBMAP(LFS3_I_REGBMAP, -1)
? (LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1)
& fsinfo.flags)
: 0)
| LFS3_I_COMPACTMETA
@@ -1913,9 +1913,9 @@ code = '''
lfs3_fs_stat(&lfs3, &fsinfo) => 0;
if (!(fsinfo.flags & (
((MKCONSISTENT) ? LFS3_I_MKCONSISTENT : 0)
| ((RELOOKAHEAD) ? LFS3_I_RELOOKAHEAD : 0)
| ((REGBMAP)
? LFS3_IFDEF_GBMAP(LFS3_I_REGBMAP, -1)
| ((LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0)
| ((LOOKGBMAP)
? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1)
: 0)
| ((COMPACTMETA) ? LFS3_I_COMPACTMETA : 0)
| ((CKMETA) ? LFS3_I_CKMETA : 0)
@@ -1945,9 +1945,9 @@ code = '''
lfs3_fs_stat(&lfs3, &fsinfo) => 0;
if (!(fsinfo.flags & (
((MKCONSISTENT) ? LFS3_I_MKCONSISTENT : 0)
| ((RELOOKAHEAD) ? LFS3_I_RELOOKAHEAD : 0)
| ((REGBMAP)
? LFS3_IFDEF_GBMAP(LFS3_I_REGBMAP, -1)
| ((LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0)
| ((LOOKGBMAP)
? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1)
: 0)
| ((COMPACTMETA) ? LFS3_I_COMPACTMETA : 0)
| ((CKMETA) ? LFS3_I_CKMETA : 0)
@@ -1959,11 +1959,11 @@ code = '''
lfs3_fs_mkconsistent(&lfs3) => 0;
}
if (RELOOKAHEAD && (fsinfo.flags & LFS3_I_RELOOKAHEAD)) {
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_RELOOKAHEAD) => 0;
LFS3_T_RDWR | LFS3_T_LOOKAHEAD) => 0;
while (true) {
struct lfs3_tinfo tinfo;
int err = lfs3_trv_read(&lfs3, &trv, &tinfo);
@@ -1976,11 +1976,11 @@ code = '''
}
#ifdef LFS3_GBMAP
if (REGBMAP && (fsinfo.flags & LFS3_I_REGBMAP)) {
if (LOOKGBMAP && (fsinfo.flags & LFS3_I_LOOKGBMAP)) {
// we need an explicit traversal for this
lfs3_trv_t trv;
lfs3_trv_open(&lfs3, &trv,
LFS3_T_RDWR | LFS3_T_REGBMAP) => 0;
LFS3_T_RDWR | LFS3_T_LOOKGBMAP) => 0;
while (true) {
struct lfs3_tinfo tinfo;
int err = lfs3_trv_read(&lfs3, &trv, &tinfo);
@@ -2033,10 +2033,10 @@ code = '''
LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0)
| LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0)
| ((!MKCONSISTENT) ? LFS3_I_MKCONSISTENT : 0)
| ((!RELOOKAHEAD) ? LFS3_I_RELOOKAHEAD : 0)
| ((!REGBMAP)
| ((!LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0)
| ((!LOOKGBMAP)
? ((GBMAP)
? (LFS3_IFDEF_GBMAP(LFS3_I_REGBMAP, -1)
? (LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1)
& fsinfo.flags)
: 0)
: 0)
@@ -2057,15 +2057,15 @@ code = '''
# AFTER=3 => after remounting
defines.AFTER = [0, 1, 2, 3]
defines.MKCONSISTENT = [false, true]
defines.RELOOKAHEAD = [false, true]
defines.REGBMAP = [false, true]
defines.LOOKAHEAD = [false, true]
defines.LOOKGBMAP = [false, true]
defines.COMPACTMETA = [false, true]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.GC_FLAGS = '''
((MKCONSISTENT) ? LFS3_GC_MKCONSISTENT : 0)
| ((RELOOKAHEAD) ? LFS3_GC_RELOOKAHEAD : 0)
| ((REGBMAP) ? LFS3_IFDEF_GBMAP(LFS3_GC_REGBMAP, -1) : 0)
| ((LOOKAHEAD) ? LFS3_GC_LOOKAHEAD : 0)
| ((LOOKGBMAP) ? LFS3_IFDEF_GBMAP(LFS3_GC_LOOKGBMAP, -1) : 0)
| ((COMPACTMETA) ? LFS3_GC_COMPACTMETA : 0)
| ((CKMETA) ? LFS3_GC_CKMETA : 0)
| ((CKDATA) ? LFS3_GC_CKDATA : 0)
@@ -2084,7 +2084,7 @@ defines.SIZE = [
if = [
'(SIZE*N)/BLOCK_SIZE <= 32',
'LFS3_IFDEF_GC(true, AFTER != 0)',
'GBMAP || !REGBMAP',
'GBMAP || !LOOKGBMAP',
]
code = '''
lfs3_t lfs3;
@@ -2123,9 +2123,9 @@ code = '''
LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0)
| LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0)
| LFS3_I_MKCONSISTENT
| LFS3_I_RELOOKAHEAD
| LFS3_I_LOOKAHEAD
| ((GBMAP)
? (LFS3_IFDEF_GBMAP(LFS3_I_REGBMAP, -1)
? (LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1)
& fsinfo.flags)
: 0)
| LFS3_I_COMPACTMETA
@@ -2148,9 +2148,9 @@ code = '''
lfs3_fs_stat(&lfs3, &fsinfo) => 0;
if (!(fsinfo.flags & (
((MKCONSISTENT) ? LFS3_I_MKCONSISTENT : 0)
| ((RELOOKAHEAD) ? LFS3_I_RELOOKAHEAD : 0)
| ((REGBMAP)
? LFS3_IFDEF_GBMAP(LFS3_I_REGBMAP, -1)
| ((LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0)
| ((LOOKGBMAP)
? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1)
: 0)
| ((COMPACTMETA) ? LFS3_I_COMPACTMETA : 0)
| ((CKMETA) ? LFS3_I_CKMETA : 0)
@@ -2180,9 +2180,9 @@ code = '''
lfs3_fs_stat(&lfs3, &fsinfo) => 0;
if (!(fsinfo.flags & (
((MKCONSISTENT) ? LFS3_I_MKCONSISTENT : 0)
| ((RELOOKAHEAD) ? LFS3_I_RELOOKAHEAD : 0)
| ((REGBMAP)
? LFS3_IFDEF_GBMAP(LFS3_I_REGBMAP, -1)
| ((LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0)
| ((LOOKGBMAP)
? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1)
: 0)
| ((COMPACTMETA) ? LFS3_I_COMPACTMETA : 0)
| ((CKMETA) ? LFS3_I_CKMETA : 0)
@@ -2194,11 +2194,11 @@ code = '''
lfs3_fs_mkconsistent(&lfs3) => 0;
}
if (RELOOKAHEAD && (fsinfo.flags & LFS3_I_RELOOKAHEAD)) {
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_RELOOKAHEAD) => 0;
LFS3_T_RDWR | LFS3_T_LOOKAHEAD) => 0;
while (true) {
struct lfs3_tinfo tinfo;
int err = lfs3_trv_read(&lfs3, &trv, &tinfo);
@@ -2211,11 +2211,11 @@ code = '''
}
#ifdef LFS3_GBMAP
if (REGBMAP && (fsinfo.flags & LFS3_I_REGBMAP)) {
if (LOOKGBMAP && (fsinfo.flags & LFS3_I_LOOKGBMAP)) {
// we need an explicit traversal for this
lfs3_trv_t trv;
lfs3_trv_open(&lfs3, &trv,
LFS3_T_RDWR | LFS3_T_REGBMAP) => 0;
LFS3_T_RDWR | LFS3_T_LOOKGBMAP) => 0;
while (true) {
struct lfs3_tinfo tinfo;
int err = lfs3_trv_read(&lfs3, &trv, &tinfo);
@@ -2268,10 +2268,10 @@ code = '''
LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0)
| LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0)
| ((!MKCONSISTENT) ? LFS3_I_MKCONSISTENT : 0)
| ((!RELOOKAHEAD) ? LFS3_I_RELOOKAHEAD : 0)
| ((!REGBMAP)
| ((!LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0)
| ((!LOOKGBMAP)
? ((GBMAP)
? (LFS3_IFDEF_GBMAP(LFS3_I_REGBMAP, -1)
? (LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1)
& fsinfo.flags)
: 0)
: 0)
@@ -2290,11 +2290,11 @@ code = '''
LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0)
| LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0)
| LFS3_I_MKCONSISTENT
| LFS3_I_RELOOKAHEAD
| ((REGBMAP)
? LFS3_IFDEF_GBMAP(LFS3_I_REGBMAP, -1U)
| LFS3_I_LOOKAHEAD
| ((LOOKGBMAP)
? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1U)
: (GBMAP)
? (LFS3_IFDEF_GBMAP(LFS3_I_REGBMAP, -1)
? (LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1)
& fsinfo.flags)
: 0)
| LFS3_I_COMPACTMETA
@@ -2319,9 +2319,9 @@ code = '''
lfs3_fs_stat(&lfs3, &fsinfo) => 0;
if (!(fsinfo.flags & (
((MKCONSISTENT) ? LFS3_I_MKCONSISTENT : 0)
| ((RELOOKAHEAD) ? LFS3_I_RELOOKAHEAD : 0)
| ((REGBMAP)
? LFS3_IFDEF_GBMAP(LFS3_I_REGBMAP, -1)
| ((LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0)
| ((LOOKGBMAP)
? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1)
: 0)
| ((COMPACTMETA) ? LFS3_I_COMPACTMETA : 0)
| ((CKMETA) ? LFS3_I_CKMETA : 0)
@@ -2351,9 +2351,9 @@ code = '''
lfs3_fs_stat(&lfs3, &fsinfo) => 0;
if (!(fsinfo.flags & (
((MKCONSISTENT) ? LFS3_I_MKCONSISTENT : 0)
| ((RELOOKAHEAD) ? LFS3_I_RELOOKAHEAD : 0)
| ((REGBMAP)
? LFS3_IFDEF_GBMAP(LFS3_I_REGBMAP, -1)
| ((LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0)
| ((LOOKGBMAP)
? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1)
: 0)
| ((COMPACTMETA) ? LFS3_I_COMPACTMETA : 0)
| ((CKMETA) ? LFS3_I_CKMETA : 0)
@@ -2365,11 +2365,11 @@ code = '''
lfs3_fs_mkconsistent(&lfs3) => 0;
}
if (RELOOKAHEAD && (fsinfo.flags & LFS3_I_RELOOKAHEAD)) {
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_RELOOKAHEAD) => 0;
LFS3_T_RDWR | LFS3_T_LOOKAHEAD) => 0;
while (true) {
struct lfs3_tinfo tinfo;
int err = lfs3_trv_read(&lfs3, &trv, &tinfo);
@@ -2382,11 +2382,11 @@ code = '''
}
#ifdef LFS3_GBMAP
if (REGBMAP && (fsinfo.flags & LFS3_I_REGBMAP)) {
if (LOOKGBMAP && (fsinfo.flags & LFS3_I_LOOKGBMAP)) {
// we need an explicit traversal for this
lfs3_trv_t trv;
lfs3_trv_open(&lfs3, &trv,
LFS3_T_RDWR | LFS3_T_REGBMAP) => 0;
LFS3_T_RDWR | LFS3_T_LOOKGBMAP) => 0;
while (true) {
struct lfs3_tinfo tinfo;
int err = lfs3_trv_read(&lfs3, &trv, &tinfo);
@@ -2439,10 +2439,10 @@ code = '''
LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0)
| LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0)
| ((!MKCONSISTENT) ? LFS3_I_MKCONSISTENT : 0)
| ((!RELOOKAHEAD) ? LFS3_I_RELOOKAHEAD : 0)
| ((!REGBMAP)
| ((!LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0)
| ((!LOOKGBMAP)
? ((GBMAP)
? (LFS3_IFDEF_GBMAP(LFS3_I_REGBMAP, -1)
? (LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1)
& fsinfo.flags)
: 0)
: 0)
@@ -2460,15 +2460,15 @@ code = '''
[cases.test_gc_mutation]
defines.N = 100
defines.MKCONSISTENT = [false, true]
defines.RELOOKAHEAD = [false, true]
defines.REGBMAP = [false, true]
defines.LOOKAHEAD = [false, true]
defines.LOOKGBMAP = [false, true]
defines.COMPACTMETA = [false, true]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.GC_FLAGS = '''
((MKCONSISTENT) ? LFS3_GC_MKCONSISTENT : 0)
| ((RELOOKAHEAD) ? LFS3_GC_RELOOKAHEAD : 0)
| ((REGBMAP) ? LFS3_IFDEF_GBMAP(LFS3_GC_REGBMAP, -1) : 0)
| ((LOOKAHEAD) ? LFS3_GC_LOOKAHEAD : 0)
| ((LOOKGBMAP) ? LFS3_IFDEF_GBMAP(LFS3_GC_LOOKGBMAP, -1) : 0)
| ((COMPACTMETA) ? LFS3_GC_COMPACTMETA : 0)
| ((CKMETA) ? LFS3_GC_CKMETA : 0)
| ((CKDATA) ? LFS3_GC_CKDATA : 0)
@@ -2484,7 +2484,7 @@ defines.SIZE = [
'2*BLOCK_SIZE',
'8*BLOCK_SIZE',
]
if = 'GBMAP || !REGBMAP'
if = 'GBMAP || !LOOKGBMAP'
ifdef = 'LFS3_GC'
code = '''
lfs3_t lfs3;
@@ -2535,15 +2535,15 @@ code = '''
[cases.test_gc_mutation_unck]
defines.N = 100
defines.MKCONSISTENT = [false, true]
defines.RELOOKAHEAD = [false, true]
defines.REGBMAP = [false, true]
defines.LOOKAHEAD = [false, true]
defines.LOOKGBMAP = [false, true]
defines.COMPACTMETA = [false, true]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.GC_FLAGS = '''
((MKCONSISTENT) ? LFS3_GC_MKCONSISTENT : 0)
| ((RELOOKAHEAD) ? LFS3_GC_RELOOKAHEAD : 0)
| ((REGBMAP) ? LFS3_IFDEF_GBMAP(LFS3_GC_REGBMAP, -1) : 0)
| ((LOOKAHEAD) ? LFS3_GC_LOOKAHEAD : 0)
| ((LOOKGBMAP) ? LFS3_IFDEF_GBMAP(LFS3_GC_LOOKGBMAP, -1) : 0)
| ((COMPACTMETA) ? LFS3_GC_COMPACTMETA : 0)
| ((CKMETA) ? LFS3_GC_CKMETA : 0)
| ((CKDATA) ? LFS3_GC_CKDATA : 0)
@@ -2559,7 +2559,7 @@ defines.SIZE = [
'2*BLOCK_SIZE',
'8*BLOCK_SIZE',
]
if = 'GBMAP || !REGBMAP'
if = 'GBMAP || !LOOKGBMAP'
ifdef = 'LFS3_GC'
code = '''
lfs3_t lfs3;
@@ -2613,15 +2613,15 @@ code = '''
# test that gc work doesn't break anything in low-space condiditions
[cases.test_gc_nospc]
defines.MKCONSISTENT = [false, true]
defines.RELOOKAHEAD = [false, true]
defines.REGBMAP = [false, true]
defines.LOOKAHEAD = [false, true]
defines.LOOKGBMAP = [false, true]
defines.COMPACTMETA = [false, true]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.GC_FLAGS = '''
((MKCONSISTENT) ? LFS3_GC_MKCONSISTENT : 0)
| ((RELOOKAHEAD) ? LFS3_GC_RELOOKAHEAD : 0)
| ((REGBMAP) ? LFS3_IFDEF_GBMAP(LFS3_GC_REGBMAP, -1) : 0)
| ((LOOKAHEAD) ? LFS3_GC_LOOKAHEAD : 0)
| ((LOOKGBMAP) ? LFS3_IFDEF_GBMAP(LFS3_GC_LOOKGBMAP, -1) : 0)
| ((COMPACTMETA) ? LFS3_GC_COMPACTMETA : 0)
| ((CKMETA) ? LFS3_GC_CKMETA : 0)
| ((CKDATA) ? LFS3_GC_CKDATA : 0)
@@ -2631,7 +2631,7 @@ defines.GC_STEPS = [1, 2, 10, 100, 1000]
# set compactmeta thresh to minimum
defines.GC_COMPACTMETA_THRESH = 'BLOCK_SIZE/2'
defines.SIZE = 'BLOCK_SIZE'
if = 'GBMAP || !REGBMAP'
if = 'GBMAP || !LOOKGBMAP'
ifdef = 'LFS3_GC'
code = '''
lfs3_t lfs3;
@@ -2721,16 +2721,16 @@ code = '''
[cases.test_gc_spam_dir_many]
defines.MKCONSISTENT = [false, true]
defines.RELOOKAHEAD = [false, true]
defines.REGBMAP = [false, true]
defines.LOOKAHEAD = [false, true]
defines.LOOKGBMAP = [false, true]
defines.COMPACTMETA = [false, true]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.UNCK = [false, true]
defines.GC_FLAGS = '''
((MKCONSISTENT) ? LFS3_GC_MKCONSISTENT : 0)
| ((RELOOKAHEAD) ? LFS3_GC_RELOOKAHEAD : 0)
| ((REGBMAP) ? LFS3_IFDEF_GBMAP(LFS3_GC_REGBMAP, -1) : 0)
| ((LOOKAHEAD) ? LFS3_GC_LOOKAHEAD : 0)
| ((LOOKGBMAP) ? LFS3_IFDEF_GBMAP(LFS3_GC_LOOKGBMAP, -1) : 0)
| ((COMPACTMETA) ? LFS3_GC_COMPACTMETA : 0)
| ((CKMETA) ? LFS3_GC_CKMETA : 0)
| ((CKDATA) ? LFS3_GC_CKDATA : 0)
@@ -2739,7 +2739,7 @@ defines.GC_STEPS = [-1, 1, 2, 10, 100, 1000]
# set compactmeta thresh to minimum
defines.GC_COMPACTMETA_THRESH = 'BLOCK_SIZE/2'
defines.N = [1, 2, 4, 8, 16, 32, 64, 128, 256]
if = 'GBMAP || !REGBMAP'
if = 'GBMAP || !LOOKGBMAP'
ifdef = 'LFS3_GC'
code = '''
// test creating directories
@@ -2831,16 +2831,16 @@ code = '''
[cases.test_gc_spam_dir_fuzz]
defines.MKCONSISTENT = [false, true]
defines.RELOOKAHEAD = [false, true]
defines.REGBMAP = [false, true]
defines.LOOKAHEAD = [false, true]
defines.LOOKGBMAP = [false, true]
defines.COMPACTMETA = [false, true]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.UNCK = [false, true]
defines.GC_FLAGS = '''
((MKCONSISTENT) ? LFS3_GC_MKCONSISTENT : 0)
| ((RELOOKAHEAD) ? LFS3_GC_RELOOKAHEAD : 0)
| ((REGBMAP) ? LFS3_IFDEF_GBMAP(LFS3_GC_REGBMAP, -1) : 0)
| ((LOOKAHEAD) ? LFS3_GC_LOOKAHEAD : 0)
| ((LOOKGBMAP) ? LFS3_IFDEF_GBMAP(LFS3_GC_LOOKGBMAP, -1) : 0)
| ((COMPACTMETA) ? LFS3_GC_COMPACTMETA : 0)
| ((CKMETA) ? LFS3_GC_CKMETA : 0)
| ((CKDATA) ? LFS3_GC_CKDATA : 0)
@@ -2852,7 +2852,7 @@ defines.N = [1, 2, 4, 8, 16, 32, 64, 128, 256]
defines.OPS = '2*N'
defines.SEED = 42
fuzz = 'SEED'
if = 'GBMAP || !REGBMAP'
if = 'GBMAP || !LOOKGBMAP'
ifdef = 'LFS3_GC'
code = '''
// test fuzz with dirs
@@ -3012,16 +3012,16 @@ code = '''
[cases.test_gc_spam_file_many]
defines.MKCONSISTENT = [false, true]
defines.RELOOKAHEAD = [false, true]
defines.REGBMAP = [false, true]
defines.LOOKAHEAD = [false, true]
defines.LOOKGBMAP = [false, true]
defines.COMPACTMETA = [false, true]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.UNCK = [false, true]
defines.GC_FLAGS = '''
((MKCONSISTENT) ? LFS3_GC_MKCONSISTENT : 0)
| ((RELOOKAHEAD) ? LFS3_GC_RELOOKAHEAD : 0)
| ((REGBMAP) ? LFS3_IFDEF_GBMAP(LFS3_GC_REGBMAP, -1) : 0)
| ((LOOKAHEAD) ? LFS3_GC_LOOKAHEAD : 0)
| ((LOOKGBMAP) ? LFS3_IFDEF_GBMAP(LFS3_GC_LOOKGBMAP, -1) : 0)
| ((COMPACTMETA) ? LFS3_GC_COMPACTMETA : 0)
| ((CKMETA) ? LFS3_GC_CKMETA : 0)
| ((CKDATA) ? LFS3_GC_CKDATA : 0)
@@ -3041,7 +3041,7 @@ defines.SIZE = [
]
if = [
'(SIZE*N)/BLOCK_SIZE <= 32',
'GBMAP || !REGBMAP',
'GBMAP || !LOOKGBMAP',
]
ifdef = 'LFS3_GC'
code = '''
@@ -3118,16 +3118,16 @@ code = '''
[cases.test_gc_spam_file_fuzz]
defines.MKCONSISTENT = [false, true]
defines.RELOOKAHEAD = [false, true]
defines.REGBMAP = [false, true]
defines.LOOKAHEAD = [false, true]
defines.LOOKGBMAP = [false, true]
defines.COMPACTMETA = [false, true]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.UNCK = [false, true]
defines.GC_FLAGS = '''
((MKCONSISTENT) ? LFS3_GC_MKCONSISTENT : 0)
| ((RELOOKAHEAD) ? LFS3_GC_RELOOKAHEAD : 0)
| ((REGBMAP) ? LFS3_IFDEF_GBMAP(LFS3_GC_REGBMAP, -1) : 0)
| ((LOOKAHEAD) ? LFS3_GC_LOOKAHEAD : 0)
| ((LOOKGBMAP) ? LFS3_IFDEF_GBMAP(LFS3_GC_LOOKGBMAP, -1) : 0)
| ((COMPACTMETA) ? LFS3_GC_COMPACTMETA : 0)
| ((CKMETA) ? LFS3_GC_CKMETA : 0)
| ((CKDATA) ? LFS3_GC_CKDATA : 0)
@@ -3150,7 +3150,7 @@ defines.SEED = 42
fuzz = 'SEED'
if = [
'(SIZE*N)/BLOCK_SIZE <= 16',
'GBMAP || !REGBMAP',
'GBMAP || !LOOKGBMAP',
]
ifdef = 'LFS3_GC'
code = '''
@@ -3363,16 +3363,16 @@ code = '''
[cases.test_gc_spam_fwrite_fuzz]
defines.MKCONSISTENT = [false, true]
defines.RELOOKAHEAD = [false, true]
defines.REGBMAP = [false, true]
defines.LOOKAHEAD = [false, true]
defines.LOOKGBMAP = [false, true]
defines.COMPACTMETA = [false, true]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.UNCK = [false, true]
defines.GC_FLAGS = '''
((MKCONSISTENT) ? LFS3_GC_MKCONSISTENT : 0)
| ((RELOOKAHEAD) ? LFS3_GC_RELOOKAHEAD : 0)
| ((REGBMAP) ? LFS3_IFDEF_GBMAP(LFS3_GC_REGBMAP, -1) : 0)
| ((LOOKAHEAD) ? LFS3_GC_LOOKAHEAD : 0)
| ((LOOKGBMAP) ? LFS3_IFDEF_GBMAP(LFS3_GC_LOOKGBMAP, -1) : 0)
| ((COMPACTMETA) ? LFS3_GC_COMPACTMETA : 0)
| ((CKMETA) ? LFS3_GC_CKMETA : 0)
| ((CKDATA) ? LFS3_GC_CKDATA : 0)
@@ -3402,7 +3402,7 @@ if = [
'CHUNK <= SIZE',
# this just saves testing time
'SIZE <= 4*1024*FRAGMENT_SIZE',
'GBMAP || !REGBMAP',
'GBMAP || !LOOKGBMAP',
]
ifdef = 'LFS3_GC'
code = '''
@@ -3526,16 +3526,16 @@ code = '''
[cases.test_gc_spam_uz_fuzz]
defines.MKCONSISTENT = [false, true]
defines.RELOOKAHEAD = [false, true]
defines.REGBMAP = [false, true]
defines.LOOKAHEAD = [false, true]
defines.LOOKGBMAP = [false, true]
defines.COMPACTMETA = [false, true]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.UNCK = [false, true]
defines.GC_FLAGS = '''
((MKCONSISTENT) ? LFS3_GC_MKCONSISTENT : 0)
| ((RELOOKAHEAD) ? LFS3_GC_RELOOKAHEAD : 0)
| ((REGBMAP) ? LFS3_IFDEF_GBMAP(LFS3_GC_REGBMAP, -1) : 0)
| ((LOOKAHEAD) ? LFS3_GC_LOOKAHEAD : 0)
| ((LOOKGBMAP) ? LFS3_IFDEF_GBMAP(LFS3_GC_LOOKGBMAP, -1) : 0)
| ((COMPACTMETA) ? LFS3_GC_COMPACTMETA : 0)
| ((CKMETA) ? LFS3_GC_CKMETA : 0)
| ((CKDATA) ? LFS3_GC_CKDATA : 0)
@@ -3560,7 +3560,7 @@ defines.SEED = 42
fuzz = 'SEED'
if = [
'(SIZE*N)/BLOCK_SIZE <= 16',
'GBMAP || !REGBMAP',
'GBMAP || !LOOKGBMAP',
]
ifdef = 'LFS3_GC'
code = '''
@@ -3982,16 +3982,16 @@ code = '''
[cases.test_gc_spam_uzd_fuzz]
defines.MKCONSISTENT = [false, true]
defines.RELOOKAHEAD = [false, true]
defines.REGBMAP = [false, true]
defines.LOOKAHEAD = [false, true]
defines.LOOKGBMAP = [false, true]
defines.COMPACTMETA = [false, true]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.UNCK = [false, true]
defines.GC_FLAGS = '''
((MKCONSISTENT) ? LFS3_GC_MKCONSISTENT : 0)
| ((RELOOKAHEAD) ? LFS3_GC_RELOOKAHEAD : 0)
| ((REGBMAP) ? LFS3_IFDEF_GBMAP(LFS3_GC_REGBMAP, -1) : 0)
| ((LOOKAHEAD) ? LFS3_GC_LOOKAHEAD : 0)
| ((LOOKGBMAP) ? LFS3_IFDEF_GBMAP(LFS3_GC_LOOKGBMAP, -1) : 0)
| ((COMPACTMETA) ? LFS3_GC_COMPACTMETA : 0)
| ((CKMETA) ? LFS3_GC_CKMETA : 0)
| ((CKDATA) ? LFS3_GC_CKDATA : 0)
@@ -4016,7 +4016,7 @@ defines.SEED = 42
fuzz = 'SEED'
if = [
'(SIZE*N)/BLOCK_SIZE <= 16',
'GBMAP || !REGBMAP',
'GBMAP || !LOOKGBMAP',
]
ifdef = 'LFS3_GC'
code = '''
+37 -37
View File
@@ -24,8 +24,8 @@ defines.CKFETCHES = [false, true]
defines.CKMETAPARITY = [false, true]
defines.CKDATACKSUMS = [false, true]
defines.MKCONSISTENT = [false, true]
defines.RELOOKAHEAD = [false, true]
defines.REGBMAP = [false, true]
defines.LOOKAHEAD = [false, true]
defines.LOOKGBMAP = [false, true]
defines.COMPACTMETA = [false, true]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
@@ -37,9 +37,9 @@ if = [
'LFS3_IFDEF_CKMETAPARITY(true, !CKMETAPARITY)',
'LFS3_IFDEF_CKDATACKSUMS(true, !CKDATACKSUMS)',
'!RDONLY || !MKCONSISTENT',
'!RDONLY || !RELOOKAHEAD',
'LFS3_IFDEF_YES_GBMAP(true, !REGBMAP)',
'!RDONLY || !REGBMAP',
'!RDONLY || !LOOKAHEAD',
'LFS3_IFDEF_YES_GBMAP(true, !LOOKGBMAP)',
'!RDONLY || !LOOKGBMAP',
'!RDONLY || !COMPACTMETA',
]
code = '''
@@ -60,9 +60,9 @@ code = '''
? LFS3_IFDEF_CKDATACKSUMS(LFS3_M_CKDATACKSUMS, -1)
: 0)
| ((MKCONSISTENT) ? LFS3_M_MKCONSISTENT : 0)
| ((RELOOKAHEAD) ? LFS3_M_RELOOKAHEAD : 0)
| ((REGBMAP)
? LFS3_IFDEF_GBMAP(LFS3_M_REGBMAP, -1)
| ((LOOKAHEAD) ? LFS3_M_LOOKAHEAD : 0)
| ((LOOKGBMAP)
? LFS3_IFDEF_GBMAP(LFS3_M_LOOKGBMAP, -1)
: 0)
| ((COMPACTMETA) ? LFS3_M_COMPACTMETA : 0)
| ((CKMETA) ? LFS3_M_CKMETA : 0)
@@ -87,7 +87,7 @@ code = '''
? LFS3_IFDEF_CKDATACKSUMS(LFS3_I_CKDATACKSUMS, -1)
: 0)
| ((!MKCONSISTENT) ? LFS3_I_MKCONSISTENT : 0)
| ((!RELOOKAHEAD) ? LFS3_I_RELOOKAHEAD : 0)
| ((!LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0)
| ((!COMPACTMETA) ? LFS3_I_COMPACTMETA : 0)
// note ckdata implies ckmeta
| ((!CKMETA && !CKDATA) ? LFS3_I_CKMETA : 0)
@@ -108,8 +108,8 @@ defines.CKFETCHES = [false, true]
defines.CKMETAPARITY = [false, true]
defines.CKDATACKSUMS = [false, true]
defines.MKCONSISTENT = [false, true]
defines.RELOOKAHEAD = [false, true]
defines.REGBMAP = [false, true]
defines.LOOKAHEAD = [false, true]
defines.LOOKGBMAP = [false, true]
defines.COMPACTMETA = [false, true]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
@@ -121,7 +121,7 @@ if = [
'LFS3_IFDEF_CKFETCHES(true, !CKFETCHES)',
'LFS3_IFDEF_CKMETAPARITY(true, !CKMETAPARITY)',
'LFS3_IFDEF_CKDATACKSUMS(true, !CKDATACKSUMS)',
'LFS3_IFDEF_YES_GBMAP(true, !REGBMAP)',
'LFS3_IFDEF_YES_GBMAP(true, !LOOKGBMAP)',
'LFS3_IFDEF_GBMAP(true, !GBMAP)',
]
code = '''
@@ -139,9 +139,9 @@ code = '''
? LFS3_IFDEF_CKDATACKSUMS(LFS3_F_CKDATACKSUMS, -1)
: 0)
| ((MKCONSISTENT) ? LFS3_F_MKCONSISTENT : 0)
| ((RELOOKAHEAD) ? LFS3_F_RELOOKAHEAD : 0)
| ((REGBMAP)
? LFS3_IFDEF_GBMAP(LFS3_F_REGBMAP, -1)
| ((LOOKAHEAD) ? LFS3_F_LOOKAHEAD : 0)
| ((LOOKGBMAP)
? LFS3_IFDEF_GBMAP(LFS3_F_LOOKGBMAP, -1)
: 0)
| ((COMPACTMETA) ? LFS3_F_COMPACTMETA : 0)
| ((CKMETA) ? LFS3_F_CKMETA : 0)
@@ -157,7 +157,7 @@ code = '''
LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0)
| LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0)
| LFS3_I_MKCONSISTENT
| LFS3_I_RELOOKAHEAD
| LFS3_I_LOOKAHEAD
| LFS3_I_COMPACTMETA
| LFS3_I_CKMETA
| LFS3_I_CKDATA
@@ -186,17 +186,17 @@ code = '''
LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0)
| LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0)
| LFS3_I_MKCONSISTENT
| LFS3_I_RELOOKAHEAD
| LFS3_I_LOOKAHEAD
| LFS3_I_COMPACTMETA
| LFS3_I_CKMETA
| LFS3_I_CKDATA
| LFS3_IFDEF_YES_GBMAP(LFS3_I_GBMAP, 0)));
lfs3_unmount(&lfs3) => 0;
// with LFS3_M_RELOOKAHEAD, mount performs a lookahead scan
// with LFS3_M_LOOKAHEAD, mount performs a lookahead scan
lfs3_mount(&lfs3,
LFS3_M_RDWR
| LFS3_M_RELOOKAHEAD
| LFS3_M_LOOKAHEAD
| ((CKMETA) ? LFS3_M_CKMETA : 0)
| ((CKDATA) ? LFS3_M_CKDATA : 0),
CFG) => 0;
@@ -237,7 +237,7 @@ code = '''
LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0)
| LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0)
| LFS3_I_MKCONSISTENT
| LFS3_I_RELOOKAHEAD
| LFS3_I_LOOKAHEAD
| LFS3_I_COMPACTMETA
| LFS3_I_CKMETA
| LFS3_I_CKDATA
@@ -261,19 +261,19 @@ code = '''
LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0)
| LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0)
| LFS3_I_MKCONSISTENT
| LFS3_I_RELOOKAHEAD
| LFS3_I_REGBMAP
| LFS3_I_LOOKAHEAD
| LFS3_I_LOOKGBMAP
| LFS3_I_COMPACTMETA
| LFS3_I_CKMETA
| LFS3_I_CKDATA
| LFS3_IFDEF_GBMAP(LFS3_I_GBMAP, 0)));
lfs3_unmount(&lfs3) => 0;
// with LFS3_M_REGBMAP, mount performs a gbmap repop
// with LFS3_M_LOOKGBMAP, mount performs a gbmap repop
lfs3_mount(&lfs3,
LFS3_M_RDWR
| LFS3_M_RELOOKAHEAD
| LFS3_M_REGBMAP
| LFS3_M_LOOKAHEAD
| LFS3_M_LOOKGBMAP
| ((CKMETA) ? LFS3_M_CKMETA : 0)
| ((CKDATA) ? LFS3_M_CKDATA : 0),
CFG) => 0;
@@ -291,7 +291,7 @@ code = '''
'''
[cases.test_mount_t_compactmeta]
defines.RELOOKAHEAD = [false, true]
defines.LOOKAHEAD = [false, true]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.SIZE = [
@@ -340,9 +340,9 @@ code = '''
LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0)
| LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0)
| LFS3_I_MKCONSISTENT
| LFS3_I_RELOOKAHEAD
| LFS3_I_LOOKAHEAD
| LFS3_IFDEF_YES_GBMAP(
(SIZE >= BLOCK_SIZE/4) ? LFS3_I_REGBMAP : 0,
(SIZE >= BLOCK_SIZE/4) ? LFS3_I_LOOKGBMAP : 0,
0)
| LFS3_I_COMPACTMETA
| LFS3_I_CKMETA
@@ -354,7 +354,7 @@ code = '''
lfs3_mount(&lfs3,
LFS3_M_RDWR
| LFS3_M_COMPACTMETA
| ((RELOOKAHEAD) ? LFS3_M_RELOOKAHEAD : 0)
| ((LOOKAHEAD) ? LFS3_M_LOOKAHEAD : 0)
| ((CKMETA) ? LFS3_M_CKMETA : 0)
| ((CKDATA) ? LFS3_M_CKDATA : 0),
CFG) => 0;
@@ -363,9 +363,9 @@ code = '''
LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0)
| LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0)
| LFS3_I_MKCONSISTENT
| ((!RELOOKAHEAD) ? LFS3_I_RELOOKAHEAD : 0)
| ((!LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0)
| LFS3_IFDEF_YES_GBMAP(
(SIZE >= BLOCK_SIZE/4) ? LFS3_I_REGBMAP : 0,
(SIZE >= BLOCK_SIZE/4) ? LFS3_I_LOOKGBMAP : 0,
0)
// note ckdata implies ckmeta
| ((!CKMETA && !CKDATA) ? LFS3_I_CKMETA : 0)
@@ -386,7 +386,7 @@ code = '''
'''
[cases.test_mount_t_mkconsistent]
defines.RELOOKAHEAD = [false, true]
defines.LOOKAHEAD = [false, true]
defines.COMPACTMETA = [false, true]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
@@ -454,9 +454,9 @@ code = '''
LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0)
| LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0)
| LFS3_I_MKCONSISTENT
| LFS3_I_RELOOKAHEAD
| LFS3_I_LOOKAHEAD
| LFS3_IFDEF_YES_GBMAP(
(ORPHANS >= 100) ? LFS3_I_REGBMAP : 0,
(ORPHANS >= 100) ? LFS3_I_LOOKGBMAP : 0,
0)
| LFS3_I_COMPACTMETA
| LFS3_I_CKMETA
@@ -468,7 +468,7 @@ code = '''
lfs3_mount(&lfs3,
LFS3_M_RDWR
| LFS3_M_MKCONSISTENT
| ((RELOOKAHEAD) ? LFS3_M_RELOOKAHEAD : 0)
| ((LOOKAHEAD) ? LFS3_M_LOOKAHEAD : 0)
| ((COMPACTMETA) ? LFS3_M_COMPACTMETA : 0)
| ((CKMETA) ? LFS3_M_CKMETA : 0)
| ((CKDATA) ? LFS3_M_CKDATA : 0),
@@ -477,9 +477,9 @@ code = '''
assert(fsinfo.flags == (
LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0)
| LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0)
| ((!RELOOKAHEAD) ? LFS3_I_RELOOKAHEAD : 0)
| ((!LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0)
| LFS3_IFDEF_YES_GBMAP(
(ORPHANS >= 100) ? LFS3_I_REGBMAP : 0,
(ORPHANS >= 100) ? LFS3_I_LOOKGBMAP : 0,
0)
| ((!COMPACTMETA) ? LFS3_I_COMPACTMETA : 0)
// note ckdata implies ckmeta
+283 -283
View File
File diff suppressed because it is too large Load Diff