diff --git a/lfs3.c b/lfs3.c index c7514b45..6a6259da 100644 --- a/lfs3.c +++ b/lfs3.c @@ -3241,15 +3241,55 @@ static lfs3_stag_t lfs3_rbyd_lookup(lfs3_t *lfs3, const lfs3_rbyd_t *rbyd, // rbyd append operations +// needed in lfs3_rbyd_appendrev +static inline bool lfs3_m_isrevperturb(uint32_t flags); +static inline bool lfs3_m_isrevnoise(uint32_t flags); + // append a revision count // -// this is optional, if not called revision count defaults to 0 (for btrees) +// this is optional, if not called revision count defaults +// to ~0 (+noise/perturb/debug, for btrees) #ifndef LFS3_RDONLY -static int lfs3_rbyd_appendrev(lfs3_t *lfs3, lfs3_rbyd_t *rbyd, uint32_t rev) { +static int lfs3_rbyd_appendrev(lfs3_t *lfs3, lfs3_rbyd_t *rbyd, + uint32_t rev) { // should only be called before any tags are written LFS3_ASSERT(rbyd->eoff == 0); LFS3_ASSERT(rbyd->cksum == 0); + // perturb first bit? + // + // this ensures at least one big changes in the new rbyd, and is + // necessary to invalidate any ecksums + #ifdef LFS3_REVPERTURB + if (lfs3_m_isrevperturb(lfs3->flags)) { + uint8_t e = 0; + int err = lfs3_bd_read(lfs3, + rbyd->blocks[0], 0, 0, + &e, 1); + if (err && err != LFS3_ERR_CORRUPT) { + return err; + } + + // perturb! + rev = (rev & ~0x80) | (~e & 0x80); + } + #endif + + // xor in pseudorandom noise? + // + // this reduces chance of checksum collisions due to filesystem + // bugs, but is otherwise unnecessary, note we really don't want + // this enabled during testing! + #ifdef LFS3_REVNOISE + if (lfs3_m_isrevnoise(lfs3->flags)) { + rev ^= ~(~((1 << (28-lfs3_smax(lfs3->recycle_bits, 0)))-1) + | 0xff) + // we need to use gcksum_p because we have be in the + // middle of updating the gcksum + & lfs3->gcksum_p; + } + #endif + // revision count stored as le32, we don't use a leb128 encoding as we // intentionally allow the revision count to overflow uint8_t rev_buf[sizeof(uint32_t)]; @@ -3578,7 +3618,9 @@ static int lfs3_rbyd_appendinit(lfs3_t *lfs3, lfs3_rbyd_t *rbyd) { // make sure every rbyd starts with a revision count if (rbyd->eoff == 0) { - int err = lfs3_rbyd_appendrev(lfs3, rbyd, 0); + // we only fallback to this when updating btrees, so default to + // btree debug bits, they're called low-effort after all + int err = lfs3_rbyd_appendrev(lfs3, rbyd, 'b'); if (err) { return err; } @@ -5814,18 +5856,6 @@ static int lfs3_btree_commit_(lfs3_t *lfs3, return err; } - #if defined(LFS3_REVDBG) || defined(LFS3_REVNOISE) - // append a revision count? - err = lfs3_rbyd_appendrev(lfs3, child_, lfs3_rev_btree(lfs3)); - if (err) { - // bad prog? try another block - if (err == LFS3_ERR_CORRUPT) { - goto relocate; - } - return err; - } - #endif - // try to compact err = lfs3_rbyd_compact(lfs3, child_, &child, -1, -1); if (err) { @@ -5864,18 +5894,6 @@ static int lfs3_btree_commit_(lfs3_t *lfs3, return err; } - #if defined(LFS3_REVDBG) || defined(LFS3_REVNOISE) - // append a revision count? - err = lfs3_rbyd_appendrev(lfs3, child_, lfs3_rev_btree(lfs3)); - if (err) { - // bad prog? try another block - if (err == LFS3_ERR_CORRUPT) { - goto split_relocate_l; - } - return err; - } - #endif - // copy over tags < split_rid err = lfs3_rbyd_compact(lfs3, child_, &child, -1, split_rid); if (err) { @@ -5920,18 +5938,6 @@ static int lfs3_btree_commit_(lfs3_t *lfs3, return err; } - #if defined(LFS3_REVDBG) || defined(LFS3_REVNOISE) - // append a revision count? - err = lfs3_rbyd_appendrev(lfs3, &sibling, lfs3_rev_btree(lfs3)); - if (err) { - // bad prog? try another block - if (err == LFS3_ERR_CORRUPT) { - goto split_relocate_r; - } - return err; - } - #endif - // copy over tags >= split_rid err = lfs3_rbyd_compact(lfs3, &sibling, &child, split_rid, -1); if (err) { @@ -6048,18 +6054,6 @@ static int lfs3_btree_commit_(lfs3_t *lfs3, return err; } - #if defined(LFS3_REVDBG) || defined(LFS3_REVNOISE) - // append a revision count? - err = lfs3_rbyd_appendrev(lfs3, child_, lfs3_rev_btree(lfs3)); - if (err) { - // bad prog? try another block - if (err == LFS3_ERR_CORRUPT) { - goto merge_relocate; - } - return err; - } - #endif - // merge the siblings together err = lfs3_rbyd_appendcompactrbyd(lfs3, child_, &child, -1, -1); if (err) { @@ -6154,18 +6148,6 @@ relocate:; return err; } - #if defined(LFS3_REVDBG) || defined(LFS3_REVNOISE) - // append a revision count? - err = lfs3_rbyd_appendrev(lfs3, btree_, lfs3_rev_btree(lfs3)); - if (err) { - // bad prog? try another block - if (err == LFS3_ERR_CORRUPT) { - goto relocate; - } - return err; - } - #endif - // bshrubs may call this just to migrate rattrs to a btree if (lfs3_rbyd_isshrub(&btree->r)) { err = lfs3_rbyd_compact(lfs3, btree_, &btree->r, -1, -1); @@ -7294,13 +7276,13 @@ static inline bool lfs3_m_isrdonly(uint32_t flags) { #endif } -#ifdef LFS3_REVDBG -static inline bool lfs3_m_isrevdbg(uint32_t flags) { +#ifdef LFS3_REVPERTURB +static inline bool lfs3_m_isrevperturb(uint32_t flags) { (void)flags; - #ifdef LFS3_YES_REVDBG + #ifdef LFS3_YES_REVPERTURB return true; #else - return flags & LFS3_M_REVDBG; + return flags & LFS3_M_REVPERTURB; #endif } #endif @@ -7773,89 +7755,32 @@ static int lfs3_fs_consumegdelta(lfs3_t *lfs3, const lfs3_mdir_t *mdir) { /// Revision count things /// -// in mdirs, our revision count is broken down into 1-4 parts: +// note! the only strict requirement for revision counts is that the +// most recent block has the most recent revision count, all drivers +// must be ok with _simple_ 32-bit counters! // -// vvvv---- -------- -------- -------- -// vvvvrrrr rrrrrr-- -------- -------- -// vvvvrrrr rrrrrrnn nnnnnnnn nnnnnnnn -// vvvvrrrr rrrrrrnn nnnnnnnn dddddddd -// '-.''----.----''----.- - - '---.--' -// '------|----------|----------|---- 4-bit relocation revision -// '----------|----------|---- recycle-bits recycle counter -// '----------|---- pseudorandom noise (if revnoise) -// '---- h, i, m, or b (if revdbg) -// -11-1--- - h = mroot anchor -// -11-1--1 - i = mroot -// -11-11-1 - m = mdir -// -11---1- - b = btree node +// with that said, this driver crams a few more _optional_ features +// into those 32-bits: +// +// vvvv---- -------- -------- -ddddddd +// vvvvrrrr rrrrrr-- -------- -ddddddd +// vvvvrrrr rrrrrrnn nnnnnnnn pddddddd +// '-.''----.----''----.----' ^'--.--' +// '------|----------|------|---|---- 4-bit relocation revision +// '----------|------|---|---- recycle-bits recycle counter +// '------|---|---- pseudorandom noise (if revnoise) +// '---|---- perturb bit (if revperturb) +// '---- low-effort debug bits +// 11-1--- - h = mroot anchor +// 11-11-1 - m = mdir +// 11---1- - b = btree node // -// needed in lfs3_rev_init -static inline bool lfs3_mdir_ismrootanchor(const lfs3_mdir_t *mdir); -static inline int lfs3_mdir_cmp(const lfs3_mdir_t *a, const lfs3_mdir_t *b); - #ifndef LFS3_RDONLY -static inline uint32_t lfs3_rev_init(lfs3_t *lfs3, const lfs3_mdir_t *mdir, - uint32_t rev) { +static inline uint32_t lfs3_rev_init(lfs3_t *lfs3, uint32_t rev) { (void)lfs3; - (void)mdir; - // we really only care about the top revision bits here - rev &= ~((1 << 28)-1); - // increment revision - rev += 1 << 28; - // xor in pseudorandom noise? - #ifdef LFS3_REVNOISE - if (lfs3_m_isrevnoise(lfs3->flags)) { - rev ^= ((1 << (28-lfs3_smax(lfs3->recycle_bits, 0)))-1) - // we need to use gcksum_p because we have be in the - // middle of updating the gcksum - & lfs3->gcksum_p; - } - #endif - // include debug bits? - #ifdef LFS3_REVDBG - if (lfs3_m_isrevdbg(lfs3->flags)) { - uint32_t mask = (1 << (28-lfs3_smax(lfs3->recycle_bits, 0)))-1; - // mroot anchor? - if (lfs3_mdir_ismrootanchor(mdir)) { - rev = (rev & ~(mask & 0xff)) | (mask & 0x68); - // mroot? - } else if (mdir->mid <= -1 - || lfs3_mdir_cmp(mdir, &lfs3->mroot) == 0) { - rev = (rev & ~(mask & 0xff)) | (mask & 0x69); - // mdir? - } else { - rev = (rev & ~(mask & 0xff)) | (mask & 0x6d); - } - } - #endif - return rev; -} -#endif - -// btrees don't normally need revision counts, but we make use of them -// if revdbg or revnoise is enabled -#ifndef LFS3_RDONLY -static inline uint32_t lfs3_rev_btree(lfs3_t *lfs3) { - (void)lfs3; - uint32_t rev = 0; - // xor in pseudorandom noise? - #ifdef LFS3_REVNOISE - if (lfs3_m_isrevnoise(lfs3->flags)) { - // keep the top nibble zero - rev ^= 0x0fffffff - // we need to use gcksum_p because we have be in the - // middle of updating the gcksum - & lfs3->gcksum_p; - } - #endif - // include debug bits? - #ifdef LFS3_REVDBG - if (lfs3_m_isrevdbg(lfs3->flags)) { - rev = (rev & ~0xff) | 0x62; - } - #endif - return rev; + // we really only care about the top revision bits here, increment + return (rev & ~((1 << 28)-1)) + (1 << 28); } #endif @@ -7872,38 +7797,9 @@ static inline bool lfs3_rev_needsrelocation(lfs3_t *lfs3, uint32_t rev) { #endif #ifndef LFS3_RDONLY -static inline uint32_t lfs3_rev_inc(lfs3_t *lfs3, const lfs3_mdir_t *mdir, - uint32_t rev) { - (void)mdir; +static inline uint32_t lfs3_rev_inc(lfs3_t *lfs3, uint32_t rev) { // increment recycle counter/revision - rev += 1 << (28-lfs3_smax(lfs3->recycle_bits, 0)); - // xor in pseudorandom noise? - #ifdef LFS3_REVNOISE - if (lfs3_m_isrevnoise(lfs3->flags)) { - rev ^= ((1 << (28-lfs3_smax(lfs3->recycle_bits, 0)))-1) - // we need to use gcksum_p because we have be in the - // middle of updating the gcksum - & lfs3->gcksum_p; - } - #endif - // include debug bits? - #ifdef LFS3_REVDBG - if (lfs3_m_isrevdbg(lfs3->flags)) { - uint32_t mask = (1 << (28-lfs3_smax(lfs3->recycle_bits, 0)))-1; - // mroot anchor? - if (lfs3_mdir_ismrootanchor(mdir)) { - rev = (rev & ~(mask & 0xff)) | (mask & 0x68); - // mroot? - } else if (mdir->mid <= -1 - || lfs3_mdir_cmp(mdir, &lfs3->mroot) == 0) { - rev = (rev & ~(mask & 0xff)) | (mask & 0x69); - // mdir? - } else { - rev = (rev & ~(mask & 0xff)) | (mask & 0x6d); - } - } - #endif - return rev; + return rev + (1 << (28-lfs3_smax(lfs3->recycle_bits, 0))); } #endif @@ -8190,8 +8086,8 @@ static int lfs3_mdir_alloc___(lfs3_t *lfs3, lfs3_mdir_t *mdir, } // note we allow corrupt errors here, as long as they are consistent rev = (err != LFS3_ERR_CORRUPT) ? lfs3_fromle32(&rev) : 0; - // reset recycle bits in revision count and increment - rev = lfs3_rev_init(lfs3, mdir, rev); + // reset recycle bits in revision count, add low-effort debug bits + rev = lfs3_rev_init(lfs3, rev) | 'm'; relocate:; // allocate another block with an erase @@ -8236,8 +8132,6 @@ static int lfs3_mdir_swap___(lfs3_t *lfs3, lfs3_mdir_t *mdir_, } // note we allow corrupt errors here, as long as they are consistent rev = (err != LFS3_ERR_CORRUPT) ? lfs3_fromle32(&rev) : 0; - // increment our revision count - rev = lfs3_rev_inc(lfs3, mdir_, rev); // decide if we need to relocate if (!force && lfs3_rev_needsrelocation(lfs3, rev)) { @@ -8259,7 +8153,8 @@ static int lfs3_mdir_swap___(lfs3_t *lfs3, lfs3_mdir_t *mdir_, } // increment our revision count and write it to our rbyd - err = lfs3_rbyd_appendrev(lfs3, &mdir_->r, rev); + err = lfs3_rbyd_appendrev(lfs3, &mdir_->r, + lfs3_rev_inc(lfs3, rev)); if (err) { return err; } @@ -15098,7 +14993,7 @@ static int lfs3_init(lfs3_t *lfs3, uint32_t flags, | LFS3_M_RDONLY | LFS3_M_FLUSH | LFS3_M_SYNC - | LFS3_IFDEF_REVDBG(LFS3_M_REVDBG, 0) + | LFS3_IFDEF_REVPERTURB(LFS3_M_REVPERTURB, 0) | LFS3_IFDEF_REVNOISE(LFS3_M_REVNOISE, 0) | LFS3_IFDEF_CKPROGS(LFS3_M_CKPROGS, 0) | LFS3_IFDEF_CKFETCHES(LFS3_M_CKFETCHES, 0) @@ -15266,6 +15161,10 @@ static int lfs3_init(lfs3_t *lfs3, uint32_t flags, lfs3->recycle_bits = lfs3_min( lfs3_nlog2(2*(lfs3->cfg->block_recycles+1)+1)-1, 28); + // we're currently limited to 20-bits to keep space for + // perturb/low-effort debug bits, though this could be relaxed + // in the future + LFS3_ASSERT(lfs3->recycle_bits <= 20); } else { lfs3->recycle_bits = -1; } @@ -15997,8 +15896,8 @@ int lfs3_mount(lfs3_t *lfs3, uint32_t flags, #ifdef LFS3_YES_SYNC flags |= LFS3_M_SYNC; #endif - #ifdef LFS3_YES_REVDBG - flags |= LFS3_M_REVDBG; + #ifdef LFS3_YES_REVPERTURB + flags |= LFS3_M_REVPERTURB; #endif #ifdef LFS3_YES_REVNOISE flags |= LFS3_M_REVNOISE; @@ -16040,7 +15939,7 @@ int lfs3_mount(lfs3_t *lfs3, uint32_t flags, | LFS3_M_RDONLY | LFS3_M_FLUSH | LFS3_M_SYNC - | LFS3_IFDEF_REVDBG(LFS3_M_REVDBG, 0) + | LFS3_IFDEF_REVPERTURB(LFS3_M_REVPERTURB, 0) | LFS3_IFDEF_REVNOISE(LFS3_M_REVNOISE, 0) | LFS3_IFDEF_CKPROGS(LFS3_M_CKPROGS, 0) | LFS3_IFDEF_CKFETCHES(LFS3_M_CKFETCHES, 0) @@ -16072,7 +15971,7 @@ int lfs3_mount(lfs3_t *lfs3, uint32_t flags, | LFS3_M_RDONLY | LFS3_M_FLUSH | LFS3_M_SYNC - | LFS3_IFDEF_REVDBG(LFS3_M_REVDBG, 0) + | LFS3_IFDEF_REVPERTURB(LFS3_M_REVPERTURB, 0) | LFS3_IFDEF_REVNOISE(LFS3_M_REVNOISE, 0) | LFS3_IFDEF_CKPROGS(LFS3_M_CKPROGS, 0) | LFS3_IFDEF_CKFETCHES(LFS3_M_CKFETCHES, 0) @@ -16172,14 +16071,6 @@ static int lfs3_formatgbmap(lfs3_t *lfs3) { return err; } - #if defined(LFS3_REVDBG) || defined(LFS3_REVNOISE) - // append a revision count? - err = lfs3_rbyd_appendrev(lfs3, &lfs3->gbmap.b.r, lfs3_rev_btree(lfs3)); - if (err) { - return err; - } - #endif - err = lfs3_rbyd_commit(lfs3, &lfs3->gbmap.b.r, 0, LFS3_RATTRS( // blocks 0..3 - in-use LFS3_RATTR(2, LFS3_TAG_BMINUSE, -2), @@ -16228,7 +16119,7 @@ static int lfs3_formatinited(lfs3_t *lfs3) { // the initial revision count is arbitrary, but it's nice to have // something here to tell the initial mroot apart from btree nodes - // (rev=0), it's also useful for start with -1 and 0 in the upper + // (rev=0), it's also useful to start with -1 and 0 in the upper // bits to help test overflow/sequence comparison uint32_t rev = (((uint32_t)i-1) << 28) | (((1 << (28-lfs3_smax(lfs3->recycle_bits, 0)))-1) @@ -16324,8 +16215,8 @@ int lfs3_format(lfs3_t *lfs3, uint32_t flags, #ifdef LFS3_YES_GBMAP flags |= LFS3_F_GBMAP; #endif - #ifdef LFS3_YES_REVDBG - flags |= LFS3_F_REVDBG; + #ifdef LFS3_YES_REVPERTURB + flags |= LFS3_F_REVPERTURB; #endif #ifdef LFS3_YES_REVNOISE flags |= LFS3_F_REVNOISE; @@ -16365,7 +16256,7 @@ int lfs3_format(lfs3_t *lfs3, uint32_t flags, LFS3_ASSERT((flags & ~( LFS3_F_RDWR | LFS3_IFDEF_GBMAP(LFS3_F_GBMAP, 0) - | LFS3_IFDEF_REVDBG(LFS3_F_REVDBG, 0) + | LFS3_IFDEF_REVPERTURB(LFS3_F_REVPERTURB, 0) | LFS3_IFDEF_REVNOISE(LFS3_F_REVNOISE, 0) | LFS3_IFDEF_CKPROGS(LFS3_F_CKPROGS, 0) | LFS3_IFDEF_CKFETCHES(LFS3_F_CKFETCHES, 0) @@ -16384,7 +16275,7 @@ int lfs3_format(lfs3_t *lfs3, uint32_t flags, flags & ( LFS3_F_RDWR | LFS3_IFDEF_GBMAP(LFS3_F_GBMAP, 0) - | LFS3_IFDEF_REVDBG(LFS3_F_REVDBG, 0) + | LFS3_IFDEF_REVPERTURB(LFS3_F_REVPERTURB, 0) | LFS3_IFDEF_REVNOISE(LFS3_F_REVNOISE, 0) | LFS3_IFDEF_CKPROGS(LFS3_F_CKPROGS, 0) | LFS3_IFDEF_CKFETCHES(LFS3_F_CKFETCHES, 0) @@ -16456,7 +16347,7 @@ int lfs3_fs_stat(lfs3_t *lfs3, struct lfs3_fsinfo *fsinfo) { LFS3_I_RDONLY | LFS3_I_FLUSH | LFS3_I_SYNC - | LFS3_IFDEF_REVDBG(LFS3_I_REVDBG, 0) + | LFS3_IFDEF_REVPERTURB(LFS3_I_REVPERTURB, 0) | LFS3_IFDEF_REVNOISE(LFS3_I_REVNOISE, 0) | LFS3_IFDEF_CKPROGS(LFS3_I_CKPROGS, 0) | LFS3_IFDEF_CKFETCHES(LFS3_I_CKFETCHES, 0) diff --git a/lfs3.h b/lfs3.h index 143b5873..35f34c94 100644 --- a/lfs3.h +++ b/lfs3.h @@ -182,8 +182,9 @@ enum lfs3_type { #if !defined(LFS3_RDONLY) && defined(LFS3_GBMAP) #define LFS3_F_GBMAP 0x02000000 // Use the global on-disk block-map #endif -#if !defined(LFS3_RDONLY) && defined(LFS3_REVDBG) -#define LFS3_F_REVDBG 0x00000010 // Add debug info to revision counts +#if !defined(LFS3_RDONLY) && defined(LFS3_REVPERTURB) +#define LFS3_F_REVPERTURB \ + 0x00000010 // Perturb first bit in revision count #endif #if !defined(LFS3_RDONLY) && defined(LFS3_REVNOISE) #define LFS3_F_REVNOISE 0x00000020 // Add noise to revision counts @@ -246,8 +247,9 @@ enum lfs3_type { #define LFS3_M_RDONLY 1 // Mount the filesystem as read only #define LFS3_M_FLUSH 0x00000040 // Open all files with LFS3_O_FLUSH #define LFS3_M_SYNC 0x00000080 // Open all files with LFS3_O_SYNC -#if !defined(LFS3_RDONLY) && defined(LFS3_REVDBG) -#define LFS3_M_REVDBG 0x00000010 // Add debug info to revision counts +#if !defined(LFS3_RDONLY) && defined(LFS3_REVPERTURB) +#define LFS3_M_REVPERTURB \ + 0x00000010 // Add debug info to revision counts #endif #if !defined(LFS3_RDONLY) && defined(LFS3_REVNOISE) #define LFS3_M_REVNOISE 0x00000020 // Add noise to revision counts @@ -305,8 +307,9 @@ enum lfs3_type { #endif #define LFS3_I_FLUSH 0x00000040 // Mounted with LFS3_M_FLUSH #define LFS3_I_SYNC 0x00000080 // Mounted with LFS3_M_SYNC -#if !defined(LFS3_RDONLY) && defined(LFS3_REVDBG) -#define LFS3_I_REVDBG 0x00000010 // Mounted with LFS3_M_REVDBG +#if !defined(LFS3_RDONLY) && defined(LFS3_REVPERTURB) +#define LFS3_I_REVPERTURB \ + 0x00000010 // Mounted with LFS3_M_REVPERTURB #endif #if !defined(LFS3_RDONLY) && defined(LFS3_REVNOISE) #define LFS3_I_REVNOISE 0x00000020 // Mounted with LFS3_M_REVNOISE diff --git a/lfs3_util.h b/lfs3_util.h index 9945a06a..8a0ec07e 100644 --- a/lfs3_util.h +++ b/lfs3_util.h @@ -26,8 +26,8 @@ // LFS3_BIGGEST enables all opt-in features #ifdef LFS3_BIGGEST -#ifndef LFS3_REVDBG -#define LFS3_REVDBG +#ifndef LFS3_REVPERTURB +#define LFS3_REVPERTURB #endif #ifndef LFS3_REVNOISE #define LFS3_REVNOISE @@ -59,8 +59,8 @@ #ifdef LFS3_YES_RDONLY #define LFS3_RDONLY #endif -#ifdef LFS3_YES_REVDBG -#define LFS3_REVDBG +#ifdef LFS3_YES_REVPERTURB +#define LFS3_REVPERTURB #endif #ifdef LFS3_YES_REVNOISE #define LFS3_REVNOISE @@ -209,18 +209,18 @@ #define LFS3_IFDEF_RDONLY(a, b) (b) #endif -#ifdef LFS3_REVDBG -#define LFS3_IFDEF_REVDBG(a, b) (a) +#ifdef LFS3_REVPERTURB +#define LFS3_IFDEF_REVPERTURB(a, b) (a) #else -#define LFS3_IFDEF_REVDBG(a, b) (b) +#define LFS3_IFDEF_REVPERTURB(a, b) (b) #endif -#if defined(LFS3_REVDBG) && defined(LFS3_YES_REVDBG) -#define LFS3_IFYES_REVDBG(a, b, c) (a) -#elif defined(LFS3_REVDBG) -#define LFS3_IFYES_REVDBG(a, b, c) (b) +#if defined(LFS3_REVPERTURB) && defined(LFS3_YES_REVPERTURB) +#define LFS3_IFYES_REVPERTURB(a, b, c) (a) +#elif defined(LFS3_REVPERTURB) +#define LFS3_IFYES_REVPERTURB(a, b, c) (b) #else -#define LFS3_IFYES_REVDBG(a, b, c) (c) +#define LFS3_IFYES_REVPERTURB(a, b, c) (c) #endif #ifdef LFS3_REVNOISE diff --git a/scripts/dbgflags.py b/scripts/dbgflags.py index db0490bd..4c59f975 100755 --- a/scripts/dbgflags.py +++ b/scripts/dbgflags.py @@ -75,7 +75,7 @@ F_MODE = 1 # -m Format's access mode F_RDWR = 0 # -^ Format the filesystem as read and write F_GBMAP = 0x02000000 # y- Use the global on-disk block-map -F_REVDBG = 0x00000010 # y- Add debug info to revision counts +F_REVPERTURB = 0x00000010 # y- Perturb first bit in revision count F_REVNOISE = 0x00000020 # y- Add noise to revision counts F_CKPROGS = 0x00100000 # y- Check progs by reading back progged data F_CKFETCHES = 0x00200000 # y- Check block checksums before first use @@ -97,7 +97,7 @@ M_RDWR = 0 # -^ Mount the filesystem as read and write M_RDONLY = 1 # -^ Mount the filesystem as read only M_FLUSH = 0x00000040 # y- Open all files with LFS3_O_FLUSH M_SYNC = 0x00000080 # y- Open all files with LFS3_O_SYNC -M_REVDBG = 0x00000010 # y- Add debug info to revision counts +M_REVPERTURB = 0x00000010 # y- Perturb first bit in revision count M_REVNOISE = 0x00000020 # y- Add noise to revision counts M_CKPROGS = 0x00100000 # y- Check progs by reading back progged data M_CKFETCHES = 0x00200000 # y- Check block checksums before first use @@ -139,7 +139,7 @@ I_GBMAP = 0x02000000 # -- Global on-disk block-map in use I_FLUSH = 0x00000040 # -- Mounted with LFS3_M_FLUSH I_SYNC = 0x00000080 # -- Mounted with LFS3_M_SYNC -I_REVDBG = 0x00000010 # -- Mounted with LFS3_M_REVDBG +I_REVPERTURB = 0x00000010 # -- Mounted with LFS3_M_REVPERTURB I_REVNOISE = 0x00000020 # -- Mounted with LFS3_M_REVNOISE I_CKPROGS = 0x00100000 # -- Mounted with LFS3_M_CKPROGS I_CKFETCHES = 0x00200000 # -- Mounted with LFS3_M_CKFETCHES diff --git a/tests/test_gc.toml b/tests/test_gc.toml index 0e49a174..aee66dbd 100644 --- a/tests/test_gc.toml +++ b/tests/test_gc.toml @@ -1877,7 +1877,7 @@ code = ''' struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | LFS3_I_MKCONSISTENT | ((!GBMAP || (fsinfo.flags & LFS3_I_LOOKAHEAD)) @@ -1996,7 +1996,7 @@ code = ''' // did these clear the right flags? lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | ((!MKCONSISTENT) ? LFS3_I_MKCONSISTENT : 0) | ((!LOOKAHEAD @@ -2080,7 +2080,7 @@ code = ''' struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | LFS3_I_MKCONSISTENT | ((!GBMAP || (fsinfo.flags & LFS3_I_LOOKAHEAD)) @@ -2199,7 +2199,7 @@ code = ''' // did these clear the right flags? lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | ((!MKCONSISTENT) ? LFS3_I_MKCONSISTENT : 0) | ((!LOOKAHEAD @@ -2218,7 +2218,7 @@ code = ''' // check that flags were reset lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | LFS3_I_MKCONSISTENT | ((!GBMAP || (fsinfo.flags & LFS3_I_LOOKAHEAD)) @@ -2339,7 +2339,7 @@ code = ''' // did these clear the right flags? lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | ((!MKCONSISTENT) ? LFS3_I_MKCONSISTENT : 0) | ((!LOOKAHEAD diff --git a/tests/test_mount.toml b/tests/test_mount.toml index 26cf61aa..095c6c4a 100644 --- a/tests/test_mount.toml +++ b/tests/test_mount.toml @@ -24,7 +24,7 @@ code = ''' defines.RDONLY = [false, true] defines.FLUSH = [false, true] defines.SYNC = [false, true] -defines.REVDBG = [false, true] +defines.REVPERTURB = [false, true] defines.REVNOISE = [false, true] defines.CKPROGS = [false, true] defines.CKFETCHES = [false, true] @@ -36,7 +36,7 @@ defines.COMPACT = [false, true] defines.CKMETA = [false, true] defines.CKDATA = [false, true] if = [ - 'LFS3_IFYES_REVDBG(REVDBG, true, !REVDBG)', + 'LFS3_IFYES_REVPERTURB(REVPERTURB, true, !REVPERTURB)', 'LFS3_IFYES_REVNOISE(REVNOISE, true, !REVNOISE)', 'LFS3_IFDEF_CKPROGS(true, !CKPROGS)', 'LFS3_IFDEF_CKFETCHES(true, !CKFETCHES)', @@ -56,7 +56,9 @@ code = ''' ((RDONLY) ? LFS3_M_RDONLY : LFS3_M_RDWR) | ((FLUSH) ? LFS3_M_FLUSH : 0) | ((SYNC) ? LFS3_M_SYNC : 0) - | ((REVDBG) ? LFS3_IFDEF_REVDBG(LFS3_M_REVDBG, -1) : 0) + | ((REVPERTURB) + ? LFS3_IFDEF_REVPERTURB(LFS3_M_REVPERTURB, -1) + : 0) | ((REVNOISE) ? LFS3_IFDEF_REVNOISE(LFS3_M_REVNOISE, -1) : 0) | ((CKPROGS) ? LFS3_IFDEF_CKPROGS(LFS3_M_CKPROGS, -1) : 0) | ((CKFETCHES) ? LFS3_IFDEF_CKFETCHES(LFS3_M_CKFETCHES, -1) : 0) @@ -80,7 +82,9 @@ code = ''' ((RDONLY) ? LFS3_I_RDONLY : 0) | ((FLUSH) ? LFS3_I_FLUSH : 0) | ((SYNC) ? LFS3_I_SYNC : 0) - | ((REVDBG) ? LFS3_IFDEF_REVDBG(LFS3_I_REVDBG, -1) : 0) + | ((REVPERTURB) + ? LFS3_IFDEF_REVPERTURB(LFS3_I_REVPERTURB, -1) + : 0) | ((REVNOISE) ? LFS3_IFDEF_REVNOISE(LFS3_I_REVNOISE, -1) : 0) | ((CKPROGS) ? LFS3_IFDEF_CKPROGS(LFS3_I_CKPROGS, -1) : 0) | ((CKFETCHES) ? LFS3_IFDEF_CKFETCHES(LFS3_I_CKFETCHES, -1) : 0) @@ -105,7 +109,7 @@ code = ''' # # these end up passed to mount internally [cases.test_mount_format_flags] -defines.REVDBG = [false, true] +defines.REVPERTURB = [false, true] defines.REVNOISE = [false, true] defines.CKPROGS = [false, true] defines.CKFETCHES = [false, true] @@ -117,7 +121,7 @@ defines.COMPACT = [false, true] defines.CKMETA = [false, true] defines.CKDATA = [false, true] if = [ - 'LFS3_IFYES_REVDBG(REVDBG, true, !REVDBG)', + 'LFS3_IFYES_REVPERTURB(REVPERTURB, true, !REVPERTURB)', 'LFS3_IFYES_REVNOISE(REVNOISE, true, !REVNOISE)', 'LFS3_IFDEF_CKPROGS(true, !CKPROGS)', 'LFS3_IFDEF_CKFETCHES(true, !CKFETCHES)', @@ -128,7 +132,9 @@ code = ''' lfs3_t lfs3; lfs3_format(&lfs3, LFS3_F_RDWR - | ((REVDBG) ? LFS3_IFDEF_REVDBG(LFS3_F_REVDBG, -1) : 0) + | ((REVPERTURB) + ? LFS3_IFDEF_REVPERTURB(LFS3_F_REVPERTURB, -1) + : 0) | ((REVNOISE) ? LFS3_IFDEF_REVNOISE(LFS3_F_REVNOISE, -1) : 0) | ((CKPROGS) ? LFS3_IFDEF_CKPROGS(LFS3_F_CKPROGS, -1) : 0) | ((CKFETCHES) ? LFS3_IFDEF_CKFETCHES(LFS3_F_CKFETCHES, -1) : 0) @@ -151,7 +157,7 @@ code = ''' struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | LFS3_I_MKCONSISTENT | ((!GBMAP) ? LFS3_I_LOOKAHEAD : 0) @@ -184,7 +190,7 @@ code = ''' struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | LFS3_I_MKCONSISTENT | ((!GBMAP) ? LFS3_I_LOOKAHEAD : 0) @@ -203,7 +209,7 @@ code = ''' CFG) => 0; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | LFS3_I_MKCONSISTENT | LFS3_I_COMPACT @@ -239,7 +245,7 @@ code = ''' struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | LFS3_I_MKCONSISTENT | LFS3_I_COMPACT @@ -262,7 +268,7 @@ code = ''' lfs3_mount(&lfs3, LFS3_M_RDWR, CFG) => 0; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | LFS3_I_MKCONSISTENT | LFS3_I_LOOKAHEAD @@ -281,7 +287,7 @@ code = ''' CFG) => 0; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | LFS3_I_MKCONSISTENT | LFS3_I_COMPACT @@ -342,7 +348,7 @@ code = ''' struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | LFS3_I_MKCONSISTENT | ((!GBMAP || SIZE >= BLOCK_SIZE/4) @@ -364,7 +370,7 @@ code = ''' CFG) => 0; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | LFS3_I_MKCONSISTENT | ((!LOOKAHEAD && (!GBMAP || SIZE >= BLOCK_SIZE/4)) @@ -457,7 +463,7 @@ code = ''' struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | LFS3_I_MKCONSISTENT | ((!GBMAP || ORPHANS >= 100) @@ -480,7 +486,7 @@ code = ''' CFG) => 0; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | ((!LOOKAHEAD && (!GBMAP || ORPHANS >= 100)) ? LFS3_I_LOOKAHEAD diff --git a/tests/test_mtree.toml b/tests/test_mtree.toml index 74209a53..ca43ba73 100644 --- a/tests/test_mtree.toml +++ b/tests/test_mtree.toml @@ -7,20 +7,20 @@ defines.LOOKAHEAD_SIZE = '(BLOCK_COUNT+8-1) / 8' # test with normal revision counts, debug revision counts, and noisy # revision counts -defines.REVDBG = [false, true] +defines.REVPERTURB = [false, true] defines.REVNOISE = [false, true] defines.F_FLAGS = ''' - ((REVDBG) ? LFS3_IFDEF_REVDBG(LFS3_F_REVDBG, -1) : 0) + ((REVPERTURB) ? LFS3_IFDEF_REVPERTURB(LFS3_F_REVPERTURB, -1) : 0) | ((REVNOISE) ? LFS3_IFDEF_REVNOISE(LFS3_F_REVNOISE, -1) : 0) ''' defines.M_FLAGS = ''' - ((REVDBG) ? LFS3_IFDEF_REVDBG(LFS3_M_REVDBG, -1) : 0) + ((REVPERTURB) ? LFS3_IFDEF_REVPERTURB(LFS3_M_REVPERTURB, -1) : 0) | ((REVNOISE) ? LFS3_IFDEF_REVNOISE(LFS3_M_REVNOISE, -1) : 0) ''' if = [ - 'LFS3_IFDEF_REVDBG(true, !REVDBG)', + 'LFS3_IFDEF_REVPERTURB(true, !REVPERTURB)', 'LFS3_IFDEF_REVNOISE(true, !REVNOISE)', - '!REVDBG || !REVNOISE', + '!REVPERTURB || !REVNOISE', ] diff --git a/tests/test_trvs.toml b/tests/test_trvs.toml index 06ab1e3a..b736abd3 100644 --- a/tests/test_trvs.toml +++ b/tests/test_trvs.toml @@ -1775,7 +1775,7 @@ code = ''' struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | LFS3_I_MKCONSISTENT | ((!GBMAP) ? LFS3_I_LOOKAHEAD : 0) @@ -1812,7 +1812,7 @@ code = ''' // check flags after lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | ((!MKCONSISTENT) ? LFS3_I_MKCONSISTENT : 0) | ((!LOOKAHEAD && !GBMAP) ? LFS3_I_LOOKAHEAD : 0) @@ -1913,7 +1913,7 @@ done:; struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | ((!GBMAP) ? LFS3_I_LOOKAHEAD : 0) | LFS3_I_COMPACT @@ -1988,7 +1988,7 @@ code = ''' struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | ((!GBMAP) ? LFS3_I_LOOKAHEAD : 0) | LFS3_I_COMPACT @@ -2021,7 +2021,7 @@ code = ''' // we should _not_ update lookahead/compact/ckmeta/ckdata lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | ((!GBMAP) ? LFS3_I_LOOKAHEAD : 0) | LFS3_I_COMPACT @@ -2112,7 +2112,7 @@ done:; struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | ((!GBMAP) ? LFS3_I_LOOKAHEAD : 0) | LFS3_I_COMPACT @@ -2207,7 +2207,7 @@ done:; struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | ((!GBMAP) ? LFS3_I_LOOKAHEAD : 0) | LFS3_I_COMPACT @@ -2310,7 +2310,7 @@ done:; struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | ((!GBMAP) ? LFS3_I_LOOKAHEAD : 0) | LFS3_I_COMPACT @@ -2394,7 +2394,7 @@ code = ''' struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | ((!GBMAP || SIZE >= BLOCK_SIZE/4) ? LFS3_I_LOOKAHEAD @@ -2491,7 +2491,7 @@ code = ''' struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) // ok we might've updated lookahead if write stayed in // cache @@ -2616,7 +2616,7 @@ done:; struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | ((!GBMAP) ? LFS3_I_LOOKAHEAD : 0) | LFS3_I_COMPACT @@ -2748,7 +2748,7 @@ done:; struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | LFS3_I_LOOKAHEAD | LFS3_I_COMPACT @@ -2870,7 +2870,7 @@ done:; struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | LFS3_I_LOOKAHEAD | LFS3_I_COMPACT @@ -2977,7 +2977,7 @@ done:; struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | ((!GBMAP) ? LFS3_I_LOOKAHEAD : 0) | LFS3_I_COMPACT @@ -3111,7 +3111,7 @@ done:; struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | LFS3_I_LOOKAHEAD | LFS3_I_COMPACT @@ -3235,7 +3235,7 @@ done:; struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | LFS3_I_LOOKAHEAD | LFS3_I_COMPACT @@ -3354,7 +3354,7 @@ done:; struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | ((DESYNC) ? LFS3_I_MKCONSISTENT : 0) | ((!(LOOKAHEAD && DESYNC) && !GBMAP) ? LFS3_I_LOOKAHEAD : 0) @@ -3499,7 +3499,7 @@ done:; struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | ((DESYNC) ? LFS3_I_MKCONSISTENT : 0) | ((!(LOOKAHEAD && DESYNC)) ? LFS3_I_LOOKAHEAD : 0) @@ -3634,7 +3634,7 @@ done:; struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | ((DESYNC) ? LFS3_I_MKCONSISTENT : 0) | ((!(LOOKAHEAD && DESYNC)) ? LFS3_I_LOOKAHEAD : 0) @@ -3755,7 +3755,7 @@ done:; struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | ((DESYNC) ? LFS3_I_MKCONSISTENT : 0) | ((!(LOOKAHEAD && DESYNC)) ? LFS3_I_LOOKAHEAD : 0) @@ -3879,7 +3879,7 @@ done:; struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | LFS3_I_LOOKAHEAD | LFS3_I_COMPACT @@ -4004,7 +4004,7 @@ done:; struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | LFS3_I_LOOKAHEAD | LFS3_I_COMPACT @@ -4132,7 +4132,7 @@ done:; struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | LFS3_I_LOOKAHEAD | LFS3_I_COMPACT @@ -4273,7 +4273,7 @@ done:; struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | LFS3_I_LOOKAHEAD | LFS3_I_COMPACT @@ -4414,7 +4414,7 @@ done:; struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | LFS3_I_LOOKAHEAD | LFS3_I_COMPACT @@ -4535,7 +4535,7 @@ done:; struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | LFS3_I_LOOKAHEAD | LFS3_I_COMPACT @@ -4657,7 +4657,7 @@ done:; struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | LFS3_I_LOOKAHEAD | LFS3_I_COMPACT @@ -4792,7 +4792,7 @@ done:; struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | LFS3_I_LOOKAHEAD | LFS3_I_COMPACT @@ -4928,7 +4928,7 @@ done:; struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | LFS3_I_LOOKAHEAD | LFS3_I_COMPACT @@ -5118,7 +5118,7 @@ done:; struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | LFS3_I_LOOKAHEAD | LFS3_I_COMPACT @@ -5324,7 +5324,7 @@ done:; struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | LFS3_I_LOOKAHEAD | LFS3_I_COMPACT @@ -5525,7 +5525,7 @@ done:; struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | LFS3_I_LOOKAHEAD | LFS3_I_COMPACT @@ -5723,7 +5723,7 @@ done:; struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | LFS3_I_LOOKAHEAD | LFS3_I_COMPACT @@ -5927,7 +5927,7 @@ done:; struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | LFS3_I_LOOKAHEAD | LFS3_I_COMPACT @@ -6136,7 +6136,7 @@ done:; struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | LFS3_I_LOOKAHEAD | LFS3_I_COMPACT @@ -6350,7 +6350,7 @@ done:; struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | LFS3_I_LOOKAHEAD | LFS3_I_COMPACT @@ -6423,7 +6423,7 @@ code = ''' struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | ((!GBMAP) ? LFS3_I_LOOKAHEAD : 0) | LFS3_I_COMPACT @@ -6461,7 +6461,7 @@ code = ''' // but because we mutated, we're still marked as uncompacted lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | ((!GBMAP) ? LFS3_I_LOOKAHEAD : 0) | LFS3_I_COMPACT @@ -6486,7 +6486,7 @@ code = ''' // uncompacted flag should have been cleared lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | ((!LOOKAHEAD && !GBMAP) ? LFS3_I_LOOKAHEAD : 0) // note ckdata implies ckmeta @@ -6572,7 +6572,7 @@ code = ''' struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | LFS3_I_LOOKAHEAD | LFS3_I_COMPACT @@ -6618,7 +6618,7 @@ code = ''' // but because we mutated, we're still marked as uncompacted lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | LFS3_I_LOOKAHEAD | LFS3_I_COMPACT @@ -6645,7 +6645,7 @@ code = ''' // uncompacted flag should have been cleared lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | ((!LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0) // note ckdata implies ckmeta @@ -6713,7 +6713,7 @@ code = ''' struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | ((!GBMAP) ? LFS3_I_LOOKAHEAD : 0) | LFS3_I_COMPACT @@ -6753,7 +6753,7 @@ code = ''' // but because we mutated, we're still marked as uncompacted lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | LFS3_I_LOOKAHEAD | LFS3_I_COMPACT @@ -6778,7 +6778,7 @@ code = ''' // uncompacted flag should have been cleared lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | ((!LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0) // note ckdata implies ckmeta @@ -6873,7 +6873,7 @@ code = ''' struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | ((!GBMAP) ? LFS3_I_LOOKAHEAD : 0) | LFS3_I_COMPACT @@ -6925,7 +6925,7 @@ code = ''' // but because we mutated, we're still marked as uncompacted lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | LFS3_I_LOOKAHEAD | LFS3_I_COMPACT @@ -6951,7 +6951,7 @@ code = ''' // uncompacted flag should have been cleared lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | ((!LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0) // note ckdata implies ckmeta @@ -7100,7 +7100,7 @@ code = ''' struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | LFS3_I_LOOKAHEAD | LFS3_I_COMPACT @@ -7159,7 +7159,7 @@ code = ''' // but because we mutated, we're still marked as uncompacted lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | LFS3_I_LOOKAHEAD | LFS3_I_COMPACT @@ -7187,7 +7187,7 @@ code = ''' // uncompacted flag should have been cleared lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | ((!LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0) // note ckdata implies ckmeta @@ -7341,7 +7341,7 @@ code = ''' struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | LFS3_I_LOOKAHEAD | LFS3_I_COMPACT @@ -7405,7 +7405,7 @@ code = ''' // but because we mutated, we're still marked as uncompacted lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | LFS3_I_LOOKAHEAD | LFS3_I_COMPACT @@ -7433,7 +7433,7 @@ code = ''' // uncompacted flag should have been cleared lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | ((!LOOKAHEAD) ? LFS3_I_LOOKAHEAD : 0) // note ckdata implies ckmeta @@ -7552,7 +7552,7 @@ code = ''' struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | ((ORPHANS > 0) ? LFS3_I_MKCONSISTENT : 0) | ((!GBMAP || ORPHANS >= 100) ? LFS3_I_LOOKAHEAD : 0) @@ -7620,7 +7620,7 @@ code = ''' // and we should be marked as consistent lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | (((!LOOKAHEAD || ORPHANS > 0) && (!GBMAP || ORPHANS >= 100)) @@ -7702,7 +7702,7 @@ code = ''' struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | ((!GBMAP) ? LFS3_I_LOOKAHEAD : 0) | LFS3_I_COMPACT @@ -7790,7 +7790,7 @@ code = ''' // if we introduced actual orphans, we _must_ be marked as inconsistent lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | ((ORPHANS >= 3) ? LFS3_I_MKCONSISTENT : 0) | (((!LOOKAHEAD || ORPHANS > 0) @@ -7898,7 +7898,7 @@ code = ''' struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | ((ORPHANS > 0) ? LFS3_I_MKCONSISTENT : 0) | LFS3_I_LOOKAHEAD @@ -7979,7 +7979,7 @@ code = ''' // and we should be marked as consistent lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | ((!LOOKAHEAD || ORPHANS > 0) ? LFS3_I_LOOKAHEAD : 0) | LFS3_I_COMPACT @@ -8083,7 +8083,7 @@ code = ''' struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | ((ORPHANS > 0) ? LFS3_I_MKCONSISTENT : 0) | LFS3_I_LOOKAHEAD @@ -8164,7 +8164,7 @@ code = ''' // and we should be marked as consistent lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | ((!LOOKAHEAD || ORPHANS > 0) ? LFS3_I_LOOKAHEAD : 0) | LFS3_I_COMPACT @@ -8269,7 +8269,7 @@ code = ''' struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | ((ORPHANS > 0) ? LFS3_I_MKCONSISTENT : 0) | LFS3_I_LOOKAHEAD @@ -8358,7 +8358,7 @@ code = ''' // and we should be marked as consistent lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | ((!LOOKAHEAD || ORPHANS > 0) ? LFS3_I_LOOKAHEAD : 0) | LFS3_I_COMPACT @@ -8463,7 +8463,7 @@ code = ''' struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | ((ORPHANS > 0) ? LFS3_I_MKCONSISTENT : 0) | LFS3_I_LOOKAHEAD @@ -8552,7 +8552,7 @@ code = ''' // and we should be marked as consistent lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | ((!LOOKAHEAD || ORPHANS > 0) ? LFS3_I_LOOKAHEAD : 0) | LFS3_I_COMPACT @@ -8675,7 +8675,7 @@ code = ''' struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | ((ORPHANS > 0) ? LFS3_I_MKCONSISTENT : 0) | ((!GBMAP || ORPHANS >= 100) @@ -8750,7 +8750,7 @@ code = ''' // still marked as uncompacted lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | ((!GBMAP || ORPHANS >= 100) ? LFS3_I_LOOKAHEAD @@ -8778,7 +8778,7 @@ code = ''' // uncompacted flag should have been cleared lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | ((!LOOKAHEAD && (!GBMAP || ORPHANS >= 100)) ? LFS3_I_LOOKAHEAD @@ -8881,7 +8881,7 @@ code = ''' struct lfs3_fsinfo fsinfo; lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | ((!GBMAP) ? LFS3_I_LOOKAHEAD : 0) | LFS3_I_COMPACT @@ -8974,7 +8974,7 @@ code = ''' // if we introduced actual orphans, we _must_ be marked as inconsistent lfs3_fs_stat(&lfs3, &fsinfo) => 0; assert(fsinfo.flags == ( - LFS3_IFYES_REVDBG(LFS3_I_REVDBG, 0, 0) + LFS3_IFYES_REVPERTURB(LFS3_I_REVPERTURB, 0, 0) | LFS3_IFYES_REVNOISE(LFS3_I_REVNOISE, 0, 0) | ((ORPHANS >= 3) ? LFS3_I_MKCONSISTENT : 0) | ((!GBMAP || ORPHANS >= 100)