Renamed a couple mbit related things

- mdir_bits -> mbits
- lfsr_mid_bid -> lfsr_mbid
- lfsr_mid_rid -> lfsr_mrid

These now match the naming in the dbg scripts.

I feel like this is more terse in a way that is also more readable, but
maybe that's just me.
This commit is contained in:
Christopher Haster
2025-04-17 00:37:41 -05:00
parent 04d3002f3a
commit 89356fc697
5 changed files with 229 additions and 230 deletions
+77 -78
View File
@@ -6677,16 +6677,16 @@ static int lfsr_bshrub_commit(lfs_t *lfs, lfsr_bshrub_t *bshrub,
/// metadata-id things /// /// metadata-id things ///
#define LFSR_MID(_lfs, _bid, _rid) \ #define LFSR_MID(_lfs, _bid, _rid) \
(((_bid) & ~((1 << (_lfs)->mdir_bits)-1)) + (_rid)) (((_bid) & ~((1 << (_lfs)->mbits)-1)) + (_rid))
static inline lfsr_sbid_t lfsr_mid_bid(const lfs_t *lfs, lfsr_smid_t mid) { static inline lfsr_sbid_t lfsr_mbid(const lfs_t *lfs, lfsr_smid_t mid) {
return mid | ((1 << lfs->mdir_bits) - 1); return mid | ((1 << lfs->mbits) - 1);
} }
static inline lfsr_srid_t lfsr_mid_rid(const lfs_t *lfs, lfsr_smid_t mid) { static inline lfsr_srid_t lfsr_mrid(const lfs_t *lfs, lfsr_smid_t mid) {
// bit of a strange mapping, but we want to preserve mid=-1 => rid=-1 // bit of a strange mapping, but we want to preserve mid=-1 => rid=-1
return (mid >> (8*sizeof(lfsr_smid_t)-1)) return (mid >> (8*sizeof(lfsr_smid_t)-1))
| (mid & ((1 << lfs->mdir_bits) - 1)); | (mid & ((1 << lfs->mbits) - 1));
} }
@@ -7296,7 +7296,7 @@ static int lfsr_mdir_fetch(lfs_t *lfs, lfsr_mdir_t *mdir,
LFS_DEBUG("Fetched mdir %"PRId32" " LFS_DEBUG("Fetched mdir %"PRId32" "
"0x{%"PRIx32",%"PRIx32"}.%"PRIx32" w%"PRId32", " "0x{%"PRIx32",%"PRIx32"}.%"PRIx32" w%"PRId32", "
"cksum %"PRIx32, "cksum %"PRIx32,
mdir->mid >> lfs->mdir_bits, mdir->mid >> lfs->mbits,
mdir->rbyd.blocks[0], mdir->rbyd.blocks[1], mdir->rbyd.blocks[0], mdir->rbyd.blocks[1],
lfsr_rbyd_trunk(&mdir->rbyd), lfsr_rbyd_trunk(&mdir->rbyd),
mdir->rbyd.weight, mdir->rbyd.weight,
@@ -7332,7 +7332,7 @@ static int lfsr_mdir_lookupnext(lfs_t *lfs, const lfsr_mdir_t *mdir,
lfsr_srid_t rid__; lfsr_srid_t rid__;
lfsr_tag_t tag__; lfsr_tag_t tag__;
int err = lfsr_rbyd_lookupnext(lfs, &mdir->rbyd, int err = lfsr_rbyd_lookupnext(lfs, &mdir->rbyd,
lfsr_mid_rid(lfs, mdir->mid), tag, lfsr_mrid(lfs, mdir->mid), tag,
&rid__, &tag__, NULL, data_); &rid__, &tag__, NULL, data_);
if (err) { if (err) {
return err; return err;
@@ -7340,7 +7340,7 @@ static int lfsr_mdir_lookupnext(lfs_t *lfs, const lfsr_mdir_t *mdir,
// this is very similar to lfsr_rbyd_lookupnext, but we error if // this is very similar to lfsr_rbyd_lookupnext, but we error if
// lookupnext would change mids // lookupnext would change mids
if (rid__ != lfsr_mid_rid(lfs, mdir->mid)) { if (rid__ != lfsr_mrid(lfs, mdir->mid)) {
return LFS_ERR_NOENT; return LFS_ERR_NOENT;
} }
@@ -7428,7 +7428,7 @@ static int lfsr_mdir_suplookup(lfs_t *lfs, const lfsr_mdir_t *mdir,
static inline lfsr_mid_t lfsr_mtree_weight(lfs_t *lfs) { static inline lfsr_mid_t lfsr_mtree_weight(lfs_t *lfs) {
return lfs_max( return lfs_max(
lfs->mtree.weight, lfs->mtree.weight,
1 << lfs->mdir_bits); 1 << lfs->mbits);
} }
static int lfsr_mtree_lookup(lfs_t *lfs, lfsr_smid_t mid, static int lfsr_mtree_lookup(lfs_t *lfs, lfsr_smid_t mid,
@@ -7458,7 +7458,7 @@ static int lfsr_mtree_lookup(lfs_t *lfs, lfsr_smid_t mid,
LFS_ASSERT(err != LFS_ERR_NOENT); LFS_ASSERT(err != LFS_ERR_NOENT);
return err; return err;
} }
LFS_ASSERT((lfsr_sbid_t)bid == lfsr_mid_bid(lfs, mid)); LFS_ASSERT((lfsr_sbid_t)bid == lfsr_mbid(lfs, mid));
LFS_ASSERT(tag == LFSR_TAG_MDIR); LFS_ASSERT(tag == LFSR_TAG_MDIR);
// fetch mdir // fetch mdir
@@ -7588,7 +7588,7 @@ static int lfsr_mdir_commit__(lfs_t *lfs, lfsr_mdir_t *mdir,
lfsr_smid_t mid, const lfsr_rattr_t *rattrs, lfs_size_t rattr_count) { lfsr_smid_t mid, const lfsr_rattr_t *rattrs, lfs_size_t rattr_count) {
// since we only ever commit to one mid or split, we can ignore the // since we only ever commit to one mid or split, we can ignore the
// entire rattr-list if our mid is out of range // entire rattr-list if our mid is out of range
lfsr_srid_t rid = lfsr_mid_rid(lfs, mid); lfsr_srid_t rid = lfsr_mrid(lfs, mid);
if (rid >= start_rid if (rid >= start_rid
// note the use of rid+1 and unsigned comparison here to // note the use of rid+1 and unsigned comparison here to
// treat end_rid=-1 as "unbounded" in such a way that rid=-1 // treat end_rid=-1 as "unbounded" in such a way that rid=-1
@@ -7919,7 +7919,7 @@ static lfs_ssize_t lfsr_mdir_estimate__(lfs_t *lfs, const lfsr_mdir_t *mdir,
if (lfsr_o_isbshrub(o->flags) if (lfsr_o_isbshrub(o->flags)
// belongs to our mdir + rid? // belongs to our mdir + rid?
&& lfsr_mdir_cmp(&o->mdir, mdir) == 0 && lfsr_mdir_cmp(&o->mdir, mdir) == 0
&& lfsr_mid_rid(lfs, o->mdir.mid) == a_rid && lfsr_mrid(lfs, o->mdir.mid) == a_rid
// is a bshrub? // is a bshrub?
&& lfsr_bshrub_isbshrub((lfsr_bshrub_t*)o)) { && lfsr_bshrub_isbshrub((lfsr_bshrub_t*)o)) {
lfs_ssize_t dsize__ = lfsr_shrub_estimate(lfs, lfs_ssize_t dsize__ = lfsr_shrub_estimate(lfs,
@@ -8038,8 +8038,8 @@ static int lfsr_mdir_compact__(lfs_t *lfs, lfsr_mdir_t *mdir_,
if (lfsr_o_isbshrub(o->flags) if (lfsr_o_isbshrub(o->flags)
// belongs to our mdir? // belongs to our mdir?
&& lfsr_mdir_cmp(&o->mdir, mdir) == 0 && lfsr_mdir_cmp(&o->mdir, mdir) == 0
&& lfsr_mid_rid(lfs, o->mdir.mid) >= start_rid && lfsr_mrid(lfs, o->mdir.mid) >= start_rid
&& (lfsr_rid_t)lfsr_mid_rid(lfs, o->mdir.mid) && (lfsr_rid_t)lfsr_mrid(lfs, o->mdir.mid)
< (lfsr_rid_t)end_rid < (lfsr_rid_t)end_rid
// is a bshrub? // is a bshrub?
&& lfsr_bshrub_isbshrub((lfsr_bshrub_t*)o) && lfsr_bshrub_isbshrub((lfsr_bshrub_t*)o)
@@ -8124,7 +8124,7 @@ relocate:;
// without relocating // without relocating
if (err == LFS_ERR_NOSPC) { if (err == LFS_ERR_NOSPC) {
LFS_WARN("Overcompacting mdir %"PRId32" 0x{%"PRIx32",%"PRIx32"}", LFS_WARN("Overcompacting mdir %"PRId32" 0x{%"PRIx32",%"PRIx32"}",
mdir->mid >> lfs->mdir_bits, mdir->mid >> lfs->mbits,
mdir->rbyd.blocks[0], mdir->rbyd.blocks[1]); mdir->rbyd.blocks[0], mdir->rbyd.blocks[1]);
overcompacted = true; overcompacted = true;
@@ -8145,7 +8145,7 @@ compact:;
#ifdef LFS_DEBUGMDIRCOMMITS #ifdef LFS_DEBUGMDIRCOMMITS
LFS_DEBUG("Compacting mdir %"PRId32" 0x{%"PRIx32",%"PRIx32"} " LFS_DEBUG("Compacting mdir %"PRId32" 0x{%"PRIx32",%"PRIx32"} "
"-> 0x{%"PRIx32",%"PRIx32"}", "-> 0x{%"PRIx32",%"PRIx32"}",
mdir->mid >> lfs->mdir_bits, mdir->mid >> lfs->mbits,
mdir->rbyd.blocks[0], mdir->rbyd.blocks[1], mdir->rbyd.blocks[0], mdir->rbyd.blocks[1],
mdir_.rbyd.blocks[0], mdir_.rbyd.blocks[1]); mdir_.rbyd.blocks[0], mdir_.rbyd.blocks[1]);
#endif #endif
@@ -8246,7 +8246,7 @@ static int lfsr_mdir_commit(lfs_t *lfs, lfsr_mdir_t *mdir,
|| lfsr_mdir_cmp(mdir, &lfs->mroot) == 0 || lfsr_mdir_cmp(mdir, &lfs->mroot) == 0
|| mdir->rbyd.weight > 0); || mdir->rbyd.weight > 0);
// rid in-bounds? // rid in-bounds?
LFS_ASSERT(lfsr_mid_rid(lfs, mdir->mid) LFS_ASSERT(lfsr_mrid(lfs, mdir->mid)
<= (lfsr_srid_t)mdir->rbyd.weight); <= (lfsr_srid_t)mdir->rbyd.weight);
// lfs->mroot must have mid=-1 // lfs->mroot must have mid=-1
LFS_ASSERT(lfs->mroot.mid == -1); LFS_ASSERT(lfs->mroot.mid == -1);
@@ -8262,8 +8262,7 @@ static int lfsr_mdir_commit(lfs_t *lfs, lfsr_mdir_t *mdir,
// adjust pending grms? // adjust pending grms?
} else { } else {
for (int j = 0; j < 2; j++) { for (int j = 0; j < 2; j++) {
if (lfsr_mid_bid(lfs, lfs->grm.mids[j]) if (lfsr_mbid(lfs, lfs->grm.mids[j]) == lfsr_mbid(lfs, mid_)
== lfsr_mid_bid(lfs, mid_)
&& lfs->grm.mids[j] >= mid_) { && lfs->grm.mids[j] >= mid_) {
// deleting a pending grm doesn't really make sense // deleting a pending grm doesn't really make sense
LFS_ASSERT(lfs->grm.mids[j] >= mid_ - rattrs[i].weight); LFS_ASSERT(lfs->grm.mids[j] >= mid_ - rattrs[i].weight);
@@ -8351,7 +8350,7 @@ static int lfsr_mdir_commit(lfs_t *lfs, lfsr_mdir_t *mdir,
// order the split compacts so that that mdir containing our mid // order the split compacts so that that mdir containing our mid
// is committed last, this is a bit of a hack but necessary so // is committed last, this is a bit of a hack but necessary so
// shrubs are staged correctly // shrubs are staged correctly
bool l = lfsr_mid_rid(lfs, mdir->mid) < split_rid; bool l = lfsr_mrid(lfs, mdir->mid) < split_rid;
bool relocated = false;; bool relocated = false;;
split_relocate:; split_relocate:;
@@ -8395,11 +8394,11 @@ static int lfsr_mdir_commit(lfs_t *lfs, lfsr_mdir_t *mdir,
} }
// adjust our sibling's mid after committing rattrs // adjust our sibling's mid after committing rattrs
mdir_[1].mid += (1 << lfs->mdir_bits); mdir_[1].mid += (1 << lfs->mbits);
LFS_INFO("Splitting mdir %"PRId32" 0x{%"PRIx32",%"PRIx32"} " LFS_INFO("Splitting mdir %"PRId32" 0x{%"PRIx32",%"PRIx32"} "
"-> 0x{%"PRIx32",%"PRIx32"}, 0x{%"PRIx32",%"PRIx32"}", "-> 0x{%"PRIx32",%"PRIx32"}, 0x{%"PRIx32",%"PRIx32"}",
mdir->mid >> lfs->mdir_bits, mdir->mid >> lfs->mbits,
mdir->rbyd.blocks[0], mdir->rbyd.blocks[1], mdir->rbyd.blocks[0], mdir->rbyd.blocks[1],
mdir_[0].rbyd.blocks[0], mdir_[0].rbyd.blocks[1], mdir_[0].rbyd.blocks[0], mdir_[0].rbyd.blocks[1],
mdir_[1].rbyd.blocks[0], mdir_[1].rbyd.blocks[1]); mdir_[1].rbyd.blocks[0], mdir_[1].rbyd.blocks[1]);
@@ -8410,17 +8409,17 @@ static int lfsr_mdir_commit(lfs_t *lfs, lfsr_mdir_t *mdir,
// both siblings reduced to zero // both siblings reduced to zero
if (mdir_[0].rbyd.weight == 0 && mdir_[1].rbyd.weight == 0) { if (mdir_[0].rbyd.weight == 0 && mdir_[1].rbyd.weight == 0) {
LFS_INFO("Dropping mdir %"PRId32" 0x{%"PRIx32",%"PRIx32"}", LFS_INFO("Dropping mdir %"PRId32" 0x{%"PRIx32",%"PRIx32"}",
mdir_[0].mid >> lfs->mdir_bits, mdir_[0].mid >> lfs->mbits,
mdir_[0].rbyd.blocks[0], mdir_[0].rbyd.blocks[1]); mdir_[0].rbyd.blocks[0], mdir_[0].rbyd.blocks[1]);
LFS_INFO("Dropping mdir %"PRId32" 0x{%"PRIx32",%"PRIx32"}", LFS_INFO("Dropping mdir %"PRId32" 0x{%"PRIx32",%"PRIx32"}",
mdir_[1].mid >> lfs->mdir_bits, mdir_[1].mid >> lfs->mbits,
mdir_[1].rbyd.blocks[0], mdir_[1].rbyd.blocks[1]); mdir_[1].rbyd.blocks[0], mdir_[1].rbyd.blocks[1]);
goto dropped; goto dropped;
// one sibling reduced to zero // one sibling reduced to zero
} else if (mdir_[0].rbyd.weight == 0) { } else if (mdir_[0].rbyd.weight == 0) {
LFS_INFO("Dropping mdir %"PRId32" 0x{%"PRIx32",%"PRIx32"}", LFS_INFO("Dropping mdir %"PRId32" 0x{%"PRIx32",%"PRIx32"}",
mdir_[0].mid >> lfs->mdir_bits, mdir_[0].mid >> lfs->mbits,
mdir_[0].rbyd.blocks[0], mdir_[0].rbyd.blocks[1]); mdir_[0].rbyd.blocks[0], mdir_[0].rbyd.blocks[1]);
lfsr_mdir_sync(&mdir_[0], &mdir_[1]); lfsr_mdir_sync(&mdir_[0], &mdir_[1]);
goto relocated; goto relocated;
@@ -8428,13 +8427,13 @@ static int lfsr_mdir_commit(lfs_t *lfs, lfsr_mdir_t *mdir,
// other sibling reduced to zero // other sibling reduced to zero
} else if (mdir_[1].rbyd.weight == 0) { } else if (mdir_[1].rbyd.weight == 0) {
LFS_INFO("Dropping mdir %"PRId32" 0x{%"PRIx32",%"PRIx32"}", LFS_INFO("Dropping mdir %"PRId32" 0x{%"PRIx32",%"PRIx32"}",
mdir_[1].mid >> lfs->mdir_bits, mdir_[1].mid >> lfs->mbits,
mdir_[1].rbyd.blocks[0], mdir_[1].rbyd.blocks[1]); mdir_[1].rbyd.blocks[0], mdir_[1].rbyd.blocks[1]);
goto relocated; goto relocated;
} }
// no siblings reduced to zero, update our mtree // no siblings reduced to zero, update our mtree
mdelta = +(1 << lfs->mdir_bits); mdelta = +(1 << lfs->mbits);
// lookup first name in sibling to use as the split name // lookup first name in sibling to use as the split name
// //
@@ -8455,10 +8454,10 @@ static int lfsr_mdir_commit(lfs_t *lfs, lfsr_mdir_t *mdir,
err = lfsr_btree_commit(lfs, &mtree_, err = lfsr_btree_commit(lfs, &mtree_,
0, LFSR_RATTRS( 0, LFSR_RATTRS(
LFSR_RATTR_MPTR( LFSR_RATTR_MPTR(
LFSR_TAG_MDIR, +(1 << lfs->mdir_bits), LFSR_TAG_MDIR, +(1 << lfs->mbits),
mdir_[0].rbyd.blocks), mdir_[0].rbyd.blocks),
LFSR_RATTR_DATA( LFSR_RATTR_DATA(
LFSR_TAG_NAME, +(1 << lfs->mdir_bits), LFSR_TAG_NAME, +(1 << lfs->mbits),
&split_name), &split_name),
LFSR_RATTR_MPTR( LFSR_RATTR_MPTR(
LFSR_TAG_MDIR, 0, LFSR_TAG_MDIR, 0,
@@ -8473,12 +8472,12 @@ static int lfsr_mdir_commit(lfs_t *lfs, lfsr_mdir_t *mdir,
lfs->mtree.eoff = -1; lfs->mtree.eoff = -1;
err = lfsr_btree_commit(lfs, &mtree_, err = lfsr_btree_commit(lfs, &mtree_,
lfsr_mid_bid(lfs, mdir->mid), LFSR_RATTRS( lfsr_mbid(lfs, mdir->mid), LFSR_RATTRS(
LFSR_RATTR_MPTR( LFSR_RATTR_MPTR(
LFSR_TAG_MDIR, 0, LFSR_TAG_MDIR, 0,
mdir_[0].rbyd.blocks), mdir_[0].rbyd.blocks),
LFSR_RATTR_DATA( LFSR_RATTR_DATA(
LFSR_TAG_NAME, +(1 << lfs->mdir_bits), LFSR_TAG_NAME, +(1 << lfs->mbits),
&split_name), &split_name),
LFSR_RATTR_MPTR( LFSR_RATTR_MPTR(
LFSR_TAG_MDIR, 0, LFSR_TAG_MDIR, 0,
@@ -8491,7 +8490,7 @@ static int lfsr_mdir_commit(lfs_t *lfs, lfsr_mdir_t *mdir,
// need to drop? // need to drop?
} else if (err == LFS_ERR_NOENT) { } else if (err == LFS_ERR_NOENT) {
LFS_INFO("Dropping mdir %"PRId32" 0x{%"PRIx32",%"PRIx32"}", LFS_INFO("Dropping mdir %"PRId32" 0x{%"PRIx32",%"PRIx32"}",
mdir->mid >> lfs->mdir_bits, mdir->mid >> lfs->mbits,
mdir->rbyd.blocks[0], mdir->rbyd.blocks[1]); mdir->rbyd.blocks[0], mdir->rbyd.blocks[1]);
// set weight to zero // set weight to zero
mdir_[0].rbyd.weight = 0; mdir_[0].rbyd.weight = 0;
@@ -8503,7 +8502,7 @@ static int lfsr_mdir_commit(lfs_t *lfs, lfsr_mdir_t *mdir,
} }
dropped:; dropped:;
mdelta = -(1 << lfs->mdir_bits); mdelta = -(1 << lfs->mbits);
// how can we drop if we have no mtree? // how can we drop if we have no mtree?
LFS_ASSERT(lfs->mtree.weight != 0); LFS_ASSERT(lfs->mtree.weight != 0);
@@ -8513,9 +8512,9 @@ static int lfsr_mdir_commit(lfs_t *lfs, lfsr_mdir_t *mdir,
// update our mtree // update our mtree
err = lfsr_btree_commit(lfs, &mtree_, err = lfsr_btree_commit(lfs, &mtree_,
lfsr_mid_bid(lfs, mdir->mid), LFSR_RATTRS( lfsr_mbid(lfs, mdir->mid), LFSR_RATTRS(
LFSR_RATTR( LFSR_RATTR(
LFSR_TAG_RM, -(1 << lfs->mdir_bits)))); LFSR_TAG_RM, -(1 << lfs->mbits))));
if (err) { if (err) {
goto failed; goto failed;
} }
@@ -8525,7 +8524,7 @@ static int lfsr_mdir_commit(lfs_t *lfs, lfsr_mdir_t *mdir,
&& lfsr_mdir_cmp(mdir, &lfs->mroot) != 0) { && lfsr_mdir_cmp(mdir, &lfs->mroot) != 0) {
LFS_INFO("Relocating mdir %"PRId32" 0x{%"PRIx32",%"PRIx32"} " LFS_INFO("Relocating mdir %"PRId32" 0x{%"PRIx32",%"PRIx32"} "
"-> 0x{%"PRIx32",%"PRIx32"}", "-> 0x{%"PRIx32",%"PRIx32"}",
mdir->mid >> lfs->mdir_bits, mdir->mid >> lfs->mbits,
mdir->rbyd.blocks[0], mdir->rbyd.blocks[1], mdir->rbyd.blocks[0], mdir->rbyd.blocks[1],
mdir_[0].rbyd.blocks[0], mdir_[0].rbyd.blocks[1]); mdir_[0].rbyd.blocks[0], mdir_[0].rbyd.blocks[1]);
@@ -8537,7 +8536,7 @@ static int lfsr_mdir_commit(lfs_t *lfs, lfsr_mdir_t *mdir,
err = lfsr_btree_commit(lfs, &mtree_, err = lfsr_btree_commit(lfs, &mtree_,
0, LFSR_RATTRS( 0, LFSR_RATTRS(
LFSR_RATTR_MPTR( LFSR_RATTR_MPTR(
LFSR_TAG_MDIR, +(1 << lfs->mdir_bits), LFSR_TAG_MDIR, +(1 << lfs->mbits),
mdir_[0].rbyd.blocks))); mdir_[0].rbyd.blocks)));
if (err) { if (err) {
goto failed; goto failed;
@@ -8549,7 +8548,7 @@ static int lfsr_mdir_commit(lfs_t *lfs, lfsr_mdir_t *mdir,
lfs->mtree.eoff = -1; lfs->mtree.eoff = -1;
err = lfsr_btree_commit(lfs, &mtree_, err = lfsr_btree_commit(lfs, &mtree_,
lfsr_mid_bid(lfs, mdir->mid), LFSR_RATTRS( lfsr_mbid(lfs, mdir->mid), LFSR_RATTRS(
LFSR_RATTR_MPTR( LFSR_RATTR_MPTR(
LFSR_TAG_MDIR, 0, LFSR_TAG_MDIR, 0,
mdir_[0].rbyd.blocks))); mdir_[0].rbyd.blocks)));
@@ -8561,13 +8560,13 @@ static int lfsr_mdir_commit(lfs_t *lfs, lfsr_mdir_t *mdir,
// patch any pending grms // patch any pending grms
for (int j = 0; j < 2; j++) { for (int j = 0; j < 2; j++) {
if (lfsr_mid_bid(lfs, lfs->grm.mids[j]) if (lfsr_mbid(lfs, lfs->grm.mids[j])
== lfsr_mid_bid(lfs, lfs_smax(mdir->mid, 0))) { == lfsr_mbid(lfs, lfs_smax(mdir->mid, 0))) {
if (mdelta > 0 if (mdelta > 0
&& lfsr_mid_rid(lfs, lfs->grm.mids[j]) && lfsr_mrid(lfs, lfs->grm.mids[j])
>= (lfsr_srid_t)mdir_[0].rbyd.weight) { >= (lfsr_srid_t)mdir_[0].rbyd.weight) {
lfs->grm.mids[j] lfs->grm.mids[j]
+= (1 << lfs->mdir_bits) - mdir_[0].rbyd.weight; += (1 << lfs->mbits) - mdir_[0].rbyd.weight;
} }
} else if (lfs->grm.mids[j] > mdir->mid) { } else if (lfs->grm.mids[j] > mdir->mid) {
lfs->grm.mids[j] += mdelta; lfs->grm.mids[j] += mdelta;
@@ -8778,9 +8777,9 @@ static int lfsr_mdir_commit(lfs_t *lfs, lfsr_mdir_t *mdir,
// update any splits/drops // update any splits/drops
if (lfsr_mdir_cmp(&o->mdir, mdir) == 0) { if (lfsr_mdir_cmp(&o->mdir, mdir) == 0) {
if (mdelta > 0 if (mdelta > 0
&& lfsr_mid_rid(lfs, o->mdir.mid) && lfsr_mrid(lfs, o->mdir.mid)
>= (lfsr_srid_t)mdir_[0].rbyd.weight) { >= (lfsr_srid_t)mdir_[0].rbyd.weight) {
o->mdir.mid += (1 << lfs->mdir_bits) - mdir_[0].rbyd.weight; o->mdir.mid += (1 << lfs->mbits) - mdir_[0].rbyd.weight;
lfsr_mdir_sync(&o->mdir, &mdir_[1]); lfsr_mdir_sync(&o->mdir, &mdir_[1]);
} else { } else {
lfsr_mdir_sync(&o->mdir, &mdir_[0]); lfsr_mdir_sync(&o->mdir, &mdir_[0]);
@@ -8795,9 +8794,9 @@ static int lfsr_mdir_commit(lfs_t *lfs, lfsr_mdir_t *mdir,
&& mdir->mid == -1) { && mdir->mid == -1) {
lfsr_mdir_sync(mdir, &mroot_); lfsr_mdir_sync(mdir, &mroot_);
} else if (mdelta > 0 } else if (mdelta > 0
&& lfsr_mid_rid(lfs, mdir->mid) && lfsr_mrid(lfs, mdir->mid)
>= (lfsr_srid_t)mdir_[0].rbyd.weight) { >= (lfsr_srid_t)mdir_[0].rbyd.weight) {
mdir->mid += (1 << lfs->mdir_bits) - mdir_[0].rbyd.weight; mdir->mid += (1 << lfs->mbits) - mdir_[0].rbyd.weight;
lfsr_mdir_sync(mdir, &mdir_[1]); lfsr_mdir_sync(mdir, &mdir_[1]);
} else { } else {
lfsr_mdir_sync(mdir, &mdir_[0]); lfsr_mdir_sync(mdir, &mdir_[0]);
@@ -8828,7 +8827,7 @@ static int lfsr_mdir_commit(lfs_t *lfs, lfsr_mdir_t *mdir,
LFS_DEBUG("Committed mdir %"PRId32" " LFS_DEBUG("Committed mdir %"PRId32" "
"0x{%"PRIx32",%"PRIx32"}.%"PRIx32" w%"PRId32", " "0x{%"PRIx32",%"PRIx32"}.%"PRIx32" w%"PRId32", "
"cksum %"PRIx32, "cksum %"PRIx32,
mdir->mid >> lfs->mdir_bits, mdir->mid >> lfs->mbits,
mdir->rbyd.blocks[0], mdir->rbyd.blocks[1], mdir->rbyd.blocks[0], mdir->rbyd.blocks[1],
lfsr_rbyd_trunk(&mdir->rbyd), lfsr_rbyd_trunk(&mdir->rbyd),
mdir->rbyd.weight, mdir->rbyd.weight,
@@ -8933,7 +8932,7 @@ static int lfsr_mtree_namelookup(lfs_t *lfs,
return cmp; return cmp;
} }
LFS_ASSERT(tag == LFSR_TAG_MDIR); LFS_ASSERT(tag == LFSR_TAG_MDIR);
LFS_ASSERT(weight == (1U << lfs->mdir_bits)); LFS_ASSERT(weight == (1U << lfs->mbits));
// fetch mdir // fetch mdir
int err = lfsr_data_fetchmdir(lfs, &data, bid-(weight-1), int err = lfsr_data_fetchmdir(lfs, &data, bid-(weight-1),
@@ -9303,9 +9302,9 @@ static int lfsr_mtree_traverse_(lfs_t *lfs, lfsr_traversal_t *t,
// not traversing all blocks? have we exceeded our mdir's weight? // not traversing all blocks? have we exceeded our mdir's weight?
// return to mtree iteration // return to mtree iteration
if (lfsr_t_ismtreeonly(t->b.o.flags) if (lfsr_t_ismtreeonly(t->b.o.flags)
|| lfsr_mid_rid(lfs, t->b.o.mdir.mid) || lfsr_mrid(lfs, t->b.o.mdir.mid)
>= (lfsr_srid_t)t->b.o.mdir.rbyd.weight) { >= (lfsr_srid_t)t->b.o.mdir.rbyd.weight) {
t->b.o.mdir.mid = lfsr_mid_bid(lfs, t->b.o.mdir.mid) + 1; t->b.o.mdir.mid = lfsr_mbid(lfs, t->b.o.mdir.mid) + 1;
t->b.o.flags = lfsr_t_settstate(t->b.o.flags, t->b.o.flags = lfsr_t_settstate(t->b.o.flags,
LFSR_TSTATE_MDIRS); LFSR_TSTATE_MDIRS);
continue; continue;
@@ -9507,7 +9506,7 @@ static int lfsr_mtree_traverse(lfs_t *lfs, lfsr_traversal_t *t,
LFS_ERROR("Found mdir cksum mismatch %"PRId32" " LFS_ERROR("Found mdir cksum mismatch %"PRId32" "
"0x{%"PRIx32",%"PRIx32"}, " "0x{%"PRIx32",%"PRIx32"}, "
"cksum %08"PRIx32" (!= %08"PRIx32")", "cksum %08"PRIx32" (!= %08"PRIx32")",
mdir->mid >> lfs->mdir_bits, mdir->mid >> lfs->mbits,
mdir->rbyd.blocks[0], mdir->rbyd.blocks[0],
mdir->rbyd.blocks[1], mdir->rbyd.blocks[1],
mdir->rbyd.cksum, mdir->rbyd.cksum,
@@ -9650,7 +9649,7 @@ dropped:;
lfsr_mdir_t *mdir = (lfsr_mdir_t*)bptr.data.u.buffer; lfsr_mdir_t *mdir = (lfsr_mdir_t*)bptr.data.u.buffer;
LFS_INFO("Compacting mdir %"PRId32" 0x{%"PRIx32",%"PRIx32"} " LFS_INFO("Compacting mdir %"PRId32" 0x{%"PRIx32",%"PRIx32"} "
"(%"PRId32" > %"PRId32")", "(%"PRId32" > %"PRId32")",
mdir->mid >> lfs->mdir_bits, mdir->mid >> lfs->mbits,
mdir->rbyd.blocks[0], mdir->rbyd.blocks[0],
mdir->rbyd.blocks[1], mdir->rbyd.blocks[1],
lfsr_rbyd_eoff(&mdir->rbyd), lfsr_rbyd_eoff(&mdir->rbyd),
@@ -10001,7 +10000,7 @@ int lfsr_mkdir(lfs_t *lfs, const char *path) {
// //
lfsr_did_t dmask lfsr_did_t dmask
= (1 << lfs_min( = (1 << lfs_min(
lfs_nlog2(lfsr_mtree_weight(lfs) >> lfs->mdir_bits) lfs_nlog2(lfsr_mtree_weight(lfs) >> lfs->mbits)
+ lfs_nlog2(lfs->cfg->block_size/32), + lfs_nlog2(lfs->cfg->block_size/32),
31) 31)
) - 1; ) - 1;
@@ -10106,10 +10105,10 @@ static int lfsr_grm_pushdid(lfs_t *lfs, lfsr_did_t did) {
// check that the directory is empty // check that the directory is empty
bookmark_mdir.mid += 1; bookmark_mdir.mid += 1;
if (lfsr_mid_rid(lfs, bookmark_mdir.mid) if (lfsr_mrid(lfs, bookmark_mdir.mid)
>= (lfsr_srid_t)bookmark_mdir.rbyd.weight) { >= (lfsr_srid_t)bookmark_mdir.rbyd.weight) {
err = lfsr_mtree_lookup(lfs, err = lfsr_mtree_lookup(lfs,
lfsr_mid_bid(lfs, bookmark_mdir.mid-1) + 1, lfsr_mbid(lfs, bookmark_mdir.mid-1) + 1,
&bookmark_mdir); &bookmark_mdir);
if (err) { if (err) {
if (err == LFS_ERR_NOENT) { if (err == LFS_ERR_NOENT) {
@@ -10610,10 +10609,10 @@ int lfsr_dir_read(lfs_t *lfs, lfsr_dir_t *dir, struct lfs_info *info) {
while (true) { while (true) {
// next mdir? // next mdir?
if (lfsr_mid_rid(lfs, dir->o.mdir.mid) if (lfsr_mrid(lfs, dir->o.mdir.mid)
>= (lfsr_srid_t)dir->o.mdir.rbyd.weight) { >= (lfsr_srid_t)dir->o.mdir.rbyd.weight) {
int err = lfsr_mtree_lookup(lfs, int err = lfsr_mtree_lookup(lfs,
lfsr_mid_bid(lfs, dir->o.mdir.mid-1) + 1, lfsr_mbid(lfs, dir->o.mdir.mid-1) + 1,
&dir->o.mdir); &dir->o.mdir);
if (err) { if (err) {
return err; return err;
@@ -10682,10 +10681,10 @@ int lfsr_dir_seek(lfs_t *lfs, lfsr_dir_t *dir, lfs_soff_t off) {
lfs_off_t off_ = off - 2; lfs_off_t off_ = off - 2;
while (off_ > 0) { while (off_ > 0) {
// next mdir? // next mdir?
if (lfsr_mid_rid(lfs, dir->o.mdir.mid) if (lfsr_mrid(lfs, dir->o.mdir.mid)
>= (lfsr_srid_t)dir->o.mdir.rbyd.weight) { >= (lfsr_srid_t)dir->o.mdir.rbyd.weight) {
int err = lfsr_mtree_lookup(lfs, int err = lfsr_mtree_lookup(lfs,
lfsr_mid_bid(lfs, dir->o.mdir.mid-1) + 1, lfsr_mbid(lfs, dir->o.mdir.mid-1) + 1,
&dir->o.mdir); &dir->o.mdir);
if (err) { if (err) {
if (err == LFS_ERR_NOENT) { if (err == LFS_ERR_NOENT) {
@@ -10698,7 +10697,7 @@ int lfsr_dir_seek(lfs_t *lfs, lfsr_dir_t *dir, lfs_soff_t off) {
lfs_off_t d = lfs_min( lfs_off_t d = lfs_min(
off_, off_,
dir->o.mdir.rbyd.weight dir->o.mdir.rbyd.weight
- lfsr_mid_rid(lfs, dir->o.mdir.mid)); - lfsr_mrid(lfs, dir->o.mdir.mid));
dir->o.mdir.mid += d; dir->o.mdir.mid += d;
off_ -= d; off_ -= d;
} }
@@ -13193,7 +13192,7 @@ static int lfs_init(lfs_t *lfs, uint32_t flags,
// metadata entries per block. But we intentionally don't leverage this // metadata entries per block. But we intentionally don't leverage this
// to maintain compatibility with a theoretical perfect implementation. // to maintain compatibility with a theoretical perfect implementation.
// //
lfs->mdir_bits = lfs_nlog2(lfs->cfg->block_size) - 3; lfs->mbits = lfs_nlog2(lfs->cfg->block_size) - 3;
// zero linked-list of opened mdirs // zero linked-list of opened mdirs
lfs->omdirs = NULL; lfs->omdirs = NULL;
@@ -13734,14 +13733,14 @@ static int lfsr_mountinited(lfs_t *lfs) {
// found pending grms? this should only happen if we lost power // found pending grms? this should only happen if we lost power
if (lfsr_grm_count(lfs) == 2) { if (lfsr_grm_count(lfs) == 2) {
LFS_INFO("Found pending grm %"PRId32".%"PRId32" %"PRId32".%"PRId32, LFS_INFO("Found pending grm %"PRId32".%"PRId32" %"PRId32".%"PRId32,
lfsr_mid_bid(lfs, lfs->grm.mids[0]) >> lfs->mdir_bits, lfsr_mbid(lfs, lfs->grm.mids[0]) >> lfs->mbits,
lfsr_mid_rid(lfs, lfs->grm.mids[0]), lfsr_mrid(lfs, lfs->grm.mids[0]),
lfsr_mid_bid(lfs, lfs->grm.mids[1]) >> lfs->mdir_bits, lfsr_mbid(lfs, lfs->grm.mids[1]) >> lfs->mbits,
lfsr_mid_rid(lfs, lfs->grm.mids[1])); lfsr_mrid(lfs, lfs->grm.mids[1]));
} else if (lfsr_grm_count(lfs) == 1) { } else if (lfsr_grm_count(lfs) == 1) {
LFS_INFO("Found pending grm %"PRId32".%"PRId32, LFS_INFO("Found pending grm %"PRId32".%"PRId32,
lfsr_mid_bid(lfs, lfs->grm.mids[0]) >> lfs->mdir_bits, lfsr_mbid(lfs, lfs->grm.mids[0]) >> lfs->mbits,
lfsr_mid_rid(lfs, lfs->grm.mids[0])); lfsr_mrid(lfs, lfs->grm.mids[0]));
} }
return 0; return 0;
@@ -13827,8 +13826,8 @@ int lfsr_mount(lfs_t *lfs, uint32_t flags,
lfs->mroot.rbyd.blocks[0], lfs->mroot.rbyd.blocks[0],
lfs->mroot.rbyd.blocks[1], lfs->mroot.rbyd.blocks[1],
lfsr_rbyd_trunk(&lfs->mroot.rbyd), lfsr_rbyd_trunk(&lfs->mroot.rbyd),
lfs->mtree.weight >> lfs->mdir_bits, lfs->mtree.weight >> lfs->mbits,
1 << lfs->mdir_bits, 1 << lfs->mbits,
lfs->gcksum); lfs->gcksum);
return 0; return 0;
@@ -14075,14 +14074,14 @@ lfs_ssize_t lfsr_fs_size(lfs_t *lfs) {
static int lfsr_fs_fixgrm(lfs_t *lfs) { static int lfsr_fs_fixgrm(lfs_t *lfs) {
if (lfsr_grm_count(lfs) == 2) { if (lfsr_grm_count(lfs) == 2) {
LFS_INFO("Fixing grm %"PRId32".%"PRId32" %"PRId32".%"PRId32, LFS_INFO("Fixing grm %"PRId32".%"PRId32" %"PRId32".%"PRId32,
lfsr_mid_bid(lfs, lfs->grm.mids[0]) >> lfs->mdir_bits, lfsr_mbid(lfs, lfs->grm.mids[0]) >> lfs->mbits,
lfsr_mid_rid(lfs, lfs->grm.mids[0]), lfsr_mrid(lfs, lfs->grm.mids[0]),
lfsr_mid_bid(lfs, lfs->grm.mids[1]) >> lfs->mdir_bits, lfsr_mbid(lfs, lfs->grm.mids[1]) >> lfs->mbits,
lfsr_mid_rid(lfs, lfs->grm.mids[1])); lfsr_mrid(lfs, lfs->grm.mids[1]));
} else if (lfsr_grm_count(lfs) == 1) { } else if (lfsr_grm_count(lfs) == 1) {
LFS_INFO("Fixing grm %"PRId32".%"PRId32, LFS_INFO("Fixing grm %"PRId32".%"PRId32,
lfsr_mid_bid(lfs, lfs->grm.mids[0]) >> lfs->mdir_bits, lfsr_mbid(lfs, lfs->grm.mids[0]) >> lfs->mbits,
lfsr_mid_rid(lfs, lfs->grm.mids[0])); lfsr_mrid(lfs, lfs->grm.mids[0]));
} }
while (lfsr_grm_count(lfs) > 0) { while (lfsr_grm_count(lfs) > 0) {
@@ -14126,7 +14125,7 @@ static int lfsr_mdir_mkconsistent(lfs_t *lfs, lfsr_mdir_t *mdir) {
// iterate through mids looking for orphans // iterate through mids looking for orphans
mdir->mid = LFSR_MID(lfs, mdir->mid, 0); mdir->mid = LFSR_MID(lfs, mdir->mid, 0);
int err; int err;
while (lfsr_mid_rid(lfs, mdir->mid) < (lfsr_srid_t)mdir->rbyd.weight) { while (lfsr_mrid(lfs, mdir->mid) < (lfsr_srid_t)mdir->rbyd.weight) {
// is this mid open? well we're not an orphan then, skip // is this mid open? well we're not an orphan then, skip
if (lfsr_omdir_ismidopen(lfs, mdir->mid, -1)) { if (lfsr_omdir_ismidopen(lfs, mdir->mid, -1)) {
mdir->mid += 1; mdir->mid += 1;
@@ -14146,8 +14145,8 @@ static int lfsr_mdir_mkconsistent(lfs_t *lfs, lfsr_mdir_t *mdir) {
// we found an orphaned stickynote, remove // we found an orphaned stickynote, remove
LFS_INFO("Fixing orphaned stickynote %"PRId32".%"PRId32, LFS_INFO("Fixing orphaned stickynote %"PRId32".%"PRId32,
lfsr_mid_bid(lfs, mdir->mid) >> lfs->mdir_bits, lfsr_mbid(lfs, mdir->mid) >> lfs->mbits,
lfsr_mid_rid(lfs, mdir->mid)); lfsr_mrid(lfs, mdir->mid));
lfs_alloc_ckpoint(lfs); lfs_alloc_ckpoint(lfs);
err = lfsr_mdir_commit(lfs, mdir, LFSR_RATTRS( err = lfsr_mdir_commit(lfs, mdir, LFSR_RATTRS(
+1 -1
View File
@@ -815,7 +815,7 @@ typedef struct lfs {
int8_t recycle_bits; int8_t recycle_bits;
uint8_t rattr_estimate; uint8_t rattr_estimate;
uint8_t mdir_bits; uint8_t mbits;
// linked-list of opened mdirs // linked-list of opened mdirs
lfsr_omdir_t *omdirs; lfsr_omdir_t *omdirs;
+4 -4
View File
@@ -5323,7 +5323,7 @@ code = '''
// double check the actual disk state, it's easy for littlefs to // double check the actual disk state, it's easy for littlefs to
// lie here // lie here
assert(lfsr_mtree_weight(&lfs) assert(lfsr_mtree_weight(&lfs)
<= ((1+lfs_popc(BOOKENDS)) << lfs.mdir_bits)); <= ((1+lfs_popc(BOOKENDS)) << lfs.mbits));
lfsr_mdir_t mdir; lfsr_mdir_t mdir;
lfsr_mtree_lookup(&lfs, 0, &mdir) => 0; lfsr_mtree_lookup(&lfs, 0, &mdir) => 0;
assert(mdir.rbyd.weight <= 1+lfs_popc(BOOKENDS)); assert(mdir.rbyd.weight <= 1+lfs_popc(BOOKENDS));
@@ -5459,7 +5459,7 @@ code = '''
// double check the actual disk state, it's easy for littlefs to // double check the actual disk state, it's easy for littlefs to
// lie here // lie here
assert(lfsr_mtree_weight(&lfs) assert(lfsr_mtree_weight(&lfs)
<= ((1+lfs_popc(BOOKENDS)) << lfs.mdir_bits)); <= ((1+lfs_popc(BOOKENDS)) << lfs.mbits));
lfsr_mdir_t mdir; lfsr_mdir_t mdir;
lfsr_mtree_lookup(&lfs, 0, &mdir) => 0; lfsr_mtree_lookup(&lfs, 0, &mdir) => 0;
assert(mdir.rbyd.weight <= 1+lfs_popc(BOOKENDS)); assert(mdir.rbyd.weight <= 1+lfs_popc(BOOKENDS));
@@ -5609,7 +5609,7 @@ code = '''
// double check the actual disk state, it's easy for littlefs to // double check the actual disk state, it's easy for littlefs to
// lie here // lie here
assert(lfsr_mtree_weight(&lfs) assert(lfsr_mtree_weight(&lfs)
<= ((1+lfs_popc(BOOKENDS)) << lfs.mdir_bits)); <= ((1+lfs_popc(BOOKENDS)) << lfs.mbits));
lfsr_mdir_t mdir; lfsr_mdir_t mdir;
lfsr_mtree_lookup(&lfs, 0, &mdir) => 0; lfsr_mtree_lookup(&lfs, 0, &mdir) => 0;
assert(mdir.rbyd.weight <= 1+lfs_popc(BOOKENDS)); assert(mdir.rbyd.weight <= 1+lfs_popc(BOOKENDS));
@@ -5765,7 +5765,7 @@ code = '''
// double check the actual disk state, it's easy for littlefs to // double check the actual disk state, it's easy for littlefs to
// lie here // lie here
assert(lfsr_mtree_weight(&lfs) assert(lfsr_mtree_weight(&lfs)
<= ((1+lfs_popc(BOOKENDS)) << lfs.mdir_bits)); <= ((1+lfs_popc(BOOKENDS)) << lfs.mbits));
lfsr_mdir_t mdir; lfsr_mdir_t mdir;
lfsr_mtree_lookup(&lfs, 0, &mdir) => 0; lfsr_mtree_lookup(&lfs, 0, &mdir) => 0;
assert(mdir.rbyd.weight <= 1+lfs_popc(BOOKENDS)); assert(mdir.rbyd.weight <= 1+lfs_popc(BOOKENDS));
+141 -141
View File
File diff suppressed because it is too large Load Diff
+6 -6
View File
@@ -6466,7 +6466,7 @@ code = '''
assert(!(lfs.flags & LFS_I_MKCONSISTENT)); assert(!(lfs.flags & LFS_I_MKCONSISTENT));
// which means there shouldn't be that many files left // which means there shouldn't be that many files left
assert(lfs.mtree.weight <= (2 << lfs.mdir_bits)); assert(lfs.mtree.weight <= (2 << lfs.mbits));
assert(file1.b.o.mdir.rbyd.weight <= 3); assert(file1.b.o.mdir.rbyd.weight <= 3);
assert(file2.b.o.mdir.rbyd.weight <= 3); assert(file2.b.o.mdir.rbyd.weight <= 3);
@@ -6767,7 +6767,7 @@ code = '''
assert(!(lfs.flags & LFS_I_MKCONSISTENT)); assert(!(lfs.flags & LFS_I_MKCONSISTENT));
// which means there shouldn't be that many files left // which means there shouldn't be that many files left
assert(lfs.mtree.weight <= (2 << lfs.mdir_bits)); assert(lfs.mtree.weight <= (2 << lfs.mbits));
assert(file1.b.o.mdir.rbyd.weight <= 3); assert(file1.b.o.mdir.rbyd.weight <= 3);
assert(file2.b.o.mdir.rbyd.weight <= 3); assert(file2.b.o.mdir.rbyd.weight <= 3);
@@ -6925,7 +6925,7 @@ code = '''
assert(!(lfs.flags & LFS_I_MKCONSISTENT)); assert(!(lfs.flags & LFS_I_MKCONSISTENT));
// which means there shouldn't be that many files left // which means there shouldn't be that many files left
assert(lfs.mtree.weight <= (2 << lfs.mdir_bits)); assert(lfs.mtree.weight <= (2 << lfs.mbits));
assert(file1.b.o.mdir.rbyd.weight <= 3); assert(file1.b.o.mdir.rbyd.weight <= 3);
assert(file2.b.o.mdir.rbyd.weight <= 3); assert(file2.b.o.mdir.rbyd.weight <= 3);
@@ -7094,7 +7094,7 @@ code = '''
assert(!(lfs.flags & LFS_I_MKCONSISTENT)); assert(!(lfs.flags & LFS_I_MKCONSISTENT));
// which means there shouldn't be that many files left // which means there shouldn't be that many files left
assert(lfs.mtree.weight <= (2 << lfs.mdir_bits)); assert(lfs.mtree.weight <= (2 << lfs.mbits));
assert(file1.b.o.mdir.rbyd.weight <= 3); assert(file1.b.o.mdir.rbyd.weight <= 3);
assert(file2.b.o.mdir.rbyd.weight <= 3); assert(file2.b.o.mdir.rbyd.weight <= 3);
@@ -7261,7 +7261,7 @@ code = '''
assert(!(lfs.flags & LFS_I_MKCONSISTENT)); assert(!(lfs.flags & LFS_I_MKCONSISTENT));
// which means there shouldn't be that many files left // which means there shouldn't be that many files left
assert(lfs.mtree.weight <= (2 << lfs.mdir_bits)); assert(lfs.mtree.weight <= (2 << lfs.mbits));
assert(file1.b.o.mdir.rbyd.weight <= 3); assert(file1.b.o.mdir.rbyd.weight <= 3);
assert(file2.b.o.mdir.rbyd.weight <= 3); assert(file2.b.o.mdir.rbyd.weight <= 3);
@@ -7426,7 +7426,7 @@ code = '''
assert(!(lfs.flags & LFS_I_MKCONSISTENT)); assert(!(lfs.flags & LFS_I_MKCONSISTENT));
// which means there shouldn't be that many files left // which means there shouldn't be that many files left
assert(lfs.mtree.weight <= (2 << lfs.mdir_bits)); assert(lfs.mtree.weight <= (2 << lfs.mbits));
assert(file1.b.o.mdir.rbyd.weight <= 3); assert(file1.b.o.mdir.rbyd.weight <= 3);
assert(file2.b.o.mdir.rbyd.weight <= 3); assert(file2.b.o.mdir.rbyd.weight <= 3);