diff --git a/lfs3.c b/lfs3.c index 70d52a63..c0a66a9f 100644 --- a/lfs3.c +++ b/lfs3.c @@ -7226,15 +7226,6 @@ static inline bool lfs3_t_islookahead(uint32_t flags) { #endif } -static inline bool lfs3_t_islookgbmap(uint32_t flags) { - (void)flags; - #if !defined(LFS3_RDONLY) && defined(LFS3_GBMAP) - return flags & LFS3_T_LOOKGBMAP; - #else - return false; - #endif -} - static inline bool lfs3_t_compactmeta(uint32_t flags) { (void)flags; #ifndef LFS3_RDONLY @@ -10259,6 +10250,8 @@ eot:; // needed in lfs3_mtree_gc static int lfs3_mdir_mkconsistent(lfs3_t *lfs3, lfs3_mdir_t *mdir); static inline void lfs3_alloc_ckpoint_(lfs3_t *lfs3); +static inline bool lfs3_alloc_canlookahead(const lfs3_t *lfs3); +static inline bool lfs3_alloc_canlookgbmap(const lfs3_t *lfs3); static void lfs3_alloc_adopt(lfs3_t *lfs3, lfs3_block_t known); static int lfs3_gbmap_zero(lfs3_t *lfs3, lfs3_btree_t *gbmap); static int lfs3_gbmap_markbptr(lfs3_t *lfs3, lfs3_btree_t *gbmap, @@ -10274,49 +10267,57 @@ static lfs3_stag_t lfs3_mtree_gc(lfs3_t *lfs3, lfs3_mgc_t *mgc, // start of traversal? if (mgc->t.h.mdir.mid == LFS3_MID_MROOTANCHOR) { #ifndef LFS3_RDONLY - // checkpoint the allocator to maximize any lookahead scans - // - // note we try to repopupate even if the lookahead flag isn't - // set because there's no real downside + // setup lookahead stuff 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); - // keep our own ckpointed flag clear - mgc->t.h.flags &= ~LFS3_t_CKPOINTED & ~LFS3_t_DIRTY; - } - #endif - - #if !defined(LFS3_RDONLY) && defined(LFS3_GBMAP) - // create a new gbmap snapshot - // - // 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_islookgbmap(mgc->t.h.flags) - && lfs3_f_isgbmap(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 - lfs3_alloc_ckpoint_(lfs3); - - // create a copy of the gbmap - mgc->gbmap_ = lfs3->gbmap.b; - - // mark any in-use blocks as free + // create a new gbmap snapshot? // - // we do this instead of creating a new gbmap to (1) preserve any - // erased/bad info and (2) try to best use any available - // erased-state - int err = lfs3_gbmap_zero(lfs3, &mgc->gbmap_); - if (err) { - return err; + // unfortunate it's not really possible to repopulate both + // the lookahead buffer and gbmap at the same time, so + // decide on one here + if (LFS3_IFDEF_GBMAP( + lfs3_f_isgbmap(lfs3->flags) + // don't try to repopulate if above + // gc_lookgbmap_thresh, unlike the lookahead + // buffer, repopulating the gbmap writes to + // disk! + && lfs3_alloc_canlookgbmap(lfs3) + // prioritize the lookahead buffer if + // gc_lookahead_thresh is triggered + && !lfs3_alloc_canlookahead(lfs3), + false)) { + #ifdef LFS3_GBMAP + // lfs3_gbmap_zero may allocate, so checkpoint the + // lookahead buffer + lfs3_alloc_ckpoint_(lfs3); + + // create a copy of the gbmap + mgc->gbmap_ = lfs3->gbmap.b; + + // mark any in-use blocks as free + // + // we do this instead of creating a new gbmap to + // (1) preserve any erased/bad info and (2) try to best + // use any available erased-state + int err = lfs3_gbmap_zero(lfs3, &mgc->gbmap_); + if (err) { + return err; + } + #endif + + // checkpoint the allocator to maximize any lookahead scans + // + // note we try to repopulate even if the lookahead flag isn't + // set because there's no real downside + } else { + lfs3_alloc_ckpoint_(lfs3); + + #ifdef LFS3_GBMAP + // use weight=0 to indicate we're populating the + // lookahead buffer and not the gbmap + mgc->gbmap_.r.weight = 0; + #endif } // keep our own ckpointed flag clear @@ -10337,27 +10338,25 @@ again:; } #ifndef LFS3_RDONLY - // mark in-use blocks in lookahead? + // mark in-use blocks? 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_); - } + // mark in-use blocks in gbmap? + if (LFS3_IFDEF_GBMAP(mgc->gbmap_.r.weight != 0, false)) { + #ifdef LFS3_GBMAP + int err = lfs3_gbmap_markbptr(lfs3, &mgc->gbmap_, tag, bptr_, + LFS3_TAG_BMINUSE); + if (err) { + return err; + } + #endif - // mark in-use blocks in gbmap? - #ifdef LFS3_GBMAP - if (lfs3_t_islookgbmap(mgc->t.h.flags) - && lfs3_f_isgbmap(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_, - LFS3_TAG_BMINUSE); - if (err) { - return err; + // mark in-use blocks in lookahead buffer? + } else { + lfs3_alloc_markinusebptr(lfs3, tag, bptr_); } } - #endif // mkconsistencing mdirs? if (lfs3_t_ismkconsistent(mgc->t.h.flags) @@ -10419,33 +10418,24 @@ again:; eot:; #ifndef LFS3_RDONLY - // was gbmap scan successful? - // - // this is structured this way because only one repopulation - // scan can succeed at a time, if gbmap succeeds it invalidates the - // lookahead scan with the new gbmap - // - // gbmap takes priority because it actually writes to disk - if (LFS3_IFDEF_GBMAP( - lfs3_t_islookgbmap(mgc->t.h.flags) - && lfs3_f_isgbmap(lfs3->flags) - && lfs3_t_islookgbmap(lfs3->flags) - && !lfs3_t_ismtreeonly(mgc->t.h.flags) - && !lfs3_t_isckpointed(mgc->t.h.flags), - false)) { - #ifdef LFS3_GBMAP - int err = lfs3_alloc_adoptgbmap(lfs3, &mgc->gbmap_, - lfs3->lookahead.ckpoint); - if (err) { - return err; - } - #endif - // was lookahead scan successful? - } else if (lfs3_t_islookahead(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_adopt(lfs3, lfs3->lookahead.ckpoint); + // was gbmap scan successful? + if (LFS3_IFDEF_GBMAP(mgc->gbmap_.r.weight != 0, false)) { + #ifdef LFS3_GBMAP + int err = lfs3_alloc_adoptgbmap(lfs3, &mgc->gbmap_, + lfs3->lookahead.ckpoint); + if (err) { + return err; + } + #endif + + // was lookahead scan successful? + } else { + lfs3_alloc_adopt(lfs3, lfs3->lookahead.ckpoint); + } } // was mkconsistent successful? @@ -10793,7 +10783,7 @@ static int lfs3_alloc_lookgbmap(lfs3_t *lfs3); // // blocks are allocated at most once, and never reallocated, between // checkpoints -#if !defined(LFS3_RDONLY) +#ifndef LFS3_RDONLY static inline int lfs3_alloc_ckpoint(lfs3_t *lfs3) { // checkpoint the allocator lfs3_alloc_ckpoint_(lfs3); @@ -10819,9 +10809,19 @@ static inline int lfs3_alloc_ckpoint(lfs3_t *lfs3) { #endif // can we repopulate the lookahead buffer? -#if !defined(LFS3_RDONLY) +#ifndef LFS3_RDONLY static inline bool lfs3_alloc_canlookahead(const lfs3_t *lfs3) { - return lfs3->lookahead.known + // below gc_lookahead_thresh? + return lfs3_max( + lfs3->lookahead.known, + // don't bother if we have more information in our + // gbmap, in theory the lookahead buffer is rarely used + // if a gbmap is present + LFS3_IFDEF_GBMAP( + (lfs3_f_isgbmap(lfs3->flags)) + ? lfs3->gbmap.known + : 0, + 0)) <= lfs3_min( lfs3->cfg->gc_lookahead_thresh, lfs3_min( @@ -10831,15 +10831,23 @@ static inline bool lfs3_alloc_canlookahead(const lfs3_t *lfs3) { #endif // can we repopulate the gbmap? -#if !defined(LFS3_RDONLY) && defined(LFS3_GBMAP) +#ifndef LFS3_RDONLY static inline bool lfs3_alloc_canlookgbmap(const lfs3_t *lfs3) { + #ifdef LFS3_GBMAP + // do we even have a gbmap? return lfs3_f_isgbmap(lfs3->flags) + // below gc_lookgbmap_thresh? && lfs3->gbmap.known <= lfs3_min( lfs3_max( lfs3->cfg->gc_lookgbmap_thresh, lfs3->cfg->lookgbmap_thresh), lfs3->block_count-1); + #else + // TODO adopt this localized void in flag functions? + (void)lfs3; + return false; + #endif } #endif @@ -10924,8 +10932,13 @@ static void lfs3_alloc_adopt(lfs3_t *lfs3, lfs3_block_t known) { LFS3_UNREACHABLE(); } - // signal that lookahead is full - lfs3->flags &= ~LFS3_I_LOOKAHEAD; + // signal that lookahead is full, unless we also want a gbmap + if (LFS3_IFDEF_GBMAP( + !(lfs3_f_isgbmap(lfs3->flags) + && lfs3_alloc_canlookgbmap(lfs3)), + true)) { + lfs3->flags &= ~LFS3_I_LOOKAHEAD; + } } #endif @@ -10944,7 +10957,7 @@ static int lfs3_alloc_adoptgbmap(lfs3_t *lfs3, } // signal that gbmap is full - lfs3->flags &= ~LFS3_I_LOOKGBMAP; + lfs3->flags &= ~LFS3_I_LOOKAHEAD; return 0; } #endif @@ -10978,16 +10991,11 @@ static void lfs3_alloc_inc(lfs3_t *lfs3) { } #endif - // signal that lookahead is no longer full - if (lfs3_alloc_canlookahead(lfs3)) { + // signal that lookahead/gbmap is no longer full + if (lfs3_alloc_canlookahead(lfs3) + || lfs3_alloc_canlookgbmap(lfs3)) { lfs3->flags |= LFS3_I_LOOKAHEAD; } - #ifdef LFS3_GBMAP - // signal that gbmap is no longer full - if (lfs3_alloc_canlookgbmap(lfs3)) { - lfs3->flags |= LFS3_I_LOOKGBMAP; - } - #endif } #endif @@ -15641,14 +15649,15 @@ static int lfs3_mountinited(lfs3_t *lfs3) { // known gbmap window lfs3->lookahead.window = lfs3->gbmap.window; - // mark our gbmap as repopulatable if known window is - // <= gc_lookgbmap_thresh - // - // unfortunately the dependency of the gbmap on block allocation - // means this rarely includes the entire disk - if (lfs3_alloc_canlookgbmap(lfs3)) { - lfs3->flags |= LFS3_I_LOOKGBMAP; - } + // update lookahead flag, we only signal our gbmap is + // repopulatable if known window <= gc_lookgbmap_thresh, + // unfortunately the way the gbmap feeds itself this rarely + // includes the entire disk + lfs3->flags = (lfs3->flags & ~LFS3_I_LOOKAHEAD) + | ((lfs3_alloc_canlookahead(lfs3) + || lfs3_alloc_canlookgbmap(lfs3)) + ? LFS3_I_LOOKAHEAD + : 0); #endif } else { @@ -15700,9 +15709,6 @@ int lfs3_mount(lfs3_t *lfs3, uint32_t flags, #ifdef LFS3_YES_LOOKAHEAD flags |= LFS3_M_LOOKAHEAD; #endif - #ifdef LFS3_YES_LOOKGBMAP - flags |= LFS3_M_LOOKGBMAP; - #endif #ifdef LFS3_YES_COMPACTMETA flags |= LFS3_M_COMPACTMETA; #endif @@ -15727,15 +15733,12 @@ int lfs3_mount(lfs3_t *lfs3, uint32_t flags, | LFS3_IFDEF_CKDATACKSUMS(LFS3_M_CKDATACKSUMS, 0) | LFS3_IFDEF_RDONLY(0, LFS3_M_MKCONSISTENT) | LFS3_IFDEF_RDONLY(0, LFS3_M_LOOKAHEAD) - | LFS3_IFDEF_RDONLY(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_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, @@ -16004,9 +16007,6 @@ int lfs3_format(lfs3_t *lfs3, uint32_t flags, #ifdef LFS3_YES_LOOKAHEAD flags |= LFS3_F_LOOKAHEAD; #endif - #ifdef LFS3_YES_LOOKGBMAP - flags |= LFS3_F_LOOKGBMAP; - #endif #ifdef LFS3_YES_COMPACTMETA flags |= LFS3_F_COMPACTMETA; #endif @@ -16029,7 +16029,6 @@ int lfs3_format(lfs3_t *lfs3, uint32_t flags, | LFS3_IFDEF_CKDATACKSUMS(LFS3_F_CKDATACKSUMS, 0) | LFS3_F_MKCONSISTENT | LFS3_F_LOOKAHEAD - | LFS3_IFDEF_GBMAP(LFS3_F_LOOKGBMAP, 0) | LFS3_F_COMPACTMETA | LFS3_F_CKMETA | LFS3_F_CKDATA)) == 0); @@ -16102,7 +16101,6 @@ int lfs3_fs_stat(lfs3_t *lfs3, struct lfs3_fsinfo *fsinfo) { | LFS3_IFDEF_CKDATACKSUMS(LFS3_I_CKDATACKSUMS, 0) | LFS3_IFDEF_RDONLY(0, LFS3_I_MKCONSISTENT) | 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 @@ -16370,9 +16368,6 @@ static int lfs3_fs_gc_(lfs3_t *lfs3, lfs3_mgc_t *mgc, #ifndef LFS3_RDONLY if (lfs3_t_isckpointed(mgc->t.h.flags)) { mgc->t.h.flags &= ~LFS3_T_LOOKAHEAD; - #ifdef LFS3_GBMAP - mgc->t.h.flags &= ~LFS3_T_LOOKGBMAP; - #endif } #endif @@ -16385,8 +16380,6 @@ 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_LOOKAHEAD) - | LFS3_IFDEF_RDONLY(0, - LFS3_IFDEF_GBMAP(LFS3_GC_LOOKGBMAP, 0)) | LFS3_GC_CKMETA | LFS3_GC_CKDATA))) { mgc->t.h.flags |= LFS3_T_MTREEONLY; @@ -16428,8 +16421,6 @@ int lfs3_fs_ck(lfs3_t *lfs3, uint32_t 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_islookgbmap(flags)); LFS3_ASSERT(!lfs3_m_isrdonly(lfs3->flags) || !lfs3_t_compactmeta(flags)); @@ -16454,8 +16445,6 @@ int lfs3_fs_gc(lfs3_t *lfs3) { || !lfs3_t_ismkconsistent(lfs3->cfg->gc_flags)); LFS3_ASSERT(!lfs3_m_isrdonly(lfs3->flags) || !lfs3_t_islookahead(lfs3->cfg->gc_flags)); - LFS3_ASSERT(!lfs3_m_isrdonly(lfs3->flags) - || !lfs3_t_islookgbmap(lfs3->cfg->gc_flags)); LFS3_ASSERT(!lfs3_m_isrdonly(lfs3->flags) || !lfs3_t_compactmeta(lfs3->cfg->gc_flags)); @@ -16707,8 +16696,6 @@ int lfs3_trv_open(lfs3_t *lfs3, lfs3_trv_t *trv, uint32_t flags) { | LFS3_T_EXCL | LFS3_IFDEF_RDONLY(0, LFS3_T_MKCONSISTENT) | LFS3_IFDEF_RDONLY(0, LFS3_T_LOOKAHEAD) - | LFS3_IFDEF_RDONLY(0, - LFS3_IFDEF_GBMAP(LFS3_T_LOOKGBMAP, 0)) | LFS3_IFDEF_RDONLY(0, LFS3_T_COMPACTMETA) | LFS3_T_CKMETA | LFS3_T_CKDATA)) == 0); @@ -16717,11 +16704,9 @@ 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_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_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 diff --git a/lfs3.h b/lfs3.h index 4f6019c4..f463818f 100644 --- a/lfs3.h +++ b/lfs3.h @@ -206,11 +206,7 @@ enum lfs3_type { #endif #ifndef LFS3_RDONLY #define LFS3_F_LOOKAHEAD \ - 0x00001000 // Repopulate lookahead buffer -#endif -#if !defined(LFS3_RDONLY) && defined(LFS3_GBMAP) -#define LFS3_F_LOOKGBMAP \ - 0x00002000 // Repopulate the gbmap + 0x00001000 // Repopulate lookahead/gbmap #endif #ifndef LFS3_RDONLY #define LFS3_F_COMPACTMETA \ @@ -258,11 +254,7 @@ enum lfs3_type { #endif #ifndef LFS3_RDONLY #define LFS3_M_LOOKAHEAD \ - 0x00001000 // Repopulate lookahead buffer -#endif -#if !defined(LFS3_RDONLY) && defined(LFS3_GBMAP) -#define LFS3_M_LOOKGBMAP \ - 0x00002000 // Repopulate the gbmap + 0x00001000 // Repopulate lookahead/gbmap #endif #ifndef LFS3_RDONLY #define LFS3_M_COMPACTMETA \ @@ -305,11 +297,7 @@ enum lfs3_type { #endif #ifndef LFS3_RDONLY #define LFS3_I_LOOKAHEAD \ - 0x00001000 // Lookahead buffer is not full -#endif -#if !defined(LFS3_RDONLY) && defined(LFS3_GBMAP) -#define LFS3_I_LOOKGBMAP \ - 0x00002000 // The gbmap is not full + 0x00001000 // Lookahead/gbmap is not full #endif #ifndef LFS3_RDONLY #define LFS3_I_COMPACTMETA \ @@ -340,11 +328,7 @@ enum lfs3_btype { #endif #ifndef LFS3_RDONLY #define LFS3_T_LOOKAHEAD \ - 0x00001000 // Repopulate lookahead buffer -#endif -#if !defined(LFS3_RDONLY) && defined(LFS3_GBMAP) -#define LFS3_T_LOOKGBMAP \ - 0x00002000 // Repopulate the gbmap + 0x00001000 // Repopulate lookahead/gbmap #endif #ifndef LFS3_RDONLY #define LFS3_T_COMPACTMETA \ @@ -369,11 +353,7 @@ enum lfs3_btype { #endif #ifndef LFS3_RDONLY #define LFS3_CK_LOOKAHEAD \ - 0x00001000 // Repopulate lookahead buffer -#endif -#if !defined(LFS3_RDONLY) && defined(LFS3_GBMAP) -#define LFS3_CK_LOOKGBMAP \ - 0x00002000 // Repopulate the gbmap + 0x00001000 // Repopulate lookahead/gbmap #endif #ifndef LFS3_RDONLY #define LFS3_CK_COMPACTMETA \ @@ -389,11 +369,7 @@ enum lfs3_btype { #endif #ifndef LFS3_RDONLY #define LFS3_GC_LOOKAHEAD \ - 0x00001000 // Repopulate lookahead buffer -#endif -#if !defined(LFS3_RDONLY) && defined(LFS3_GBMAP) -#define LFS3_GC_LOOKGBMAP \ - 0x00002000 // Repopulate the gbmap + 0x00001000 // Repopulate lookahead/gbmap #endif #ifndef LFS3_RDONLY #define LFS3_GC_COMPACTMETA \ @@ -406,8 +382,6 @@ enum lfs3_btype { #define LFS3_GC_ALL ( \ LFS3_IFDEF_RDONLY(0, LFS3_GC_MKCONSISTENT) \ | LFS3_IFDEF_RDONLY(0, LFS3_GC_LOOKAHEAD) \ - | LFS3_IFDEF_RDONLY(0, \ - LFS3_IFDEF_GBMAP(LFS3_GC_LOOKGBMAP, 0)) \ | LFS3_IFDEF_RDONLY(0, LFS3_GC_COMPACTMETA) \ | LFS3_GC_CKMETA \ | LFS3_GC_CKDATA) diff --git a/scripts/dbgflags.py b/scripts/dbgflags.py index 3470558d..55892cb6 100755 --- a/scripts/dbgflags.py +++ b/scripts/dbgflags.py @@ -83,7 +83,6 @@ F_CKDATACKSUMS = 0x01000000 # y- Check data checksums on reads F_MKCONSISTENT = 0x00000800 # y- Make the filesystem consistent 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 @@ -103,7 +102,6 @@ M_CKDATACKSUMS = 0x01000000 # y- Check data checksums on reads M_MKCONSISTENT = 0x00000800 # y- Make the filesystem consistent 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 @@ -111,7 +109,6 @@ M_CKDATA = 0x00020000 # y- Check metadata + data checksums # File/filesystem check flags CK_MKCONSISTENT = 0x00000800 # -- Make the filesystem consistent CK_LOOKAHEAD = 0x00001000 # -- Repopulate lookahead buffer -CK_LOOKGBMAP = 0x00002000 # -- Repopulate the gbmap CK_COMPACTMETA = 0x00008000 # -- Compact metadata logs CK_CKMETA = 0x00010000 # -- Check metadata checksums CK_CKDATA = 0x00020000 # -- Check metadata + data checksums @@ -119,7 +116,6 @@ CK_CKDATA = 0x00020000 # -- Check metadata + data checksums # GC flags GC_MKCONSISTENT = 0x00000800 # -- Make the filesystem consistent 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 @@ -139,7 +135,6 @@ I_CKDATACKSUMS = 0x01000000 # -- Mounted with LFS3_M_CKDATACKSUMS I_MKCONSISTENT = 0x00000800 # -- Filesystem needs mkconsistent to write 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 @@ -152,7 +147,6 @@ T_MTREEONLY = 0x00000002 # -- Only traverse the mtree T_EXCL = 0x00000008 # -- Error if filesystem modified T_MKCONSISTENT = 0x00000800 # -- Make the filesystem consistent 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 diff --git a/tests/test_gc.toml b/tests/test_gc.toml index 7dc99b84..f6a07ab9 100644 --- a/tests/test_gc.toml +++ b/tests/test_gc.toml @@ -14,7 +14,7 @@ if = ''' # test that lookahead can make progress in isolation -[cases.test_gc_relookahead_progress] +[cases.test_gc_lookahead_progress] defines.CKMETA = [false, true] defines.CKDATA = [false, true] defines.GC_FLAGS = ''' @@ -31,6 +31,7 @@ defines.SIZE = [ '2*BLOCK_SIZE', '8*BLOCK_SIZE', ] +if = '!GBMAP' ifdef = 'LFS3_GC' code = ''' lfs3_t lfs3; @@ -83,7 +84,7 @@ code = ''' ''' # test that lookahead dirtying still works with the GC API -[cases.test_gc_relookahead_mutation] +[cases.test_gc_lookahead_mutation] defines.CKMETA = [false, true] defines.CKDATA = [false, true] defines.GC_FLAGS = ''' @@ -99,8 +100,11 @@ defines.SIZE = [ '2*BLOCK_SIZE', '8*BLOCK_SIZE', ] -# we need something to keep the traversal running -if = 'CKMETA || CKDATA' +if = [ + '!GBMAP', + # we need something to keep the traversal running + 'CKMETA || CKDATA', +] ifdef = 'LFS3_GC' code = ''' lfs3_t lfs3; @@ -161,10 +165,10 @@ code = ''' lfs3_unmount(&lfs3) => 0; ''' -# test that we can relax lookahead repopulation with -# gc_relookahead_thresh -[cases.test_gc_relookahead_relaxed] -# relax our repop thresh +# test that we can relax lookahead scanning with +# gc_lookahead_thresh +[cases.test_gc_lookahead_relaxed] +# relax our lookahead thresh defines.GC_LOOKAHEAD_THRESH = [ '-1', '8*LOOKAHEAD_SIZE - (8*LOOKAHEAD_SIZE/4)', @@ -179,6 +183,7 @@ defines.GC_FLAGS = ''' ''' defines.GC_STEPS = [-1, 1, 2, 10, 100, 1000] defines.SIZE = 'BLOCK_SIZE' +if = '!GBMAP' ifdef = 'LFS3_GC' code = ''' lfs3_t lfs3; @@ -273,14 +278,12 @@ code = ''' ''' -# test that regbmap can make progress in isolation -[cases.test_gc_regbmap_progress] -defines.LOOKAHEAD = [false, true] +# test that lookgbmap can make progress in isolation +[cases.test_gc_lookgbmap_progress] defines.CKMETA = [false, true] defines.CKDATA = [false, true] defines.GC_FLAGS = ''' - LFS3_GC_LOOKGBMAP - | ((LOOKAHEAD) ? LFS3_GC_LOOKAHEAD : 0) + LFS3_GC_LOOKAHEAD | ((CKMETA) ? LFS3_GC_CKMETA : 0) | ((CKDATA) ? LFS3_GC_CKDATA : 0) ''' @@ -317,7 +320,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_LOOKGBMAP); + assert(fsinfo.flags & LFS3_I_LOOKAHEAD); assert(lfs3.handles != &lfs3.gc.t.h); // run GC until we make progress @@ -328,7 +331,7 @@ code = ''' lfs3_fs_gc(&lfs3) => 0; lfs3_fs_stat(&lfs3, &fsinfo) => 0; - if (!(fsinfo.flags & LFS3_I_LOOKGBMAP)) { + if (!(fsinfo.flags & LFS3_I_LOOKAHEAD)) { break; } } @@ -343,14 +346,12 @@ code = ''' lfs3_unmount(&lfs3) => 0; ''' -# test that regbmap dirtying still works with the GC API -[cases.test_gc_regbmap_mutation] -defines.LOOKAHEAD = [false, true] +# test that lookgbmap dirtying still works with the GC API +[cases.test_gc_lookgbmap_mutation] defines.CKMETA = [false, true] defines.CKDATA = [false, true] defines.GC_FLAGS = ''' - LFS3_GC_LOOKGBMAP - | ((LOOKAHEAD) ? LFS3_GC_LOOKAHEAD : 0) + LFS3_GC_LOOKAHEAD | ((CKMETA) ? LFS3_GC_CKMETA : 0) | ((CKDATA) ? LFS3_GC_CKDATA : 0) ''' @@ -390,7 +391,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_LOOKGBMAP); + assert(fsinfo.flags & LFS3_I_LOOKAHEAD); assert(lfs3.handles != &lfs3.gc.t.h); // run GC one step @@ -413,7 +414,7 @@ code = ''' // we should _not_ make progress lfs3_fs_stat(&lfs3, &fsinfo) => 0; - assert(fsinfo.flags & LFS3_I_LOOKGBMAP); + assert(fsinfo.flags & LFS3_I_LOOKAHEAD); // check the file contents lfs3_file_open(&lfs3, &file, "spider", LFS3_O_RDONLY) => 0; @@ -425,20 +426,18 @@ code = ''' lfs3_unmount(&lfs3) => 0; ''' -# test that we can relax gbmap repopulation with gc_regbmap_thresh -[cases.test_gc_regbmap_relaxed] -# relax our repop thresh +# test that we can relax gbmap repopulation with gc_lookgbmap_thresh +[cases.test_gc_lookgbmap_relaxed] +# relax our lookgbmap thresh defines.GC_LOOKGBMAP_THRESH = [ '-1', 'BLOCK_COUNT - (BLOCK_COUNT/4)', 'BLOCK_COUNT - (BLOCK_COUNT/2)', ] -defines.LOOKAHEAD = [false, true] defines.CKMETA = [false, true] defines.CKDATA = [false, true] defines.GC_FLAGS = ''' - LFS3_GC_LOOKGBMAP - | ((LOOKAHEAD) ? LFS3_GC_LOOKAHEAD : 0) + LFS3_GC_LOOKAHEAD | ((CKMETA) ? LFS3_GC_CKMETA : 0) | ((CKDATA) ? LFS3_GC_CKDATA : 0) ''' @@ -476,7 +475,7 @@ code = ''' struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; - if (!(fsinfo.flags & LFS3_I_LOOKGBMAP)) { + if (!(fsinfo.flags & LFS3_I_LOOKAHEAD)) { break; } } @@ -503,7 +502,7 @@ code = ''' struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; - if (fsinfo.flags & LFS3_I_LOOKGBMAP) { + if (fsinfo.flags & LFS3_I_LOOKAHEAD) { // check that we actually relaxed repopulations if ((lfs3_size_t)GC_LOOKGBMAP_THRESH < BLOCK_COUNT-1) { @@ -524,7 +523,7 @@ code = ''' struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; - if (!(fsinfo.flags & LFS3_I_LOOKGBMAP)) { + if (!(fsinfo.flags & LFS3_I_LOOKAHEAD)) { break; } } @@ -1823,14 +1822,12 @@ done:; defines.AFTER = [0, 1, 2, 3] defines.MKCONSISTENT = [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) | ((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 +1846,6 @@ defines.SIZE = [ if = [ '(SIZE*N)/BLOCK_SIZE <= 32', 'LFS3_IFDEF_GC(true, AFTER != 0)', - 'GBMAP || !LOOKGBMAP', ] code = ''' lfs3_t lfs3; @@ -1888,10 +1884,8 @@ code = ''' LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | LFS3_I_MKCONSISTENT - | LFS3_I_LOOKAHEAD - | ((GBMAP) - ? (LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) - & fsinfo.flags) + | ((!GBMAP || (fsinfo.flags & LFS3_I_LOOKAHEAD)) + ? LFS3_I_LOOKAHEAD : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA @@ -1914,9 +1908,6 @@ code = ''' if (!(fsinfo.flags & ( ((MKCONSISTENT) ? LFS3_I_MKCONSISTENT : 0) | ((LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0) - | ((LOOKGBMAP) - ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) - : 0) | ((COMPACTMETA) ? LFS3_I_COMPACTMETA : 0) | ((CKMETA) ? LFS3_I_CKMETA : 0) | ((CKDATA) ? LFS3_I_CKDATA : 0)))) { @@ -1946,9 +1937,6 @@ code = ''' if (!(fsinfo.flags & ( ((MKCONSISTENT) ? LFS3_I_MKCONSISTENT : 0) | ((LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0) - | ((LOOKGBMAP) - ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) - : 0) | ((COMPACTMETA) ? LFS3_I_COMPACTMETA : 0) | ((CKMETA) ? LFS3_I_CKMETA : 0) | ((CKDATA) ? LFS3_I_CKDATA : 0)))) { @@ -1975,24 +1963,6 @@ code = ''' lfs3_trv_close(&lfs3, &trv) => 0; } - #ifdef LFS3_GBMAP - 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_LOOKGBMAP) => 0; - while (true) { - struct lfs3_tinfo tinfo; - int err = lfs3_trv_read(&lfs3, &trv, &tinfo); - assert(err == 0 || err == LFS3_ERR_NOENT); - if (err == LFS3_ERR_NOENT) { - break; - } - } - lfs3_trv_close(&lfs3, &trv) => 0; - } - #endif - if (COMPACTMETA && (fsinfo.flags & LFS3_I_COMPACTMETA)) { // we need an explicit traversal for this lfs3_trv_t trv; @@ -2033,12 +2003,9 @@ code = ''' LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | ((!MKCONSISTENT) ? LFS3_I_MKCONSISTENT : 0) - | ((!LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0) - | ((!LOOKGBMAP) - ? ((GBMAP) - ? (LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) - & fsinfo.flags) - : 0) + | ((!LOOKAHEAD + && (!GBMAP || (fsinfo.flags & LFS3_I_LOOKAHEAD))) + ? LFS3_I_LOOKAHEAD : 0) | ((!COMPACTMETA) ? LFS3_I_COMPACTMETA : 0) // note ckdata implies ckmeta @@ -2058,14 +2025,12 @@ code = ''' defines.AFTER = [0, 1, 2, 3] defines.MKCONSISTENT = [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) | ((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 +2049,6 @@ defines.SIZE = [ if = [ '(SIZE*N)/BLOCK_SIZE <= 32', 'LFS3_IFDEF_GC(true, AFTER != 0)', - 'GBMAP || !LOOKGBMAP', ] code = ''' lfs3_t lfs3; @@ -2123,10 +2087,8 @@ code = ''' LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | LFS3_I_MKCONSISTENT - | LFS3_I_LOOKAHEAD - | ((GBMAP) - ? (LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) - & fsinfo.flags) + | ((!GBMAP || (fsinfo.flags & LFS3_I_LOOKAHEAD)) + ? LFS3_I_LOOKAHEAD : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA @@ -2149,9 +2111,6 @@ code = ''' if (!(fsinfo.flags & ( ((MKCONSISTENT) ? LFS3_I_MKCONSISTENT : 0) | ((LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0) - | ((LOOKGBMAP) - ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) - : 0) | ((COMPACTMETA) ? LFS3_I_COMPACTMETA : 0) | ((CKMETA) ? LFS3_I_CKMETA : 0) | ((CKDATA) ? LFS3_I_CKDATA : 0)))) { @@ -2181,9 +2140,6 @@ code = ''' if (!(fsinfo.flags & ( ((MKCONSISTENT) ? LFS3_I_MKCONSISTENT : 0) | ((LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0) - | ((LOOKGBMAP) - ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) - : 0) | ((COMPACTMETA) ? LFS3_I_COMPACTMETA : 0) | ((CKMETA) ? LFS3_I_CKMETA : 0) | ((CKDATA) ? LFS3_I_CKDATA : 0)))) { @@ -2210,24 +2166,6 @@ code = ''' lfs3_trv_close(&lfs3, &trv) => 0; } - #ifdef LFS3_GBMAP - 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_LOOKGBMAP) => 0; - while (true) { - struct lfs3_tinfo tinfo; - int err = lfs3_trv_read(&lfs3, &trv, &tinfo); - assert(err == 0 || err == LFS3_ERR_NOENT); - if (err == LFS3_ERR_NOENT) { - break; - } - } - lfs3_trv_close(&lfs3, &trv) => 0; - } - #endif - if (COMPACTMETA && (fsinfo.flags & LFS3_I_COMPACTMETA)) { // we need an explicit traversal for this lfs3_trv_t trv; @@ -2268,12 +2206,9 @@ code = ''' LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | ((!MKCONSISTENT) ? LFS3_I_MKCONSISTENT : 0) - | ((!LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0) - | ((!LOOKGBMAP) - ? ((GBMAP) - ? (LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) - & fsinfo.flags) - : 0) + | ((!LOOKAHEAD + && (!GBMAP || (fsinfo.flags & LFS3_I_LOOKAHEAD))) + ? LFS3_I_LOOKAHEAD : 0) | ((!COMPACTMETA) ? LFS3_I_COMPACTMETA : 0) // note ckdata implies ckmeta @@ -2290,13 +2225,9 @@ code = ''' LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | LFS3_I_MKCONSISTENT - | LFS3_I_LOOKAHEAD - | ((LOOKGBMAP) - ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1U) - : (GBMAP) - ? (LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) - & fsinfo.flags) - : 0) + | ((!GBMAP || (fsinfo.flags & LFS3_I_LOOKAHEAD)) + ? LFS3_I_LOOKAHEAD + : 0) | LFS3_I_COMPACTMETA // note ckdata implies ckmeta, but uncking ckdata does // _not_ imply uncking ckmeta @@ -2320,9 +2251,6 @@ code = ''' if (!(fsinfo.flags & ( ((MKCONSISTENT) ? LFS3_I_MKCONSISTENT : 0) | ((LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0) - | ((LOOKGBMAP) - ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) - : 0) | ((COMPACTMETA) ? LFS3_I_COMPACTMETA : 0) | ((CKMETA) ? LFS3_I_CKMETA : 0) | ((CKDATA) ? LFS3_I_CKDATA : 0)))) { @@ -2352,9 +2280,6 @@ code = ''' if (!(fsinfo.flags & ( ((MKCONSISTENT) ? LFS3_I_MKCONSISTENT : 0) | ((LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0) - | ((LOOKGBMAP) - ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) - : 0) | ((COMPACTMETA) ? LFS3_I_COMPACTMETA : 0) | ((CKMETA) ? LFS3_I_CKMETA : 0) | ((CKDATA) ? LFS3_I_CKDATA : 0)))) { @@ -2381,24 +2306,6 @@ code = ''' lfs3_trv_close(&lfs3, &trv) => 0; } - #ifdef LFS3_GBMAP - 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_LOOKGBMAP) => 0; - while (true) { - struct lfs3_tinfo tinfo; - int err = lfs3_trv_read(&lfs3, &trv, &tinfo); - assert(err == 0 || err == LFS3_ERR_NOENT); - if (err == LFS3_ERR_NOENT) { - break; - } - } - lfs3_trv_close(&lfs3, &trv) => 0; - } - #endif - if (COMPACTMETA && (fsinfo.flags & LFS3_I_COMPACTMETA)) { // we need an explicit traversal for this lfs3_trv_t trv; @@ -2439,12 +2346,9 @@ code = ''' LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | ((!MKCONSISTENT) ? LFS3_I_MKCONSISTENT : 0) - | ((!LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0) - | ((!LOOKGBMAP) - ? ((GBMAP) - ? (LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) - & fsinfo.flags) - : 0) + | ((!LOOKAHEAD + && (!GBMAP || (fsinfo.flags & LFS3_I_LOOKAHEAD))) + ? LFS3_I_LOOKAHEAD : 0) | ((!COMPACTMETA) ? LFS3_I_COMPACTMETA : 0) // note ckdata implies ckmeta @@ -2461,14 +2365,12 @@ code = ''' defines.N = 100 defines.MKCONSISTENT = [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) | ((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 +2386,6 @@ defines.SIZE = [ '2*BLOCK_SIZE', '8*BLOCK_SIZE', ] -if = 'GBMAP || !LOOKGBMAP' ifdef = 'LFS3_GC' code = ''' lfs3_t lfs3; @@ -2536,14 +2437,12 @@ code = ''' defines.N = 100 defines.MKCONSISTENT = [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) | ((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 +2458,6 @@ defines.SIZE = [ '2*BLOCK_SIZE', '8*BLOCK_SIZE', ] -if = 'GBMAP || !LOOKGBMAP' ifdef = 'LFS3_GC' code = ''' lfs3_t lfs3; @@ -2614,14 +2512,12 @@ code = ''' [cases.test_gc_nospc] defines.MKCONSISTENT = [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) | ((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 +2527,6 @@ 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 || !LOOKGBMAP' ifdef = 'LFS3_GC' code = ''' lfs3_t lfs3; @@ -2722,7 +2617,6 @@ code = ''' [cases.test_gc_spam_dir_many] defines.MKCONSISTENT = [false, true] defines.LOOKAHEAD = [false, true] -defines.LOOKGBMAP = [false, true] defines.COMPACTMETA = [false, true] defines.CKMETA = [false, true] defines.CKDATA = [false, true] @@ -2730,7 +2624,6 @@ defines.UNCK = [false, true] defines.GC_FLAGS = ''' ((MKCONSISTENT) ? LFS3_GC_MKCONSISTENT : 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 +2632,6 @@ 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 || !LOOKGBMAP' ifdef = 'LFS3_GC' code = ''' // test creating directories @@ -2832,7 +2724,6 @@ code = ''' [cases.test_gc_spam_dir_fuzz] defines.MKCONSISTENT = [false, true] defines.LOOKAHEAD = [false, true] -defines.LOOKGBMAP = [false, true] defines.COMPACTMETA = [false, true] defines.CKMETA = [false, true] defines.CKDATA = [false, true] @@ -2840,7 +2731,6 @@ defines.UNCK = [false, true] defines.GC_FLAGS = ''' ((MKCONSISTENT) ? LFS3_GC_MKCONSISTENT : 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 +2742,6 @@ defines.N = [1, 2, 4, 8, 16, 32, 64, 128, 256] defines.OPS = '2*N' defines.SEED = 42 fuzz = 'SEED' -if = 'GBMAP || !LOOKGBMAP' ifdef = 'LFS3_GC' code = ''' // test fuzz with dirs @@ -3013,7 +2902,6 @@ code = ''' [cases.test_gc_spam_file_many] defines.MKCONSISTENT = [false, true] defines.LOOKAHEAD = [false, true] -defines.LOOKGBMAP = [false, true] defines.COMPACTMETA = [false, true] defines.CKMETA = [false, true] defines.CKDATA = [false, true] @@ -3021,7 +2909,6 @@ defines.UNCK = [false, true] defines.GC_FLAGS = ''' ((MKCONSISTENT) ? LFS3_GC_MKCONSISTENT : 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) @@ -3039,10 +2926,7 @@ defines.SIZE = [ '2*BLOCK_SIZE', '4*BLOCK_SIZE', ] -if = [ - '(SIZE*N)/BLOCK_SIZE <= 32', - 'GBMAP || !LOOKGBMAP', -] +if = '(SIZE*N)/BLOCK_SIZE <= 32' ifdef = 'LFS3_GC' code = ''' // test creating files @@ -3119,7 +3003,6 @@ code = ''' [cases.test_gc_spam_file_fuzz] defines.MKCONSISTENT = [false, true] defines.LOOKAHEAD = [false, true] -defines.LOOKGBMAP = [false, true] defines.COMPACTMETA = [false, true] defines.CKMETA = [false, true] defines.CKDATA = [false, true] @@ -3127,7 +3010,6 @@ defines.UNCK = [false, true] defines.GC_FLAGS = ''' ((MKCONSISTENT) ? LFS3_GC_MKCONSISTENT : 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) @@ -3148,10 +3030,7 @@ defines.SIZE = [ ] defines.SEED = 42 fuzz = 'SEED' -if = [ - '(SIZE*N)/BLOCK_SIZE <= 16', - 'GBMAP || !LOOKGBMAP', -] +if = '(SIZE*N)/BLOCK_SIZE <= 16' ifdef = 'LFS3_GC' code = ''' // test fuzz with files @@ -3364,7 +3243,6 @@ code = ''' [cases.test_gc_spam_fwrite_fuzz] defines.MKCONSISTENT = [false, true] defines.LOOKAHEAD = [false, true] -defines.LOOKGBMAP = [false, true] defines.COMPACTMETA = [false, true] defines.CKMETA = [false, true] defines.CKDATA = [false, true] @@ -3372,7 +3250,6 @@ defines.UNCK = [false, true] defines.GC_FLAGS = ''' ((MKCONSISTENT) ? LFS3_GC_MKCONSISTENT : 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 +3279,6 @@ if = [ 'CHUNK <= SIZE', # this just saves testing time 'SIZE <= 4*1024*FRAGMENT_SIZE', - 'GBMAP || !LOOKGBMAP', ] ifdef = 'LFS3_GC' code = ''' @@ -3527,7 +3403,6 @@ code = ''' [cases.test_gc_spam_uz_fuzz] defines.MKCONSISTENT = [false, true] defines.LOOKAHEAD = [false, true] -defines.LOOKGBMAP = [false, true] defines.COMPACTMETA = [false, true] defines.CKMETA = [false, true] defines.CKDATA = [false, true] @@ -3535,7 +3410,6 @@ defines.UNCK = [false, true] defines.GC_FLAGS = ''' ((MKCONSISTENT) ? LFS3_GC_MKCONSISTENT : 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) @@ -3558,10 +3432,7 @@ defines.SIZE = [ ] defines.SEED = 42 fuzz = 'SEED' -if = [ - '(SIZE*N)/BLOCK_SIZE <= 16', - 'GBMAP || !LOOKGBMAP', -] +if = '(SIZE*N)/BLOCK_SIZE <= 16' ifdef = 'LFS3_GC' code = ''' // test with uncreats, zombies, etc @@ -3983,7 +3854,6 @@ code = ''' [cases.test_gc_spam_uzd_fuzz] defines.MKCONSISTENT = [false, true] defines.LOOKAHEAD = [false, true] -defines.LOOKGBMAP = [false, true] defines.COMPACTMETA = [false, true] defines.CKMETA = [false, true] defines.CKDATA = [false, true] @@ -3991,7 +3861,6 @@ defines.UNCK = [false, true] defines.GC_FLAGS = ''' ((MKCONSISTENT) ? LFS3_GC_MKCONSISTENT : 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) @@ -4014,10 +3883,7 @@ defines.SIZE = [ ] defines.SEED = 42 fuzz = 'SEED' -if = [ - '(SIZE*N)/BLOCK_SIZE <= 16', - 'GBMAP || !LOOKGBMAP', -] +if = '(SIZE*N)/BLOCK_SIZE <= 16' ifdef = 'LFS3_GC' code = ''' // test with uncreats, zombies, dirs, etc diff --git a/tests/test_mount.toml b/tests/test_mount.toml index 25b0c936..4d3999e1 100644 --- a/tests/test_mount.toml +++ b/tests/test_mount.toml @@ -1,12 +1,23 @@ # Advanced mount tests after = ['test_mtree', 'test_trvs'] +# Test both with and without the gbmap if available +defines.GBMAP = [false, true] +if = ''' + LFS3_IFDEF_YES_GBMAP( + GBMAP, + LFS3_IFDEF_GBMAP(true, !GBMAP)) +''' + # test we can mount [cases.test_mount_simple] code = ''' lfs3_t lfs3; - lfs3_format(&lfs3, LFS3_F_RDWR, CFG) => 0; + lfs3_format(&lfs3, + LFS3_F_RDWR + | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_F_GBMAP, -1) : 0), + CFG) => 0; lfs3_mount(&lfs3, LFS3_M_RDWR, CFG) => 0; lfs3_unmount(&lfs3) => 0; ''' @@ -25,7 +36,6 @@ defines.CKMETAPARITY = [false, true] defines.CKDATACKSUMS = [false, true] defines.MKCONSISTENT = [false, true] defines.LOOKAHEAD = [false, true] -defines.LOOKGBMAP = [false, true] defines.COMPACTMETA = [false, true] defines.CKMETA = [false, true] defines.CKDATA = [false, true] @@ -38,13 +48,14 @@ if = [ 'LFS3_IFDEF_CKDATACKSUMS(true, !CKDATACKSUMS)', '!RDONLY || !MKCONSISTENT', '!RDONLY || !LOOKAHEAD', - 'LFS3_IFDEF_YES_GBMAP(true, !LOOKGBMAP)', - '!RDONLY || !LOOKGBMAP', '!RDONLY || !COMPACTMETA', ] code = ''' lfs3_t lfs3; - lfs3_format(&lfs3, LFS3_F_RDWR, CFG) => 0; + lfs3_format(&lfs3, + LFS3_F_RDWR + | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_F_GBMAP, -1) : 0), + CFG) => 0; lfs3_mount(&lfs3, ((RDONLY) ? LFS3_M_RDONLY : LFS3_M_RDWR) | ((FLUSH) ? LFS3_M_FLUSH : 0) @@ -61,9 +72,6 @@ code = ''' : 0) | ((MKCONSISTENT) ? LFS3_M_MKCONSISTENT : 0) | ((LOOKAHEAD) ? LFS3_M_LOOKAHEAD : 0) - | ((LOOKGBMAP) - ? LFS3_IFDEF_GBMAP(LFS3_M_LOOKGBMAP, -1) - : 0) | ((COMPACTMETA) ? LFS3_M_COMPACTMETA : 0) | ((CKMETA) ? LFS3_M_CKMETA : 0) | ((CKDATA) ? LFS3_M_CKDATA : 0), @@ -87,12 +95,12 @@ code = ''' ? LFS3_IFDEF_CKDATACKSUMS(LFS3_I_CKDATACKSUMS, -1) : 0) | ((!MKCONSISTENT) ? LFS3_I_MKCONSISTENT : 0) - | ((!LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0) + | ((!LOOKAHEAD && !GBMAP) ? LFS3_I_LOOKAHEAD : 0) | ((!COMPACTMETA) ? LFS3_I_COMPACTMETA : 0) // note ckdata implies ckmeta | ((!CKMETA && !CKDATA) ? LFS3_I_CKMETA : 0) | ((!CKDATA) ? LFS3_I_CKDATA : 0) - | LFS3_IFDEF_YES_GBMAP(LFS3_I_GBMAP, 0))); + | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_GBMAP, -1) : 0))); lfs3_unmount(&lfs3) => 0; ''' @@ -109,11 +117,9 @@ defines.CKMETAPARITY = [false, true] defines.CKDATACKSUMS = [false, true] defines.MKCONSISTENT = [false, true] defines.LOOKAHEAD = [false, true] -defines.LOOKGBMAP = [false, true] defines.COMPACTMETA = [false, true] defines.CKMETA = [false, true] defines.CKDATA = [false, true] -defines.GBMAP = [false, true] if = [ 'LFS3_IFDEF_YES_REVDBG(REVDBG, LFS3_IFDEF_REVDBG(true, !REVDBG))', 'LFS3_IFDEF_YES_REVNOISE(REVNOISE, LFS3_IFDEF_REVNOISE(true, !REVNOISE))', @@ -121,8 +127,6 @@ if = [ 'LFS3_IFDEF_CKFETCHES(true, !CKFETCHES)', 'LFS3_IFDEF_CKMETAPARITY(true, !CKMETAPARITY)', 'LFS3_IFDEF_CKDATACKSUMS(true, !CKDATACKSUMS)', - 'LFS3_IFDEF_YES_GBMAP(true, !LOOKGBMAP)', - 'LFS3_IFDEF_GBMAP(true, !GBMAP)', ] code = ''' lfs3_t lfs3; @@ -140,9 +144,6 @@ code = ''' : 0) | ((MKCONSISTENT) ? LFS3_F_MKCONSISTENT : 0) | ((LOOKAHEAD) ? LFS3_F_LOOKAHEAD : 0) - | ((LOOKGBMAP) - ? LFS3_IFDEF_GBMAP(LFS3_F_LOOKGBMAP, -1) - : 0) | ((COMPACTMETA) ? LFS3_F_COMPACTMETA : 0) | ((CKMETA) ? LFS3_F_CKMETA : 0) | ((CKDATA) ? LFS3_F_CKDATA : 0) @@ -157,13 +158,11 @@ code = ''' LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | LFS3_I_MKCONSISTENT - | LFS3_I_LOOKAHEAD + | ((!GBMAP) ? LFS3_I_LOOKAHEAD : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA | LFS3_I_CKDATA - | LFS3_IFDEF_YES_GBMAP( - LFS3_I_GBMAP, - (GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_GBMAP, -1) : 0))); + | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_GBMAP, -1) : 0))); lfs3_unmount(&lfs3) => 0; ''' @@ -171,14 +170,20 @@ code = ''' # test that on-mount traversals do what they say they do -[cases.test_mount_t_relookahead] +[cases.test_mount_t_lookahead] defines.CKMETA = [false, true] defines.CKDATA = [false, true] code = ''' lfs3_t lfs3; - lfs3_format(&lfs3, LFS3_F_RDWR, CFG) => 0; + lfs3_format(&lfs3, + LFS3_F_RDWR + | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_F_GBMAP, -1) : 0), + CFG) => 0; // by default we need a lookahead scan + // + // unless we have a gbmap, the gbmap is persistent so usually + // _doesn't_ need a lookahead scan lfs3_mount(&lfs3, LFS3_M_RDWR, CFG) => 0; struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; @@ -186,11 +191,11 @@ code = ''' LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | LFS3_I_MKCONSISTENT - | LFS3_I_LOOKAHEAD + | ((!GBMAP) ? LFS3_I_LOOKAHEAD : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA | LFS3_I_CKDATA - | LFS3_IFDEF_YES_GBMAP(LFS3_I_GBMAP, 0))); + | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_GBMAP, -1) : 0))); lfs3_unmount(&lfs3) => 0; // with LFS3_M_LOOKAHEAD, mount performs a lookahead scan @@ -209,12 +214,11 @@ code = ''' // note ckdata implies ckmeta | ((!CKMETA && !CKDATA) ? LFS3_I_CKMETA : 0) | ((!CKDATA) ? LFS3_I_CKDATA : 0) - | LFS3_IFDEF_YES_GBMAP(LFS3_I_GBMAP, 0))); + | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_GBMAP, -1) : 0))); lfs3_unmount(&lfs3) => 0; ''' -[cases.test_mount_t_regbmap] -ifdef = 'LFS3_GBMAP' +[cases.test_mount_t_lookgbmap] defines.CKMETA = [false, true] defines.CKDATA = [false, true] defines.SIZE = [ @@ -223,9 +227,14 @@ defines.SIZE = [ '2*BLOCK_SIZE', '8*BLOCK_SIZE', ] +ifdef = 'LFS3_GBMAP' +if = 'GBMAP' code = ''' lfs3_t lfs3; - lfs3_format(&lfs3, LFS3_F_RDWR | LFS3_F_GBMAP, CFG) => 0; + lfs3_format(&lfs3, + LFS3_F_RDWR + | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_F_GBMAP, -1) : 0), + CFG) => 0; uint32_t prng = 42; @@ -237,11 +246,10 @@ code = ''' LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | LFS3_I_MKCONSISTENT - | LFS3_I_LOOKAHEAD | LFS3_I_COMPACTMETA | LFS3_I_CKMETA | LFS3_I_CKDATA - | LFS3_IFDEF_GBMAP(LFS3_I_GBMAP, 0))); + | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_GBMAP, -1) : 0))); // write to a file lfs3_file_t file; lfs3_file_open(&lfs3, &file, "jellyfish", @@ -262,18 +270,16 @@ code = ''' | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | LFS3_I_MKCONSISTENT | LFS3_I_LOOKAHEAD - | LFS3_I_LOOKGBMAP | LFS3_I_COMPACTMETA | LFS3_I_CKMETA | LFS3_I_CKDATA - | LFS3_IFDEF_GBMAP(LFS3_I_GBMAP, 0))); + | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_GBMAP, -1) : 0))); lfs3_unmount(&lfs3) => 0; - // with LFS3_M_LOOKGBMAP, mount performs a gbmap repop + // with LFS3_M_LOOKAHEAD, mount rebuild the gbmap lfs3_mount(&lfs3, LFS3_M_RDWR | LFS3_M_LOOKAHEAD - | LFS3_M_LOOKGBMAP | ((CKMETA) ? LFS3_M_CKMETA : 0) | ((CKDATA) ? LFS3_M_CKDATA : 0), CFG) => 0; @@ -286,7 +292,7 @@ code = ''' // note ckdata implies ckmeta | ((!CKMETA && !CKDATA) ? LFS3_I_CKMETA : 0) | ((!CKDATA) ? LFS3_I_CKDATA : 0) - | LFS3_IFDEF_GBMAP(LFS3_I_GBMAP, 0))); + | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_GBMAP, -1) : 0))); lfs3_unmount(&lfs3) => 0; ''' @@ -306,7 +312,10 @@ defines.SIZE = [ defines.GC_COMPACTMETA_THRESH = 'BLOCK_SIZE/2' code = ''' lfs3_t lfs3; - lfs3_format(&lfs3, LFS3_F_RDWR, CFG) => 0; + lfs3_format(&lfs3, + LFS3_F_RDWR + | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_F_GBMAP, -1) : 0), + CFG) => 0; uint32_t prng = 42; @@ -340,14 +349,13 @@ code = ''' LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | LFS3_I_MKCONSISTENT - | LFS3_I_LOOKAHEAD - | LFS3_IFDEF_YES_GBMAP( - (SIZE >= BLOCK_SIZE/4) ? LFS3_I_LOOKGBMAP : 0, - 0) + | ((!GBMAP || SIZE >= BLOCK_SIZE/4) + ? LFS3_I_LOOKAHEAD + : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA | LFS3_I_CKDATA - | LFS3_IFDEF_YES_GBMAP(LFS3_I_GBMAP, 0))); + | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_GBMAP, -1) : 0))); lfs3_unmount(&lfs3) => 0; // with LFS3_M_COMPACTMETA, mount compacts any uncompacted blocks @@ -363,14 +371,13 @@ code = ''' LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | LFS3_I_MKCONSISTENT - | ((!LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0) - | LFS3_IFDEF_YES_GBMAP( - (SIZE >= BLOCK_SIZE/4) ? LFS3_I_LOOKGBMAP : 0, - 0) + | ((!LOOKAHEAD && (!GBMAP || SIZE >= BLOCK_SIZE/4)) + ? LFS3_I_LOOKAHEAD + : 0) // note ckdata implies ckmeta | ((!CKMETA && !CKDATA) ? LFS3_I_CKMETA : 0) | ((!CKDATA) ? LFS3_I_CKDATA : 0) - | LFS3_IFDEF_YES_GBMAP(LFS3_I_GBMAP, 0))); + | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_GBMAP, -1) : 0))); // mdir should have been compacted lfs3_file_open(&lfs3, &file, "jellyfish", LFS3_O_RDONLY) => 0; @@ -396,7 +403,10 @@ defines.SIZE = 'FCACHE_SIZE/2' defines.ORPHANS = [0, 1, 2, 3, 100] code = ''' lfs3_t lfs3; - lfs3_format(&lfs3, LFS3_F_RDWR, CFG) => 0; + lfs3_format(&lfs3, + LFS3_F_RDWR + | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_F_GBMAP, -1) : 0), + CFG) => 0; uint32_t prng = 42; @@ -454,14 +464,13 @@ code = ''' LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | LFS3_I_MKCONSISTENT - | LFS3_I_LOOKAHEAD - | LFS3_IFDEF_YES_GBMAP( - (ORPHANS >= 100) ? LFS3_I_LOOKGBMAP : 0, - 0) + | ((!GBMAP || ORPHANS >= 100) + ? LFS3_I_LOOKAHEAD + : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA | LFS3_I_CKDATA - | LFS3_IFDEF_YES_GBMAP(LFS3_I_GBMAP, 0))); + | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_GBMAP, -1) : 0))); lfs3_unmount(&lfs3) => 0; // with LFS3_M_MKCONSISTENT, mount cleans up orphans eagerly @@ -477,15 +486,14 @@ code = ''' assert(fsinfo.flags == ( LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) - | ((!LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0) - | LFS3_IFDEF_YES_GBMAP( - (ORPHANS >= 100) ? LFS3_I_LOOKGBMAP : 0, - 0) + | ((!LOOKAHEAD && (!GBMAP || ORPHANS >= 100)) + ? LFS3_I_LOOKAHEAD + : 0) | ((!COMPACTMETA) ? LFS3_I_COMPACTMETA : 0) // note ckdata implies ckmeta | ((!CKMETA && !CKDATA) ? LFS3_I_CKMETA : 0) | ((!CKDATA) ? LFS3_I_CKDATA : 0) - | LFS3_IFDEF_YES_GBMAP(LFS3_I_GBMAP, 0))); + | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_GBMAP, -1) : 0))); // check we can still read the files lfs3_file_open(&lfs3, &file, "cuttlefish", LFS3_O_RDONLY) => 0; @@ -524,7 +532,10 @@ code = ''' assert(i < 2*BLOCK_COUNT); lfs3_t lfs3; - lfs3_format(&lfs3, LFS3_F_RDWR, CFG) => 0; + lfs3_format(&lfs3, + LFS3_F_RDWR + | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_F_GBMAP, -1) : 0), + CFG) => 0; lfs3_mount(&lfs3, LFS3_M_RDWR, CFG) => 0; // create an interesting filesystem @@ -613,7 +624,10 @@ code = ''' assert(i < 2*BLOCK_COUNT); lfs3_t lfs3; - lfs3_format(&lfs3, LFS3_F_RDWR, CFG) => 0; + lfs3_format(&lfs3, + LFS3_F_RDWR + | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_F_GBMAP, -1) : 0), + CFG) => 0; lfs3_mount(&lfs3, LFS3_M_RDWR, CFG) => 0; // create an interesting filesystem @@ -696,7 +710,10 @@ in = 'lfs3.c' code = ''' // create a superblock lfs3_t lfs3; - lfs3_format(&lfs3, LFS3_F_RDWR, CFG) => 0; + lfs3_format(&lfs3, + LFS3_F_RDWR + | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_F_GBMAP, -1) : 0), + CFG) => 0; // delete the magic string // @@ -719,7 +736,10 @@ in = 'lfs3.c' code = ''' // create a superblock lfs3_t lfs3; - lfs3_format(&lfs3, LFS3_F_RDWR, CFG) => 0; + lfs3_format(&lfs3, + LFS3_F_RDWR + | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_F_GBMAP, -1) : 0), + CFG) => 0; // tweak the magic string // @@ -743,7 +763,10 @@ in = 'lfs3.c' code = ''' // create a superblock lfs3_t lfs3; - lfs3_format(&lfs3, LFS3_F_RDWR, CFG) => 0; + lfs3_format(&lfs3, + LFS3_F_RDWR + | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_F_GBMAP, -1) : 0), + CFG) => 0; // bump the major version // @@ -769,7 +792,10 @@ in = 'lfs3.c' code = ''' // create a superblock lfs3_t lfs3; - lfs3_format(&lfs3, LFS3_F_RDWR, CFG) => 0; + lfs3_format(&lfs3, + LFS3_F_RDWR + | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_F_GBMAP, -1) : 0), + CFG) => 0; // bump the minor version // @@ -795,7 +821,10 @@ in = 'lfs3.c' code = ''' // create a superblock lfs3_t lfs3; - lfs3_format(&lfs3, LFS3_F_RDWR, CFG) => 0; + lfs3_format(&lfs3, + LFS3_F_RDWR + | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_F_GBMAP, -1) : 0), + CFG) => 0; // set the nonstandard rcompat flag, this will always be incompatible // with standard littlefs @@ -822,7 +851,10 @@ in = 'lfs3.c' code = ''' // create a superblock lfs3_t lfs3; - lfs3_format(&lfs3, LFS3_F_RDWR, CFG) => 0; + lfs3_format(&lfs3, + LFS3_F_RDWR + | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_F_GBMAP, -1) : 0), + CFG) => 0; // set the nonstandard rcompat flag, this will always be incompatible // with standard littlefs @@ -852,7 +884,10 @@ in = 'lfs3.c' code = ''' // create a superblock lfs3_t lfs3; - lfs3_format(&lfs3, LFS3_F_RDWR, CFG) => 0; + lfs3_format(&lfs3, + LFS3_F_RDWR + | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_F_GBMAP, -1) : 0), + CFG) => 0; // set the nonstandard ocompat flag, this will always be incompatible // with standard littlefs @@ -881,7 +916,10 @@ in = 'lfs3.c' code = ''' // create a superblock lfs3_t lfs3; - lfs3_format(&lfs3, LFS3_F_RDWR, CFG) => 0; + lfs3_format(&lfs3, + LFS3_F_RDWR + | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_F_GBMAP, -1) : 0), + CFG) => 0; // set the rdonly flag, this prevents writing from a littlefs image // @@ -910,7 +948,10 @@ in = 'lfs3.c' code = ''' // create a superblock lfs3_t lfs3; - lfs3_format(&lfs3, LFS3_F_RDWR, CFG) => 0; + lfs3_format(&lfs3, + LFS3_F_RDWR + | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_F_GBMAP, -1) : 0), + CFG) => 0; // set the wronly flag, this prevents reading from a littlefs image // @@ -938,7 +979,10 @@ in = 'lfs3.c' code = ''' // create a superblock lfs3_t lfs3; - lfs3_format(&lfs3, LFS3_F_RDWR, CFG) => 0; + lfs3_format(&lfs3, + LFS3_F_RDWR + | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_F_GBMAP, -1) : 0), + CFG) => 0; // set a really far rcompat flag // @@ -969,7 +1013,10 @@ in = 'lfs3.c' code = ''' // create a superblock lfs3_t lfs3; - lfs3_format(&lfs3, LFS3_F_RDWR, CFG) => 0; + lfs3_format(&lfs3, + LFS3_F_RDWR + | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_F_GBMAP, -1) : 0), + CFG) => 0; uint8_t flags[9] = {0}; flags[FLAG / 8] |= 1 << (FLAG % 8); @@ -1006,7 +1053,10 @@ in = 'lfs3.c' code = ''' // create a superblock lfs3_t lfs3; - lfs3_format(&lfs3, LFS3_F_RDWR, CFG) => 0; + lfs3_format(&lfs3, + LFS3_F_RDWR + | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_F_GBMAP, -1) : 0), + CFG) => 0; // set a really far ocompat flag // @@ -1038,7 +1088,10 @@ in = 'lfs3.c' code = ''' // create a superblock lfs3_t lfs3; - lfs3_format(&lfs3, LFS3_F_RDWR, CFG) => 0; + lfs3_format(&lfs3, + LFS3_F_RDWR + | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_F_GBMAP, -1) : 0), + CFG) => 0; // set a really far rcompat flag // @@ -1069,7 +1122,10 @@ in = 'lfs3.c' code = ''' // create a superblock lfs3_t lfs3; - lfs3_format(&lfs3, LFS3_F_RDWR, CFG) => 0; + lfs3_format(&lfs3, + LFS3_F_RDWR + | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_F_GBMAP, -1) : 0), + CFG) => 0; uint8_t flags[9] = {0}; flags[FLAG / 8] |= 1 << (FLAG % 8); @@ -1103,7 +1159,10 @@ in = 'lfs3.c' code = ''' // create a superblock lfs3_t lfs3; - lfs3_format(&lfs3, LFS3_F_RDWR, CFG) => 0; + lfs3_format(&lfs3, + LFS3_F_RDWR + | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_F_GBMAP, -1) : 0), + CFG) => 0; // set a really far ocompat flag // @@ -1134,7 +1193,10 @@ in = 'lfs3.c' code = ''' // create a superblock lfs3_t lfs3; - lfs3_format(&lfs3, LFS3_F_RDWR, CFG) => 0; + lfs3_format(&lfs3, + LFS3_F_RDWR + | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_F_GBMAP, -1) : 0), + CFG) => 0; // set an incompatible block size // @@ -1161,7 +1223,10 @@ in = 'lfs3.c' code = ''' // create a superblock lfs3_t lfs3; - lfs3_format(&lfs3, LFS3_F_RDWR, CFG) => 0; + lfs3_format(&lfs3, + LFS3_F_RDWR + | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_F_GBMAP, -1) : 0), + CFG) => 0; // set an incompatible block count // @@ -1188,7 +1253,10 @@ in = 'lfs3.c' code = ''' // create a superblock lfs3_t lfs3; - lfs3_format(&lfs3, LFS3_F_RDWR, CFG) => 0; + lfs3_format(&lfs3, + LFS3_F_RDWR + | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_F_GBMAP, -1) : 0), + CFG) => 0; // set an incompatible block size // @@ -1212,7 +1280,10 @@ in = 'lfs3.c' code = ''' // create a superblock lfs3_t lfs3; - lfs3_format(&lfs3, LFS3_F_RDWR, CFG) => 0; + lfs3_format(&lfs3, + LFS3_F_RDWR + | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_F_GBMAP, -1) : 0), + CFG) => 0; // set an incompatible file limit // @@ -1249,7 +1320,10 @@ in = 'lfs3.c' code = ''' // create a superblock lfs3_t lfs3; - lfs3_format(&lfs3, LFS3_F_RDWR, CFG) => 0; + lfs3_format(&lfs3, + LFS3_F_RDWR + | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_F_GBMAP, -1) : 0), + CFG) => 0; // create an unknown config lfs3_mount(&lfs3, LFS3_M_RDWR, CFG) => 0; @@ -1271,7 +1345,10 @@ in = 'lfs3.c' code = ''' // create a superblock lfs3_t lfs3; - lfs3_format(&lfs3, LFS3_F_RDWR, CFG) => 0; + lfs3_format(&lfs3, + LFS3_F_RDWR + | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_F_GBMAP, -1) : 0), + CFG) => 0; // create some files lfs3_mount(&lfs3, LFS3_M_RDWR, CFG) => 0; @@ -1359,7 +1436,10 @@ in = 'lfs3.c' code = ''' // create a superblock lfs3_t lfs3; - lfs3_format(&lfs3, LFS3_F_RDWR, CFG) => 0; + lfs3_format(&lfs3, + LFS3_F_RDWR + | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_F_GBMAP, -1) : 0), + CFG) => 0; // create some files lfs3_mount(&lfs3, LFS3_M_RDWR, CFG) => 0; @@ -1466,7 +1546,10 @@ in = 'lfs3.c' code = ''' // create a superblock lfs3_t lfs3; - lfs3_format(&lfs3, LFS3_F_RDWR, CFG) => 0; + lfs3_format(&lfs3, + LFS3_F_RDWR + | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_F_GBMAP, -1) : 0), + CFG) => 0; // create some files lfs3_mount(&lfs3, LFS3_M_RDWR, CFG) => 0; @@ -1576,7 +1659,10 @@ in = 'lfs3.c' code = ''' // create a superblock lfs3_t lfs3; - lfs3_format(&lfs3, LFS3_F_RDWR, CFG) => 0; + lfs3_format(&lfs3, + LFS3_F_RDWR + | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_F_GBMAP, -1) : 0), + CFG) => 0; // create some files lfs3_mount(&lfs3, LFS3_M_RDWR, CFG) => 0; @@ -1686,7 +1772,10 @@ in = 'lfs3.c' code = ''' // create a superblock lfs3_t lfs3; - lfs3_format(&lfs3, LFS3_F_RDWR, CFG) => 0; + lfs3_format(&lfs3, + LFS3_F_RDWR + | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_F_GBMAP, -1) : 0), + CFG) => 0; // create some files lfs3_mount(&lfs3, LFS3_M_RDWR, CFG) => 0; @@ -1805,7 +1894,10 @@ in = 'lfs3.c' code = ''' // create a superblock lfs3_t lfs3; - lfs3_format(&lfs3, LFS3_F_RDWR, CFG) => 0; + lfs3_format(&lfs3, + LFS3_F_RDWR + | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_F_GBMAP, -1) : 0), + CFG) => 0; // create some files lfs3_mount(&lfs3, LFS3_M_RDWR, CFG) => 0; @@ -1919,7 +2011,10 @@ in = 'lfs3.c' code = ''' // create a superblock lfs3_t lfs3; - lfs3_format(&lfs3, LFS3_F_RDWR, CFG) => 0; + lfs3_format(&lfs3, + LFS3_F_RDWR + | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_F_GBMAP, -1) : 0), + CFG) => 0; // create some files lfs3_mount(&lfs3, LFS3_M_RDWR, CFG) => 0; @@ -2029,7 +2124,10 @@ in = 'lfs3.c' code = ''' // create a superblock lfs3_t lfs3; - lfs3_format(&lfs3, LFS3_F_RDWR, CFG) => 0; + lfs3_format(&lfs3, + LFS3_F_RDWR + | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_F_GBMAP, -1) : 0), + CFG) => 0; // create some files lfs3_mount(&lfs3, LFS3_M_RDWR, CFG) => 0; @@ -2150,7 +2248,10 @@ in = 'lfs3.c' code = ''' // create a superblock lfs3_t lfs3; - lfs3_format(&lfs3, LFS3_F_RDWR, CFG) => 0; + lfs3_format(&lfs3, + LFS3_F_RDWR + | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_F_GBMAP, -1) : 0), + CFG) => 0; // with some files lfs3_mount(&lfs3, LFS3_M_RDWR, CFG) => 0; diff --git a/tests/test_trvs.toml b/tests/test_trvs.toml index b5d74cb2..249c6804 100644 --- a/tests/test_trvs.toml +++ b/tests/test_trvs.toml @@ -20,11 +20,9 @@ if = ''' [cases.test_trvs_simple] defines.MKCONSISTENT = [false, true] defines.LOOKAHEAD = [false, true] -defines.LOOKGBMAP = [false, true] defines.COMPACTMETA = [false, true] defines.CKMETA = [false, true] defines.CKDATA = [false, true] -if = 'GBMAP || !LOOKGBMAP' code = ''' lfs3_t lfs3; lfs3_format(&lfs3, @@ -39,9 +37,6 @@ code = ''' LFS3_T_RDWR | ((MKCONSISTENT) ? LFS3_T_MKCONSISTENT : 0) | ((LOOKAHEAD) ? LFS3_T_LOOKAHEAD : 0) - | ((LOOKGBMAP) - ? LFS3_IFDEF_GBMAP(LFS3_T_LOOKGBMAP, -1) - : 0) | ((COMPACTMETA) ? LFS3_T_COMPACTMETA : 0) | ((CKMETA) ? LFS3_T_CKMETA : 0) | ((CKDATA) ? LFS3_T_CKDATA : 0)) => 0; @@ -85,9 +80,6 @@ code = ''' LFS3_T_RDWR | ((MKCONSISTENT) ? LFS3_T_MKCONSISTENT : 0) | ((LOOKAHEAD) ? LFS3_T_LOOKAHEAD : 0) - | ((LOOKGBMAP) - ? LFS3_IFDEF_GBMAP(LFS3_T_LOOKGBMAP, -1) - : 0) | ((COMPACTMETA) ? LFS3_T_COMPACTMETA : 0) | ((CKMETA) ? LFS3_T_CKMETA : 0) | ((CKDATA) ? LFS3_T_CKDATA : 0)) => 0; @@ -129,11 +121,9 @@ code = ''' [cases.test_trvs_idempotent] defines.MKCONSISTENT = [false, true] defines.LOOKAHEAD = [false, true] -defines.LOOKGBMAP = [false, true] defines.COMPACTMETA = [false, true] defines.CKMETA = [false, true] defines.CKDATA = [false, true] -if = 'GBMAP || !LOOKGBMAP' code = ''' lfs3_t lfs3; lfs3_format(&lfs3, @@ -148,9 +138,6 @@ code = ''' LFS3_T_RDWR | ((MKCONSISTENT) ? LFS3_T_MKCONSISTENT : 0) | ((LOOKAHEAD) ? LFS3_T_LOOKAHEAD : 0) - | ((LOOKGBMAP) - ? LFS3_IFDEF_GBMAP(LFS3_T_LOOKGBMAP, -1) - : 0) | ((COMPACTMETA) ? LFS3_T_COMPACTMETA : 0) | ((CKMETA) ? LFS3_T_CKMETA : 0) | ((CKDATA) ? LFS3_T_CKDATA : 0)) => 0; @@ -1777,11 +1764,9 @@ done:; [cases.test_trvs_flags] defines.MKCONSISTENT = [false, true] defines.LOOKAHEAD = [false, true] -defines.LOOKGBMAP = [false, true] defines.COMPACTMETA = [false, true] defines.CKMETA = [false, true] defines.CKDATA = [false, true] -if = 'GBMAP || !LOOKGBMAP' code = ''' lfs3_t lfs3; lfs3_format(&lfs3, @@ -1797,7 +1782,7 @@ code = ''' LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | LFS3_I_MKCONSISTENT - | LFS3_I_LOOKAHEAD + | ((!GBMAP) ? LFS3_I_LOOKAHEAD : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA | LFS3_I_CKDATA @@ -1809,9 +1794,6 @@ code = ''' LFS3_T_RDWR | ((MKCONSISTENT) ? LFS3_T_MKCONSISTENT : 0) | ((LOOKAHEAD) ? LFS3_T_LOOKAHEAD : 0) - | ((LOOKGBMAP) - ? LFS3_IFDEF_GBMAP(LFS3_T_LOOKGBMAP, -1) - : 0) | ((COMPACTMETA) ? LFS3_T_COMPACTMETA : 0) | ((CKMETA) ? LFS3_T_CKMETA : 0) | ((CKDATA) ? LFS3_T_CKDATA : 0)) => 0; @@ -1837,7 +1819,7 @@ code = ''' LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | ((!MKCONSISTENT) ? LFS3_I_MKCONSISTENT : 0) - | ((!LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0) + | ((!LOOKAHEAD && !GBMAP) ? LFS3_I_LOOKAHEAD : 0) | ((!COMPACTMETA) ? LFS3_I_COMPACTMETA : 0) // note ckdata implies ckmeta | ((!CKMETA && !CKDATA) ? LFS3_I_CKMETA : 0) @@ -1937,7 +1919,7 @@ done:; assert(fsinfo.flags == ( LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) - | LFS3_I_LOOKAHEAD + | ((!GBMAP) ? LFS3_I_LOOKAHEAD : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA | LFS3_I_CKDATA @@ -2012,7 +1994,7 @@ code = ''' assert(fsinfo.flags == ( LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) - | LFS3_I_LOOKAHEAD + | ((!GBMAP) ? LFS3_I_LOOKAHEAD : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA | LFS3_I_CKDATA @@ -2045,7 +2027,7 @@ code = ''' assert(fsinfo.flags == ( LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) - | LFS3_I_LOOKAHEAD + | ((!GBMAP) ? LFS3_I_LOOKAHEAD : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA | LFS3_I_CKDATA @@ -2136,7 +2118,7 @@ done:; assert(fsinfo.flags == ( LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) - | LFS3_I_LOOKAHEAD + | ((!GBMAP) ? LFS3_I_LOOKAHEAD : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA | LFS3_I_CKDATA @@ -2231,7 +2213,7 @@ done:; assert(fsinfo.flags == ( LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) - | LFS3_I_LOOKAHEAD + | ((!GBMAP) ? LFS3_I_LOOKAHEAD : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA | LFS3_I_CKDATA @@ -2334,7 +2316,7 @@ done:; assert(fsinfo.flags == ( LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) - | LFS3_I_LOOKAHEAD + | ((!GBMAP) ? LFS3_I_LOOKAHEAD : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA | LFS3_I_CKDATA @@ -2418,9 +2400,8 @@ code = ''' assert(fsinfo.flags == ( LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) - | LFS3_I_LOOKAHEAD - | ((GBMAP && SIZE >= BLOCK_SIZE/4) - ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) + | ((!GBMAP || SIZE >= BLOCK_SIZE/4) + ? LFS3_I_LOOKAHEAD : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA @@ -2518,17 +2499,18 @@ code = ''' | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) // ok we might've updated lookahead if write stayed in // cache - | ((!LOOKAHEAD || SIZE > FCACHE_SIZE || SYNC) - ? LFS3_I_LOOKAHEAD : 0) - | ((GBMAP && SIZE >= BLOCK_SIZE/4) - ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) + | (((!LOOKAHEAD || SIZE > FCACHE_SIZE || SYNC) + && (!GBMAP || SIZE >= BLOCK_SIZE/4)) + ? LFS3_I_LOOKAHEAD : 0) | LFS3_I_COMPACTMETA // and maybe ckmeta/ckdata, note ckdata implies ckmeta | (((!CKMETA && !CKDATA) || SIZE > FCACHE_SIZE || SYNC) - ? LFS3_I_CKMETA : 0) + ? LFS3_I_CKMETA + : 0) | ((!CKDATA || SIZE > FCACHE_SIZE || SYNC) - ? LFS3_I_CKDATA : 0) + ? LFS3_I_CKDATA + : 0) | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_GBMAP, -1) : 0))); // check the file contents @@ -2640,7 +2622,7 @@ done:; assert(fsinfo.flags == ( LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) - | LFS3_I_LOOKAHEAD + | ((!GBMAP) ? LFS3_I_LOOKAHEAD : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA | LFS3_I_CKDATA @@ -2773,7 +2755,6 @@ done:; LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | LFS3_I_LOOKAHEAD - | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA | LFS3_I_CKDATA @@ -2896,7 +2877,6 @@ done:; LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | LFS3_I_LOOKAHEAD - | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA | LFS3_I_CKDATA @@ -3003,7 +2983,7 @@ done:; assert(fsinfo.flags == ( LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) - | LFS3_I_LOOKAHEAD + | ((!GBMAP) ? LFS3_I_LOOKAHEAD : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA | LFS3_I_CKDATA @@ -3138,7 +3118,6 @@ done:; LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | LFS3_I_LOOKAHEAD - | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA | LFS3_I_CKDATA @@ -3263,7 +3242,6 @@ done:; LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | LFS3_I_LOOKAHEAD - | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA | LFS3_I_CKDATA @@ -3383,7 +3361,7 @@ done:; LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | ((DESYNC) ? LFS3_I_MKCONSISTENT : 0) - | ((!(LOOKAHEAD && DESYNC)) ? LFS3_I_LOOKAHEAD : 0) + | ((!(LOOKAHEAD && DESYNC) && !GBMAP) ? LFS3_I_LOOKAHEAD : 0) | LFS3_I_COMPACTMETA // note ckdata implies ckmeta | ((!(CKMETA && DESYNC) && !(CKDATA && DESYNC)) @@ -3529,7 +3507,6 @@ done:; | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | ((DESYNC) ? LFS3_I_MKCONSISTENT : 0) | ((!(LOOKAHEAD && DESYNC)) ? LFS3_I_LOOKAHEAD : 0) - | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) : 0) | LFS3_I_COMPACTMETA // note ckdata implies ckmeta | ((!(CKMETA && DESYNC) && !(CKDATA && DESYNC)) @@ -3665,7 +3642,6 @@ done:; | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | ((DESYNC) ? LFS3_I_MKCONSISTENT : 0) | ((!(LOOKAHEAD && DESYNC)) ? LFS3_I_LOOKAHEAD : 0) - | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) : 0) | LFS3_I_COMPACTMETA // note ckdata implies ckmeta | ((!(CKMETA && DESYNC) && !(CKDATA && DESYNC)) @@ -3787,7 +3763,6 @@ done:; | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | ((DESYNC) ? LFS3_I_MKCONSISTENT : 0) | ((!(LOOKAHEAD && DESYNC)) ? LFS3_I_LOOKAHEAD : 0) - | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) : 0) | LFS3_I_COMPACTMETA // note ckdata implies ckmeta | ((!(CKMETA && DESYNC) && !(CKDATA && DESYNC)) @@ -3911,7 +3886,6 @@ done:; LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | LFS3_I_LOOKAHEAD - | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA | LFS3_I_CKDATA @@ -4037,7 +4011,6 @@ done:; LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | LFS3_I_LOOKAHEAD - | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA | LFS3_I_CKDATA @@ -4166,7 +4139,6 @@ done:; LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | LFS3_I_LOOKAHEAD - | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA | LFS3_I_CKDATA @@ -4308,7 +4280,6 @@ done:; LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | LFS3_I_LOOKAHEAD - | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA | LFS3_I_CKDATA @@ -4450,7 +4421,6 @@ done:; LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | LFS3_I_LOOKAHEAD - | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA | LFS3_I_CKDATA @@ -4572,7 +4542,6 @@ done:; LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | LFS3_I_LOOKAHEAD - | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA | LFS3_I_CKDATA @@ -4695,7 +4664,6 @@ done:; LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | LFS3_I_LOOKAHEAD - | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA | LFS3_I_CKDATA @@ -4831,7 +4799,6 @@ done:; LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | LFS3_I_LOOKAHEAD - | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA | LFS3_I_CKDATA @@ -4968,7 +4935,6 @@ done:; LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | LFS3_I_LOOKAHEAD - | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA | LFS3_I_CKDATA @@ -5159,7 +5125,6 @@ done:; LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | LFS3_I_LOOKAHEAD - | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA | LFS3_I_CKDATA @@ -5366,7 +5331,6 @@ done:; LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | LFS3_I_LOOKAHEAD - | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA | LFS3_I_CKDATA @@ -5568,7 +5532,6 @@ done:; LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | LFS3_I_LOOKAHEAD - | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA | LFS3_I_CKDATA @@ -5767,7 +5730,6 @@ done:; LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | LFS3_I_LOOKAHEAD - | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA | LFS3_I_CKDATA @@ -5972,7 +5934,6 @@ done:; LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | LFS3_I_LOOKAHEAD - | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA | LFS3_I_CKDATA @@ -6182,7 +6143,6 @@ done:; LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | LFS3_I_LOOKAHEAD - | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA | LFS3_I_CKDATA @@ -6397,7 +6357,6 @@ done:; LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | LFS3_I_LOOKAHEAD - | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA | LFS3_I_CKDATA @@ -6470,7 +6429,7 @@ code = ''' assert(fsinfo.flags == ( LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) - | LFS3_I_LOOKAHEAD + | ((!GBMAP) ? LFS3_I_LOOKAHEAD : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA | LFS3_I_CKDATA @@ -6508,7 +6467,7 @@ code = ''' assert(fsinfo.flags == ( LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) - | LFS3_I_LOOKAHEAD + | ((!GBMAP) ? LFS3_I_LOOKAHEAD : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA | LFS3_I_CKDATA @@ -6533,7 +6492,7 @@ code = ''' assert(fsinfo.flags == ( LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) - | ((!LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0) + | ((!LOOKAHEAD && !GBMAP) ? LFS3_I_LOOKAHEAD : 0) // note ckdata implies ckmeta | ((!CKMETA && !CKDATA) ? LFS3_I_CKMETA : 0) | ((!CKDATA) ? LFS3_I_CKDATA : 0) @@ -6620,7 +6579,6 @@ code = ''' LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | LFS3_I_LOOKAHEAD - | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA | LFS3_I_CKDATA @@ -6667,7 +6625,6 @@ code = ''' LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | LFS3_I_LOOKAHEAD - | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA | LFS3_I_CKDATA @@ -6695,7 +6652,6 @@ code = ''' LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | ((!LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0) - | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) : 0) // note ckdata implies ckmeta | ((!CKMETA && !CKDATA) ? LFS3_I_CKMETA : 0) | ((!CKDATA) ? LFS3_I_CKDATA : 0) @@ -6763,7 +6719,7 @@ code = ''' assert(fsinfo.flags == ( LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) - | LFS3_I_LOOKAHEAD + | ((!GBMAP) ? LFS3_I_LOOKAHEAD : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA | LFS3_I_CKDATA @@ -6804,7 +6760,6 @@ code = ''' LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | LFS3_I_LOOKAHEAD - | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA | LFS3_I_CKDATA @@ -6830,7 +6785,6 @@ code = ''' LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | ((!LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0) - | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) : 0) // note ckdata implies ckmeta | ((!CKMETA && !CKDATA) ? LFS3_I_CKMETA : 0) | ((!CKDATA) ? LFS3_I_CKDATA : 0) @@ -6925,7 +6879,7 @@ code = ''' assert(fsinfo.flags == ( LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) - | LFS3_I_LOOKAHEAD + | ((!GBMAP) ? LFS3_I_LOOKAHEAD : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA | LFS3_I_CKDATA @@ -6978,7 +6932,6 @@ code = ''' LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | LFS3_I_LOOKAHEAD - | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA | LFS3_I_CKDATA @@ -7005,7 +6958,6 @@ code = ''' LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | ((!LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0) - | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) : 0) // note ckdata implies ckmeta | ((!CKMETA && !CKDATA) ? LFS3_I_CKMETA : 0) | ((!CKDATA) ? LFS3_I_CKDATA : 0) @@ -7155,7 +7107,6 @@ code = ''' LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | LFS3_I_LOOKAHEAD - | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA | LFS3_I_CKDATA @@ -7215,7 +7166,6 @@ code = ''' LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | LFS3_I_LOOKAHEAD - | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA | LFS3_I_CKDATA @@ -7244,7 +7194,6 @@ code = ''' LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | ((!LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0) - | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) : 0) // note ckdata implies ckmeta | ((!CKMETA && !CKDATA) ? LFS3_I_CKMETA : 0) | ((!CKDATA) ? LFS3_I_CKDATA : 0) @@ -7399,7 +7348,6 @@ code = ''' LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | LFS3_I_LOOKAHEAD - | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA | LFS3_I_CKDATA @@ -7464,7 +7412,6 @@ code = ''' LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | LFS3_I_LOOKAHEAD - | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA | LFS3_I_CKDATA @@ -7493,7 +7440,6 @@ code = ''' LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | ((!LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0) - | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) : 0) // note ckdata implies ckmeta | ((!CKMETA && !CKDATA) ? LFS3_I_CKMETA : 0) | ((!CKDATA) ? LFS3_I_CKDATA : 0) @@ -7613,10 +7559,7 @@ code = ''' LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | ((ORPHANS > 0) ? LFS3_I_MKCONSISTENT : 0) - | LFS3_I_LOOKAHEAD - | ((GBMAP && ORPHANS >= 100) - ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) - : 0) + | ((!GBMAP || ORPHANS >= 100) ? LFS3_I_LOOKAHEAD : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA | LFS3_I_CKDATA @@ -7683,9 +7626,9 @@ code = ''' assert(fsinfo.flags == ( LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) - | ((!LOOKAHEAD || ORPHANS > 0) ? LFS3_I_LOOKAHEAD : 0) - | ((GBMAP && ORPHANS >= 100) - ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) + | (((!LOOKAHEAD || ORPHANS > 0) + && (!GBMAP || ORPHANS >= 100)) + ? LFS3_I_LOOKAHEAD : 0) | LFS3_I_COMPACTMETA // note ckdata implies ckmeta @@ -7765,7 +7708,7 @@ code = ''' assert(fsinfo.flags == ( LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) - | LFS3_I_LOOKAHEAD + | ((!GBMAP) ? LFS3_I_LOOKAHEAD : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA | LFS3_I_CKDATA @@ -7854,9 +7797,9 @@ code = ''' LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | ((ORPHANS >= 3) ? LFS3_I_MKCONSISTENT : 0) - | ((!LOOKAHEAD || ORPHANS > 0) ? LFS3_I_LOOKAHEAD : 0) - | ((GBMAP && ORPHANS >= 100) - ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) + | (((!LOOKAHEAD || ORPHANS > 0) + && (!GBMAP || ORPHANS >= 100)) + ? LFS3_I_LOOKAHEAD : 0) | LFS3_I_COMPACTMETA // note ckdata implies ckmeta @@ -7963,7 +7906,6 @@ code = ''' | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | ((ORPHANS > 0) ? LFS3_I_MKCONSISTENT : 0) | LFS3_I_LOOKAHEAD - | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA | LFS3_I_CKDATA @@ -8044,7 +7986,6 @@ code = ''' LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | ((!LOOKAHEAD || ORPHANS > 0) ? LFS3_I_LOOKAHEAD : 0) - | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) : 0) | LFS3_I_COMPACTMETA // note ckdata implies ckmeta | (((!CKMETA && !CKDATA) || ORPHANS > 0) ? LFS3_I_CKMETA : 0) @@ -8150,7 +8091,6 @@ code = ''' | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | ((ORPHANS > 0) ? LFS3_I_MKCONSISTENT : 0) | LFS3_I_LOOKAHEAD - | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA | LFS3_I_CKDATA @@ -8231,7 +8171,6 @@ code = ''' LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | ((!LOOKAHEAD || ORPHANS > 0) ? LFS3_I_LOOKAHEAD : 0) - | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) : 0) | LFS3_I_COMPACTMETA // note ckdata implies ckmeta | (((!CKMETA && !CKDATA) || ORPHANS > 0) ? LFS3_I_CKMETA : 0) @@ -8338,7 +8277,6 @@ code = ''' | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | ((ORPHANS > 0) ? LFS3_I_MKCONSISTENT : 0) | LFS3_I_LOOKAHEAD - | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA | LFS3_I_CKDATA @@ -8427,7 +8365,6 @@ code = ''' LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | ((!LOOKAHEAD || ORPHANS > 0) ? LFS3_I_LOOKAHEAD : 0) - | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) : 0) | LFS3_I_COMPACTMETA // note ckdata implies ckmeta | (((!CKMETA && !CKDATA) || ORPHANS > 0) ? LFS3_I_CKMETA : 0) @@ -8534,7 +8471,6 @@ code = ''' | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | ((ORPHANS > 0) ? LFS3_I_MKCONSISTENT : 0) | LFS3_I_LOOKAHEAD - | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA | LFS3_I_CKDATA @@ -8623,7 +8559,6 @@ code = ''' LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | ((!LOOKAHEAD || ORPHANS > 0) ? LFS3_I_LOOKAHEAD : 0) - | ((GBMAP) ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) : 0) | LFS3_I_COMPACTMETA // note ckdata implies ckmeta | (((!CKMETA && !CKDATA) || ORPHANS > 0) ? LFS3_I_CKMETA : 0) @@ -8747,9 +8682,8 @@ code = ''' LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | ((ORPHANS > 0) ? LFS3_I_MKCONSISTENT : 0) - | LFS3_I_LOOKAHEAD - | ((GBMAP && ORPHANS >= 100) - ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) + | ((!GBMAP || ORPHANS >= 100) + ? LFS3_I_LOOKAHEAD : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA @@ -8822,9 +8756,8 @@ code = ''' assert(fsinfo.flags == ( LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) - | LFS3_I_LOOKAHEAD - | ((GBMAP && ORPHANS >= 100) - ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) + | ((!GBMAP || ORPHANS >= 100) + ? LFS3_I_LOOKAHEAD : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA @@ -8851,9 +8784,8 @@ code = ''' assert(fsinfo.flags == ( LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) - | ((!LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0) - | ((GBMAP && ORPHANS >= 100) - ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) + | ((!LOOKAHEAD && (!GBMAP || ORPHANS >= 100)) + ? LFS3_I_LOOKAHEAD : 0) // note ckdata implies ckmeta | ((!CKMETA && !CKDATA) ? LFS3_I_CKMETA : 0) @@ -8955,7 +8887,7 @@ code = ''' assert(fsinfo.flags == ( LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) - | LFS3_I_LOOKAHEAD + | ((!GBMAP) ? LFS3_I_LOOKAHEAD : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA | LFS3_I_CKDATA @@ -9049,9 +8981,8 @@ code = ''' LFS3_IFDEF_YES_REVDBG(LFS3_I_REVDBG, 0) | LFS3_IFDEF_YES_REVNOISE(LFS3_I_REVNOISE, 0) | ((ORPHANS >= 3) ? LFS3_I_MKCONSISTENT : 0) - | LFS3_I_LOOKAHEAD - | ((GBMAP && ORPHANS >= 100) - ? LFS3_IFDEF_GBMAP(LFS3_I_LOOKGBMAP, -1) + | ((!GBMAP || ORPHANS >= 100) + ? LFS3_I_LOOKAHEAD : 0) | LFS3_I_COMPACTMETA | LFS3_I_CKMETA @@ -9100,14 +9031,12 @@ code = ''' defines.STEPS = [1, 2, 4, 8, 16, 32, 64, 128] defines.MKCONSISTENT = [false, true] defines.LOOKAHEAD = [false, true] -defines.LOOKGBMAP = [false, true] defines.COMPACTMETA = [false, true] defines.CKMETA = [true] defines.CKDATA = [true] # 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 || !LOOKGBMAP' code = ''' // test creating directories lfs3_t lfs3; @@ -9123,9 +9052,6 @@ code = ''' LFS3_T_RDWR | ((MKCONSISTENT) ? LFS3_T_MKCONSISTENT : 0) | ((LOOKAHEAD) ? LFS3_T_LOOKAHEAD : 0) - | ((LOOKGBMAP) - ? LFS3_IFDEF_GBMAP(LFS3_T_LOOKGBMAP, -1) - : 0) | ((COMPACTMETA) ? LFS3_T_COMPACTMETA : 0) | ((CKMETA) ? LFS3_T_CKMETA : 0) | ((CKDATA) ? LFS3_T_CKDATA : 0)) => 0; @@ -9219,7 +9145,6 @@ code = ''' defines.STEPS = [1, 2, 4, 8, 16, 32, 64, 128] defines.MKCONSISTENT = [false, true] defines.LOOKAHEAD = [false, true] -defines.LOOKGBMAP = [false, true] defines.COMPACTMETA = [false, true] defines.CKMETA = [true] defines.CKDATA = [true] @@ -9229,7 +9154,6 @@ defines.N = [1, 2, 4, 8, 16, 32, 64, 128, 256] defines.OPS = '2*N' defines.SEED = 42 fuzz = 'SEED' -if = 'GBMAP || !LOOKGBMAP' code = ''' // test fuzz with dirs lfs3_t lfs3; @@ -9249,9 +9173,6 @@ code = ''' LFS3_T_RDWR | ((MKCONSISTENT) ? LFS3_T_MKCONSISTENT : 0) | ((LOOKAHEAD) ? LFS3_T_LOOKAHEAD : 0) - | ((LOOKGBMAP) - ? LFS3_IFDEF_GBMAP(LFS3_T_LOOKGBMAP, -1) - : 0) | ((COMPACTMETA) ? LFS3_T_COMPACTMETA : 0) | ((CKMETA) ? LFS3_T_CKMETA : 0) | ((CKDATA) ? LFS3_T_CKDATA : 0)) => 0; @@ -9409,7 +9330,6 @@ code = ''' defines.STEPS = [1, 2, 4, 8, 16, 32, 64, 128] defines.MKCONSISTENT = [false, true] defines.LOOKAHEAD = [false, true] -defines.LOOKGBMAP = [false, true] defines.COMPACTMETA = [false, true] defines.CKMETA = [true] defines.CKDATA = [true] @@ -9425,10 +9345,7 @@ defines.SIZE = [ '2*BLOCK_SIZE', '4*BLOCK_SIZE', ] -if = [ - '(SIZE*N)/BLOCK_SIZE <= 32', - 'GBMAP || !LOOKGBMAP', -] +if = '(SIZE*N)/BLOCK_SIZE <= 32' code = ''' // test creating files lfs3_t lfs3; @@ -9444,9 +9361,6 @@ code = ''' LFS3_T_RDWR | ((MKCONSISTENT) ? LFS3_T_MKCONSISTENT : 0) | ((LOOKAHEAD) ? LFS3_T_LOOKAHEAD : 0) - | ((LOOKGBMAP) - ? LFS3_IFDEF_GBMAP(LFS3_T_LOOKGBMAP, -1) - : 0) | ((COMPACTMETA) ? LFS3_T_COMPACTMETA : 0) | ((CKMETA) ? LFS3_T_CKMETA : 0) | ((CKDATA) ? LFS3_T_CKDATA : 0)) => 0; @@ -9524,7 +9438,6 @@ code = ''' defines.STEPS = [1, 2, 4, 8, 16, 32, 64, 128] defines.MKCONSISTENT = [false, true] defines.LOOKAHEAD = [false, true] -defines.LOOKGBMAP = [false, true] defines.COMPACTMETA = [false, true] defines.CKMETA = [true] defines.CKDATA = [true] @@ -9543,10 +9456,7 @@ defines.SIZE = [ ] defines.SEED = 42 fuzz = 'SEED' -if = [ - '(SIZE*N)/BLOCK_SIZE <= 16', - 'GBMAP || !LOOKGBMAP', -] +if = '(SIZE*N)/BLOCK_SIZE <= 16' code = ''' // test fuzz with files lfs3_t lfs3; @@ -9567,9 +9477,6 @@ code = ''' LFS3_T_RDWR | ((MKCONSISTENT) ? LFS3_T_MKCONSISTENT : 0) | ((LOOKAHEAD) ? LFS3_T_LOOKAHEAD : 0) - | ((LOOKGBMAP) - ? LFS3_IFDEF_GBMAP(LFS3_T_LOOKGBMAP, -1) - : 0) | ((COMPACTMETA) ? LFS3_T_COMPACTMETA : 0) | ((CKMETA) ? LFS3_T_CKMETA : 0) | ((CKDATA) ? LFS3_T_CKDATA : 0)) => 0; @@ -9778,7 +9685,6 @@ code = ''' defines.STEPS = [1, 2, 4, 8, 16, 32, 64, 128] defines.MKCONSISTENT = [false, true] defines.LOOKAHEAD = [false, true] -defines.LOOKGBMAP = [false, true] defines.COMPACTMETA = [false, true] defines.CKMETA = [true] defines.CKDATA = [true] @@ -9806,7 +9712,6 @@ if = [ 'CHUNK <= SIZE', # this just saves testing time 'SIZE <= 4*1024*FRAGMENT_SIZE', - 'GBMAP || !LOOKGBMAP', ] code = ''' // test with complex file writes @@ -9851,9 +9756,6 @@ code = ''' LFS3_T_RDWR | ((MKCONSISTENT) ? LFS3_T_MKCONSISTENT : 0) | ((LOOKAHEAD) ? LFS3_T_LOOKAHEAD : 0) - | ((LOOKGBMAP) - ? LFS3_IFDEF_GBMAP(LFS3_T_LOOKGBMAP, -1) - : 0) | ((COMPACTMETA) ? LFS3_T_COMPACTMETA : 0) | ((CKMETA) ? LFS3_T_CKMETA : 0) | ((CKDATA) ? LFS3_T_CKDATA : 0)) => 0; @@ -9950,7 +9852,6 @@ code = ''' defines.STEPS = [1, 2, 4, 8, 16, 32, 64, 128] defines.MKCONSISTENT = [false, true] defines.LOOKAHEAD = [false, true] -defines.LOOKGBMAP = [false, true] defines.COMPACTMETA = [false, true] defines.CKMETA = [true] defines.CKDATA = [true] @@ -9971,10 +9872,7 @@ defines.SIZE = [ ] defines.SEED = 42 fuzz = 'SEED' -if = [ - '(SIZE*N)/BLOCK_SIZE <= 16', - 'GBMAP || !LOOKGBMAP', -] +if = '(SIZE*N)/BLOCK_SIZE <= 16' code = ''' // test with uncreats, zombies, etc lfs3_t lfs3; @@ -10006,9 +9904,6 @@ code = ''' LFS3_T_RDWR | ((MKCONSISTENT) ? LFS3_T_MKCONSISTENT : 0) | ((LOOKAHEAD) ? LFS3_T_LOOKAHEAD : 0) - | ((LOOKGBMAP) - ? LFS3_IFDEF_GBMAP(LFS3_T_LOOKGBMAP, -1) - : 0) | ((COMPACTMETA) ? LFS3_T_COMPACTMETA : 0) | ((CKMETA) ? LFS3_T_CKMETA : 0) | ((CKDATA) ? LFS3_T_CKDATA : 0)) => 0; @@ -10415,7 +10310,6 @@ code = ''' defines.STEPS = [1, 2, 4, 8, 16, 32, 64, 128] defines.MKCONSISTENT = [false, true] defines.LOOKAHEAD = [false, true] -defines.LOOKGBMAP = [false, true] defines.COMPACTMETA = [false, true] defines.CKMETA = [true] defines.CKDATA = [true] @@ -10436,10 +10330,7 @@ defines.SIZE = [ ] defines.SEED = 42 fuzz = 'SEED' -if = [ - '(SIZE*N)/BLOCK_SIZE <= 16', - 'GBMAP || !LOOKGBMAP', -] +if = '(SIZE*N)/BLOCK_SIZE <= 16' code = ''' // test with uncreats, zombies, dirs, etc lfs3_t lfs3; @@ -10472,9 +10363,6 @@ code = ''' LFS3_T_RDWR | ((MKCONSISTENT) ? LFS3_T_MKCONSISTENT : 0) | ((LOOKAHEAD) ? LFS3_T_LOOKAHEAD : 0) - | ((LOOKGBMAP) - ? LFS3_IFDEF_GBMAP(LFS3_T_LOOKGBMAP, -1) - : 0) | ((COMPACTMETA) ? LFS3_T_COMPACTMETA : 0) | ((CKMETA) ? LFS3_T_CKMETA : 0) | ((CKDATA) ? LFS3_T_CKDATA : 0)) => 0;