Simplified lfsr_mtree_t now that we don't need to represent msprouts
We had to be a bit clever with our lfsr_mtree_t representation to
support msprouts. Now that we don't support msprouts, we can simplify
this and drop the lfsr_mtree_t type completely! which is nice for both
code cost and readability.
Saves a bit more code:
code stack ctx
before: 38344 2624 640
after: 38284 (-0.2%) 2624 (+0.0%) 640 (+0.0%)
Which increases the total savings of dropping msprouts:
code stack ctx
yes msprouts: 38508 2624 640
no msprouts: 38284 (-0.6%) 2624 (+0.0%) 640 (+0.0%)
This commit is contained in:
@@ -4756,6 +4756,7 @@ static lfs_scmp_t lfsr_rbyd_namelookup(lfs_t *lfs, const lfsr_rbyd_t *rbyd,
|
||||
// create an empty btree
|
||||
static void lfsr_btree_init(lfsr_btree_t *btree) {
|
||||
btree->weight = 0;
|
||||
btree->blocks[0] = -1;
|
||||
btree->trunk = 0;
|
||||
}
|
||||
|
||||
@@ -7439,55 +7440,9 @@ static int lfsr_mdir_suplookup(lfs_t *lfs, const lfsr_mdir_t *mdir,
|
||||
|
||||
/// Metadata-tree things ///
|
||||
|
||||
// the mtree is the core tree of mdirs in littlefs
|
||||
|
||||
#define LFSR_MTREE_ISMPTR 0x80000000
|
||||
|
||||
// create an empty mtree
|
||||
static void lfsr_mtree_init(lfsr_mtree_t *mtree) {
|
||||
mtree->u.weight = LFSR_MTREE_ISMPTR | 0;
|
||||
}
|
||||
|
||||
// create an mtree with a single mdir
|
||||
static void lfsr_mtree_frommptr(lfsr_mtree_t *mtree,
|
||||
const lfs_block_t mptr[static 2],
|
||||
lfsr_mid_t weight) {
|
||||
mtree->u.mptr.weight = LFSR_MTREE_ISMPTR | weight;
|
||||
mtree->u.mptr.blocks[0] = mptr[0];
|
||||
mtree->u.mptr.blocks[1] = mptr[1];
|
||||
}
|
||||
|
||||
static inline bool lfsr_mtree_isnull(const lfsr_mtree_t *mtree) {
|
||||
return mtree->u.weight == (LFSR_MTREE_ISMPTR | 0);
|
||||
}
|
||||
|
||||
static inline bool lfsr_mtree_ismptr(const lfsr_mtree_t *mtree) {
|
||||
return mtree->u.weight & LFSR_MTREE_ISMPTR;
|
||||
}
|
||||
|
||||
static inline bool lfsr_mtree_isbtree(const lfsr_mtree_t *mtree) {
|
||||
return !(mtree->u.weight & LFSR_MTREE_ISMPTR);
|
||||
}
|
||||
|
||||
static inline lfsr_mid_t lfsr_mtree_weight_(const lfsr_mtree_t *mtree) {
|
||||
return mtree->u.weight & ~LFSR_MTREE_ISMPTR;
|
||||
}
|
||||
|
||||
static inline int lfsr_mtree_cmp(
|
||||
const lfsr_mtree_t *a,
|
||||
const lfsr_mtree_t *b) {
|
||||
if (a->u.weight != b->u.weight) {
|
||||
return a->u.weight - b->u.weight;
|
||||
} else if (lfsr_mtree_isnull(a)) {
|
||||
return 0;
|
||||
} else {
|
||||
return lfsr_btree_cmp(&a->u.btree, &b->u.btree);
|
||||
}
|
||||
}
|
||||
|
||||
static inline lfsr_mid_t lfsr_mtree_weight(lfs_t *lfs) {
|
||||
return lfs_max(
|
||||
lfsr_mtree_weight_(&lfs->mtree),
|
||||
lfs->mtree.weight,
|
||||
1 << lfs->mdir_bits);
|
||||
}
|
||||
|
||||
@@ -7502,7 +7457,7 @@ static int lfsr_mtree_lookup(lfs_t *lfs, lfsr_smid_t mid,
|
||||
}
|
||||
|
||||
// looking up mroot?
|
||||
if (lfsr_mtree_isnull(&lfs->mtree)) {
|
||||
if (lfs->mtree.weight == 0) {
|
||||
mdir_->mid = mid;
|
||||
lfsr_mdir_sync(mdir_, &lfs->mroot);
|
||||
return 0;
|
||||
@@ -7512,7 +7467,7 @@ static int lfsr_mtree_lookup(lfs_t *lfs, lfsr_smid_t mid,
|
||||
lfsr_bid_t bid;
|
||||
lfsr_tag_t tag;
|
||||
lfsr_data_t data;
|
||||
int err = lfsr_btree_lookupnext(lfs, &lfs->mtree.u.btree, mid,
|
||||
int err = lfsr_btree_lookupnext(lfs, &lfs->mtree, mid,
|
||||
&bid, &tag, NULL, &data);
|
||||
if (err) {
|
||||
LFS_ASSERT(err != LFS_ERR_NOENT);
|
||||
@@ -8512,13 +8467,13 @@ static int lfsr_mdir_commit(lfs_t *lfs, lfsr_mdir_t *mdir,
|
||||
}
|
||||
|
||||
// handle possible mtree updates, this gets a bit messy
|
||||
lfsr_mtree_t mtree_ = lfs->mtree;
|
||||
lfsr_btree_t mtree_ = lfs->mtree;
|
||||
lfsr_smid_t mdelta = 0;
|
||||
// need to split?
|
||||
if (err == LFS_ERR_RANGE) {
|
||||
// this should not happen unless we can't fit our mroot's metadata
|
||||
LFS_ASSERT(lfsr_mdir_cmp(mdir, &lfs->mroot) != 0
|
||||
|| lfsr_mtree_isnull(&lfs->mtree));
|
||||
|| lfs->mtree.weight == 0);
|
||||
|
||||
// if we're not the mroot, we need to consume the gstate so
|
||||
// we don't lose any info during the split
|
||||
@@ -8634,11 +8589,11 @@ static int lfsr_mdir_commit(lfs_t *lfs, lfsr_mdir_t *mdir,
|
||||
}
|
||||
|
||||
// new mtree?
|
||||
if (lfsr_mtree_weight_(&lfs->mtree) == 0) {
|
||||
lfsr_btree_init(&mtree_.u.btree);
|
||||
if (lfs->mtree.weight == 0) {
|
||||
lfsr_btree_init(&mtree_);
|
||||
|
||||
uint8_t mdir_buf[2*LFSR_MPTR_DSIZE];
|
||||
err = lfsr_btree_commit(lfs, &mtree_.u.btree,
|
||||
err = lfsr_btree_commit(lfs, &mtree_,
|
||||
0, LFSR_RATS(
|
||||
LFSR_RAT(
|
||||
LFSR_TAG_MDIR, +(1 << lfs->mdir_bits),
|
||||
@@ -8660,10 +8615,10 @@ static int lfsr_mdir_commit(lfs_t *lfs, lfsr_mdir_t *mdir,
|
||||
// update our mtree
|
||||
} else {
|
||||
// mark as unerased in case of failure
|
||||
lfs->mtree.u.btree.eoff = -1;
|
||||
lfs->mtree.eoff = -1;
|
||||
|
||||
uint8_t mdir_buf[2*LFSR_MPTR_DSIZE];
|
||||
err = lfsr_btree_commit(lfs, &mtree_.u.btree,
|
||||
err = lfsr_btree_commit(lfs, &mtree_,
|
||||
lfsr_mid_bid(lfs, mdir->mid), LFSR_RATS(
|
||||
LFSR_RAT(
|
||||
LFSR_TAG_MDIR, 0,
|
||||
@@ -8701,13 +8656,13 @@ static int lfsr_mdir_commit(lfs_t *lfs, lfsr_mdir_t *mdir,
|
||||
mdelta = -(1 << lfs->mdir_bits);
|
||||
|
||||
// how can we drop if we have no mtree?
|
||||
LFS_ASSERT(lfsr_mtree_weight_(&lfs->mtree) != 0);
|
||||
LFS_ASSERT(lfs->mtree.weight != 0);
|
||||
|
||||
// mark as unerased in case of failure
|
||||
lfs->mtree.u.btree.eoff = -1;
|
||||
lfs->mtree.eoff = -1;
|
||||
|
||||
// update our mtree
|
||||
err = lfsr_btree_commit(lfs, &mtree_.u.btree,
|
||||
err = lfsr_btree_commit(lfs, &mtree_,
|
||||
lfsr_mid_bid(lfs, mdir->mid), LFSR_RATS(
|
||||
LFSR_RAT(
|
||||
LFSR_TAG_RM, -(1 << lfs->mdir_bits),
|
||||
@@ -8727,11 +8682,11 @@ static int lfsr_mdir_commit(lfs_t *lfs, lfsr_mdir_t *mdir,
|
||||
|
||||
relocated:;
|
||||
// new mtree?
|
||||
if (lfsr_mtree_weight_(&lfs->mtree) == 0) {
|
||||
lfsr_btree_init(&mtree_.u.btree);
|
||||
if (lfs->mtree.weight == 0) {
|
||||
lfsr_btree_init(&mtree_);
|
||||
|
||||
uint8_t mdir_buf[LFSR_MPTR_DSIZE];
|
||||
err = lfsr_btree_commit(lfs, &mtree_.u.btree,
|
||||
err = lfsr_btree_commit(lfs, &mtree_,
|
||||
0, LFSR_RATS(
|
||||
LFSR_RAT(
|
||||
LFSR_TAG_MDIR, +(1 << lfs->mdir_bits),
|
||||
@@ -8745,10 +8700,10 @@ static int lfsr_mdir_commit(lfs_t *lfs, lfsr_mdir_t *mdir,
|
||||
// update our mtree
|
||||
} else {
|
||||
// mark as unerased in case of failure
|
||||
lfs->mtree.u.btree.eoff = -1;
|
||||
lfs->mtree.eoff = -1;
|
||||
|
||||
uint8_t mdir_buf[LFSR_MPTR_DSIZE];
|
||||
err = lfsr_btree_commit(lfs, &mtree_.u.btree,
|
||||
err = lfsr_btree_commit(lfs, &mtree_,
|
||||
lfsr_mid_bid(lfs, mdir->mid), LFSR_RATS(
|
||||
LFSR_RAT(
|
||||
LFSR_TAG_MDIR, 0,
|
||||
@@ -8777,9 +8732,9 @@ static int lfsr_mdir_commit(lfs_t *lfs, lfsr_mdir_t *mdir,
|
||||
}
|
||||
|
||||
// need to update mtree?
|
||||
if (lfsr_mtree_cmp(&mtree_, &lfs->mtree) != 0) {
|
||||
if (lfsr_btree_cmp(&mtree_, &lfs->mtree) != 0) {
|
||||
// mtree should never go to zero since we always have a root bookmark
|
||||
LFS_ASSERT(lfsr_mtree_weight_(&mtree_) > 0);
|
||||
LFS_ASSERT(mtree_.weight > 0);
|
||||
|
||||
// make sure mtree/mroot changes are on-disk before committing
|
||||
// metadata
|
||||
@@ -8810,7 +8765,7 @@ static int lfsr_mdir_commit(lfs_t *lfs, lfsr_mdir_t *mdir,
|
||||
-1, LFSR_RATS(
|
||||
LFSR_RAT(
|
||||
LFSR_TAG_SUB | LFSR_TAG_MTREE, 0,
|
||||
LFSR_DATA_BTREE(&mtree_.u.btree, mtree_buf)),
|
||||
LFSR_DATA_BTREE(&mtree_, mtree_buf)),
|
||||
// were we committing to the mroot? include any -1 rats
|
||||
(mdir->mid == -1)
|
||||
? LFSR_RAT_RATS(
|
||||
@@ -8985,7 +8940,7 @@ static int lfsr_mdir_commit(lfs_t *lfs, lfsr_mdir_t *mdir,
|
||||
|
||||
// if mroot/mtree changed, clobber any mroot/mtree traversals
|
||||
if (lfsr_mdir_cmp(&mroot_, &lfs->mroot) != 0
|
||||
|| lfsr_mtree_cmp(&mtree_, &lfs->mtree) != 0) {
|
||||
|| lfsr_btree_cmp(&mtree_, &lfs->mtree) != 0) {
|
||||
for (lfsr_omdir_t *o = lfs->omdirs; o; o = o->next) {
|
||||
if (lfsr_o_type(o->flags) == LFS_TYPE_TRAVERSAL
|
||||
&& o->mdir.mid == -1
|
||||
@@ -9126,7 +9081,7 @@ static int lfsr_mtree_namelookup(lfs_t *lfs,
|
||||
lfsr_mdir_t *mdir_, lfsr_tag_t *tag_, lfsr_data_t *data_) {
|
||||
// do we only have mroot?
|
||||
lfsr_mdir_t mdir;
|
||||
if (lfsr_mtree_isnull(&lfs->mtree)) {
|
||||
if (lfs->mtree.weight == 0) {
|
||||
mdir = lfs->mroot;
|
||||
// treat inlined mdir as mid=0
|
||||
mdir.mid = 0;
|
||||
@@ -9137,7 +9092,7 @@ static int lfsr_mtree_namelookup(lfs_t *lfs,
|
||||
lfsr_tag_t tag;
|
||||
lfsr_bid_t weight;
|
||||
lfsr_data_t data;
|
||||
lfs_scmp_t cmp = lfsr_btree_namelookup(lfs, &lfs->mtree.u.btree,
|
||||
lfs_scmp_t cmp = lfsr_btree_namelookup(lfs, &lfs->mtree,
|
||||
did, name, name_len,
|
||||
&bid, &tag, &weight, &data);
|
||||
if (cmp < 0) {
|
||||
@@ -14054,7 +14009,7 @@ static int lfsr_mountinited(lfs_t *lfs) {
|
||||
|
||||
// default to no mtree, this is allowed and implies all files are inlined
|
||||
// in the mroot
|
||||
lfsr_mtree_init(&lfs->mtree);
|
||||
lfsr_btree_init(&lfs->mtree);
|
||||
|
||||
// zero gcksum/gdeltas, we'll read these from our mdirs
|
||||
lfs->gcksum = 0;
|
||||
@@ -14137,8 +14092,8 @@ static int lfsr_mountinited(lfs_t *lfs) {
|
||||
} else if (tag == LFSR_TAG_BRANCH) {
|
||||
lfsr_rbyd_t *rbyd = (lfsr_rbyd_t*)bptr.data.u.buffer;
|
||||
// found the root of the mtree? keep track of this
|
||||
if (lfsr_mtree_isnull(&lfs->mtree)) {
|
||||
lfs->mtree.u.btree = *rbyd;
|
||||
if (lfs->mtree.weight == 0) {
|
||||
lfs->mtree = *rbyd;
|
||||
}
|
||||
|
||||
} else {
|
||||
@@ -14299,7 +14254,7 @@ int lfsr_mount(lfs_t *lfs, uint32_t flags,
|
||||
lfs->mroot.rbyd.blocks[0],
|
||||
lfs->mroot.rbyd.blocks[1],
|
||||
lfsr_rbyd_trunk(&lfs->mroot.rbyd),
|
||||
lfsr_mtree_weight_(&lfs->mtree) >> lfs->mdir_bits,
|
||||
lfs->mtree.weight >> lfs->mdir_bits,
|
||||
1 << lfs->mdir_bits,
|
||||
lfs->gcksum);
|
||||
|
||||
|
||||
@@ -803,19 +803,6 @@ typedef struct lfsr_traversal {
|
||||
// lfs_block_t pair[2];
|
||||
//} lfs_gstate_t;
|
||||
|
||||
typedef struct lfsr_mtree {
|
||||
union {
|
||||
// the sign bit indicates if this is an inlined mdir/direct mdir
|
||||
// pointer or a full mtree
|
||||
lfsr_mid_t weight;
|
||||
struct {
|
||||
lfsr_mid_t weight;
|
||||
lfs_block_t blocks[2];
|
||||
} mptr;
|
||||
lfsr_btree_t btree;
|
||||
} u;
|
||||
} lfsr_mtree_t;
|
||||
|
||||
// grm encoding:
|
||||
// .---. mode: 1 leb128 1 byte
|
||||
// |mod| mids: 2 leb128s <=2x5 bytes
|
||||
@@ -855,7 +842,7 @@ typedef struct lfs {
|
||||
lfsr_omdir_t *omdirs;
|
||||
|
||||
lfsr_mdir_t mroot;
|
||||
lfsr_mtree_t mtree;
|
||||
lfsr_btree_t mtree;
|
||||
|
||||
struct {
|
||||
lfs_block_t block;
|
||||
|
||||
+61
-61
@@ -187,7 +187,7 @@ code = '''
|
||||
LFSR_RAT(LFSR_TAG_ATTR(3), 0, LFSR_DATA_BUF("c", 1)))) => 0;
|
||||
|
||||
// assert mdirs were unininlined
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (1 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (1 << lfs.mdir_bits));
|
||||
// assert mroot now has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -211,7 +211,7 @@ code = '''
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
|
||||
// assert mdirs were unininlined
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (1 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (1 << lfs.mdir_bits));
|
||||
// assert mroot now has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -268,7 +268,7 @@ code = '''
|
||||
LFSR_RAT(LFSR_TAG_ATTR(1), 0, LFSR_DATA_BUF("c", 1)))) => 0;
|
||||
|
||||
// assert mdirs were unininlined and split
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (2 << lfs.mdir_bits));
|
||||
// assert mroot now has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -294,7 +294,7 @@ code = '''
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
|
||||
// assert mdirs were unininlined and split
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (2 << lfs.mdir_bits));
|
||||
// assert mroot now has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -353,7 +353,7 @@ code = '''
|
||||
LFSR_RAT(LFSR_TAG_ATTR(1), 0, LFSR_DATA_BUF("c", 1)))) => 0;
|
||||
|
||||
// assert mdirs were unininlined and split
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (2 << lfs.mdir_bits));
|
||||
// assert mroot now has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -371,7 +371,7 @@ code = '''
|
||||
LFSR_RAT(LFSR_TAG_ATTR(2), 0, LFSR_DATA_BUF("e", 1)))) => 0;
|
||||
|
||||
// assert mdir was split correctly
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (3 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (3 << lfs.mdir_bits));
|
||||
// assert mroot still has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -407,7 +407,7 @@ code = '''
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
|
||||
// assert mdir was split correctly
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (3 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (3 << lfs.mdir_bits));
|
||||
// assert mroot still has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -664,7 +664,7 @@ code = '''
|
||||
LFSR_RAT(LFSR_TAG_ATTR(1), 0, LFSR_DATA_BUF("c", 1)))) => 0;
|
||||
|
||||
// assert mdirs were unininlined and split
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (2 << lfs.mdir_bits));
|
||||
// assert mroot now has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -677,7 +677,7 @@ code = '''
|
||||
assert(mdir.rbyd.weight == 0);
|
||||
|
||||
// assert mdir was dropped
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (1 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (1 << lfs.mdir_bits));
|
||||
// assert mroot still has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -697,7 +697,7 @@ code = '''
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
|
||||
// assert mdir was dropped
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (1 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (1 << lfs.mdir_bits));
|
||||
// assert mroot still has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -750,7 +750,7 @@ code = '''
|
||||
LFSR_RAT(LFSR_TAG_ATTR(1), 0, LFSR_DATA_BUF("c", 1)))) => 0;
|
||||
|
||||
// assert mdirs were unininlined and split
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (2 << lfs.mdir_bits));
|
||||
// assert mroot now has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -765,7 +765,7 @@ code = '''
|
||||
assert(mdir.rbyd.weight == 0);
|
||||
|
||||
// assert mdir was dropped
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (1 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (1 << lfs.mdir_bits));
|
||||
// assert mroot still has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -785,7 +785,7 @@ code = '''
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
|
||||
// assert mdir was dropped
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (1 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (1 << lfs.mdir_bits));
|
||||
// assert mroot still has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -844,7 +844,7 @@ code = '''
|
||||
assert(mdir.rbyd.weight == 2);
|
||||
|
||||
// assert split/drop worked out
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (1 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (1 << lfs.mdir_bits));
|
||||
// assert mroot still has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -860,7 +860,7 @@ code = '''
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
|
||||
// assert mdir was dropped
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (1 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (1 << lfs.mdir_bits));
|
||||
// assert mroot still has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -909,7 +909,7 @@ code = '''
|
||||
LFSR_RAT(LFSR_TAG_ATTR(1), 0, LFSR_DATA_BUF("c", 1)))) => 0;
|
||||
|
||||
// assert mdirs were unininlined and split
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (2 << lfs.mdir_bits));
|
||||
// assert mroot now has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -932,7 +932,7 @@ code = '''
|
||||
assert(mdir.rbyd.weight == 1);
|
||||
|
||||
// assert split/drop worked out
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (2 << lfs.mdir_bits));
|
||||
// assert mroot still has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -958,7 +958,7 @@ code = '''
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
|
||||
// assert split/drop worked out
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (2 << lfs.mdir_bits));
|
||||
// assert mroot still has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -1017,7 +1017,7 @@ code = '''
|
||||
LFSR_RAT(LFSR_TAG_ATTR(1), 0, LFSR_DATA_BUF("c", 1)))) => 0;
|
||||
|
||||
// assert mdirs were unininlined and split
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (2 << lfs.mdir_bits));
|
||||
// assert mroot now has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -1040,7 +1040,7 @@ code = '''
|
||||
assert(mdir.rbyd.weight == 1);
|
||||
|
||||
// assert split/drop worked out
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (2 << lfs.mdir_bits));
|
||||
// assert mroot still has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -1066,7 +1066,7 @@ code = '''
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
|
||||
// assert split/drop worked out
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (2 << lfs.mdir_bits));
|
||||
// assert mroot still has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -1253,7 +1253,7 @@ code = '''
|
||||
LFSR_RAT(LFSR_TAG_ATTR(3), 0, LFSR_DATA_BUF("c", 1)))) => 0;
|
||||
|
||||
// assert mdirs were unininlined
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (1 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (1 << lfs.mdir_bits));
|
||||
// assert mroot now has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -1270,7 +1270,7 @@ code = '''
|
||||
assert(lfsr_mdir_cmp(&old_mdir, &mdir) != 0);
|
||||
|
||||
// assert mdirs were unininlined
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (1 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (1 << lfs.mdir_bits));
|
||||
// assert mroot now has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -1304,7 +1304,7 @@ code = '''
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
|
||||
// assert mdirs were unininlined
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (1 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (1 << lfs.mdir_bits));
|
||||
// assert mroot now has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -1373,7 +1373,7 @@ code = '''
|
||||
LFSR_RAT(LFSR_TAG_ATTR(1), 0, LFSR_DATA_BUF("c", 1)))) => 0;
|
||||
|
||||
// assert mdirs were unininlined and split
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (2 << lfs.mdir_bits));
|
||||
// assert mroot now has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -1392,7 +1392,7 @@ code = '''
|
||||
assert(lfsr_mdir_cmp(&old_mdir, &mdir) != 0);
|
||||
|
||||
// assert mdirs were unininlined and split
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (2 << lfs.mdir_bits));
|
||||
// assert mroot now has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -1428,7 +1428,7 @@ code = '''
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
|
||||
// assert mdirs were unininlined and split
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (2 << lfs.mdir_bits));
|
||||
// assert mroot now has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -1499,7 +1499,7 @@ code = '''
|
||||
LFSR_RAT(LFSR_TAG_ATTR(1), 0, LFSR_DATA_BUF("c", 1)))) => 0;
|
||||
|
||||
// assert mdirs were unininlined and split
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (2 << lfs.mdir_bits));
|
||||
// assert mroot now has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -1518,7 +1518,7 @@ code = '''
|
||||
assert(lfsr_mdir_cmp(&old_mdir, &mdir) != 0);
|
||||
|
||||
// assert mdirs were unininlined and split
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (2 << lfs.mdir_bits));
|
||||
// assert mroot now has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -1554,7 +1554,7 @@ code = '''
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
|
||||
// assert mdirs were unininlined and split
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (2 << lfs.mdir_bits));
|
||||
// assert mroot now has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -1921,7 +1921,7 @@ code = '''
|
||||
LFSR_RAT(LFSR_TAG_ATTR(1), 0, LFSR_DATA_BUF("c", 1)))) => 0;
|
||||
|
||||
// assert mdirs were unininlined and split
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (2 << lfs.mdir_bits));
|
||||
// assert mroot now has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -1945,7 +1945,7 @@ code = '''
|
||||
assert(lfsr_mdir_cmp(&old_mroot, &lfs.mroot) != 0);
|
||||
|
||||
// assert mdirs were unininlined and split
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (2 << lfs.mdir_bits));
|
||||
// assert mroot now has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -1981,7 +1981,7 @@ code = '''
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
|
||||
// assert mdirs were unininlined and split
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (2 << lfs.mdir_bits));
|
||||
// assert mroot now has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -2052,7 +2052,7 @@ code = '''
|
||||
LFSR_RAT(LFSR_TAG_ATTR(1), 0, LFSR_DATA_BUF("c", 1)))) => 0;
|
||||
|
||||
// assert mdirs were unininlined and split
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (2 << lfs.mdir_bits));
|
||||
// assert mroot now has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -2081,7 +2081,7 @@ code = '''
|
||||
assert(lfsr_mdir_cmp(&old_mroot, &lfs.mroot) != 0);
|
||||
|
||||
// assert mdir was split correctly
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (3 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (3 << lfs.mdir_bits));
|
||||
// assert mroot still has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -2121,7 +2121,7 @@ code = '''
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
|
||||
// assert mdir was split correctly
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (3 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (3 << lfs.mdir_bits));
|
||||
// assert mroot still has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -2196,7 +2196,7 @@ code = '''
|
||||
LFSR_RAT(LFSR_TAG_ATTR(1), 0, LFSR_DATA_BUF("c", 1)))) => 0;
|
||||
|
||||
// assert mdirs were unininlined and split
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (2 << lfs.mdir_bits));
|
||||
// assert mroot now has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -2220,7 +2220,7 @@ code = '''
|
||||
assert(lfsr_mdir_cmp(&old_mroot, &lfs.mroot) != 0);
|
||||
|
||||
// assert mdir was dropped
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (1 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (1 << lfs.mdir_bits));
|
||||
// assert mroot still has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -2240,7 +2240,7 @@ code = '''
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
|
||||
// assert mdir was dropped
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (1 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (1 << lfs.mdir_bits));
|
||||
// assert mroot still has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -2297,7 +2297,7 @@ code = '''
|
||||
assert(lfsr_mdir_cmp(&old_mroot, &lfs.mroot) != 0);
|
||||
|
||||
// assert mdirs were unininlined
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (1 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (1 << lfs.mdir_bits));
|
||||
// assert mroot now has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -2321,7 +2321,7 @@ code = '''
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
|
||||
// assert mdirs were unininlined
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (1 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (1 << lfs.mdir_bits));
|
||||
// assert mroot now has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -2388,7 +2388,7 @@ code = '''
|
||||
assert(lfsr_mdir_cmp(&old_mroot, &lfs.mroot) != 0);
|
||||
|
||||
// assert mdirs were unininlined and split
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (2 << lfs.mdir_bits));
|
||||
// assert mroot now has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -2414,7 +2414,7 @@ code = '''
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
|
||||
// assert mdirs were unininlined and split
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (2 << lfs.mdir_bits));
|
||||
// assert mroot now has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -2809,7 +2809,7 @@ code = '''
|
||||
lfsr_mdir_commit(&lfs, &lfs.mroot, NULL, 0) => 0;
|
||||
|
||||
// assert mdirs were unininlined and split
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (2 << lfs.mdir_bits));
|
||||
// assert mroot now has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -2894,7 +2894,7 @@ code = '''
|
||||
lfsr_mdir_commit(&lfs, &mdir, NULL, 0) => 0;
|
||||
|
||||
// assert mdir was split correctly
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (3 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (3 << lfs.mdir_bits));
|
||||
// assert mroot still has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -3025,7 +3025,7 @@ code = '''
|
||||
lfsr_mdir_commit(&lfs, &lfs.mroot, NULL, 0) => 0;
|
||||
|
||||
// assert mdirs were unininlined and split
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (2 << lfs.mdir_bits));
|
||||
// assert mroot now has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -3114,7 +3114,7 @@ code = '''
|
||||
lfsr_mdir_commit(&lfs, &lfs.mroot, NULL, 0) => 0;
|
||||
|
||||
// assert mdirs were unininlined and split
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (2 << lfs.mdir_bits));
|
||||
// assert mroot now has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -3213,7 +3213,7 @@ code = '''
|
||||
lfsr_mdir_commit(&lfs, &mdir, NULL, 0) => 0;
|
||||
|
||||
// assert mdir was split correctly
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (3 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (3 << lfs.mdir_bits));
|
||||
// assert mroot still has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -3230,7 +3230,7 @@ code = '''
|
||||
lfsr_mdir_commit(&lfs, &mdir, NULL, 0) => 0;
|
||||
|
||||
// assert mdir was split correctly
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (4 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (4 << lfs.mdir_bits));
|
||||
// assert mroot still has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -3315,7 +3315,7 @@ code = '''
|
||||
lfsr_mdir_commit(&lfs, &mdir, NULL, 0) => 0;
|
||||
|
||||
// assert mdir was split correctly
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (3 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (3 << lfs.mdir_bits));
|
||||
// assert mroot still has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -3325,7 +3325,7 @@ code = '''
|
||||
assert(mdir.rbyd.weight == 0);
|
||||
|
||||
// assert mdir was dropped correctly
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (2 << lfs.mdir_bits));
|
||||
// assert mroot still has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -3482,7 +3482,7 @@ code = '''
|
||||
lfsr_mdir_commit(&lfs, &lfs.mroot, NULL, 0) => 0;
|
||||
|
||||
// assert mdirs were unininlined
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (1 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (1 << lfs.mdir_bits));
|
||||
// assert mroot now has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -3548,7 +3548,7 @@ code = '''
|
||||
// and the tree should still work
|
||||
|
||||
// assert mdirs were unininlined
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (1 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (1 << lfs.mdir_bits));
|
||||
// assert mroot now has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -3568,7 +3568,7 @@ code = '''
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
|
||||
// assert mdirs were unininlined
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (1 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (1 << lfs.mdir_bits));
|
||||
// assert mroot now has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -3621,7 +3621,7 @@ code = '''
|
||||
lfsr_mdir_commit(&lfs, &lfs.mroot, NULL, 0) => 0;
|
||||
|
||||
// assert mdirs were unininlined and split
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (2 << lfs.mdir_bits));
|
||||
// assert mroot now has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -3687,7 +3687,7 @@ code = '''
|
||||
// and the tree should still work
|
||||
|
||||
// assert mdirs were unininlined and split
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (2 << lfs.mdir_bits));
|
||||
// assert mroot now has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -3709,7 +3709,7 @@ code = '''
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
|
||||
// assert mdirs were unininlined and split
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (2 << lfs.mdir_bits));
|
||||
// assert mroot now has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -3764,7 +3764,7 @@ code = '''
|
||||
lfsr_mdir_commit(&lfs, &lfs.mroot, NULL, 0) => 0;
|
||||
|
||||
// assert mdirs were unininlined and split
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (2 << lfs.mdir_bits));
|
||||
// assert mroot now has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -3781,7 +3781,7 @@ code = '''
|
||||
lfsr_mdir_commit(&lfs, &mdir, NULL, 0) => 0;
|
||||
|
||||
// assert mdir was split correctly
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (3 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (3 << lfs.mdir_bits));
|
||||
// assert mroot still has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -3847,7 +3847,7 @@ code = '''
|
||||
// and the tree should still work
|
||||
|
||||
// assert mdir was split correctly
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (3 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (3 << lfs.mdir_bits));
|
||||
// assert mroot still has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
@@ -3875,7 +3875,7 @@ code = '''
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
|
||||
// assert mdir was split correctly
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (3 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight == (3 << lfs.mdir_bits));
|
||||
// assert mroot still has no entries
|
||||
assert(lfs.mroot.rbyd.weight == 0);
|
||||
|
||||
|
||||
+42
-42
@@ -3400,7 +3400,7 @@ code = '''
|
||||
|
||||
// create enough files for mroot to split
|
||||
lfs_size_t i = 0;
|
||||
while (lfs.mtree.u.weight == 0x80000000) {
|
||||
while (lfs.mtree.weight == 0) {
|
||||
char name[256];
|
||||
sprintf(name, "uloborus%03x", i);
|
||||
lfsr_file_open(&lfs, &file, name,
|
||||
@@ -3519,7 +3519,7 @@ code = '''
|
||||
|
||||
// create enough files for mroot to split
|
||||
lfs_size_t i = 0;
|
||||
while (lfs.mtree.u.weight == 0x80000000) {
|
||||
while (lfs.mtree.weight == 0) {
|
||||
char name[256];
|
||||
sprintf(name, "uloborus%03x", i);
|
||||
lfsr_file_open(&lfs, &file, name,
|
||||
@@ -3646,7 +3646,7 @@ code = '''
|
||||
|
||||
// create enough files for mroot to split
|
||||
lfs_size_t i = 0;
|
||||
while (lfs.mtree.u.weight == 0x80000000) {
|
||||
while (lfs.mtree.weight == 0) {
|
||||
char name[256];
|
||||
sprintf(name, "uloborus%03x", i);
|
||||
lfsr_file_open(&lfs, &file, name,
|
||||
@@ -4170,7 +4170,7 @@ code = '''
|
||||
|
||||
// create enough files for mroot to split twice
|
||||
lfs_size_t i = 0;
|
||||
while (lfs.mtree.u.weight == 0x80000000) {
|
||||
while (lfs.mtree.weight == 0) {
|
||||
char name[256];
|
||||
sprintf(name, "tarantula%03x", i);
|
||||
lfsr_file_open(&lfs, &file, name,
|
||||
@@ -4180,8 +4180,8 @@ code = '''
|
||||
}
|
||||
|
||||
i = 0;
|
||||
lfs_size_t orig = lfs.mtree.u.weight;
|
||||
while (lfs.mtree.u.weight == orig) {
|
||||
lfs_size_t orig = lfs.mtree.weight;
|
||||
while (lfs.mtree.weight == orig) {
|
||||
char name[256];
|
||||
sprintf(name, "xnotata%03x", i);
|
||||
lfsr_file_open(&lfs, &file, name,
|
||||
@@ -4205,8 +4205,8 @@ code = '''
|
||||
|
||||
// create enough files for mdir to split again
|
||||
i = 0;
|
||||
orig = lfs.mtree.u.weight;
|
||||
while (lfs.mtree.u.weight == orig) {
|
||||
orig = lfs.mtree.weight;
|
||||
while (lfs.mtree.weight == orig) {
|
||||
char name[256];
|
||||
sprintf(name, "vulsor%03x", i);
|
||||
lfsr_file_open(&lfs, &file, name,
|
||||
@@ -4345,7 +4345,7 @@ code = '''
|
||||
|
||||
// create enough files for mroot to split twice
|
||||
lfs_size_t i = 0;
|
||||
while (lfs.mtree.u.weight == 0x80000000) {
|
||||
while (lfs.mtree.weight == 0) {
|
||||
char name[256];
|
||||
sprintf(name, "tarantula%03x", i);
|
||||
lfsr_file_open(&lfs, &file, name,
|
||||
@@ -4355,8 +4355,8 @@ code = '''
|
||||
}
|
||||
|
||||
i = 0;
|
||||
lfs_size_t orig = lfs.mtree.u.weight;
|
||||
while (lfs.mtree.u.weight == orig) {
|
||||
lfs_size_t orig = lfs.mtree.weight;
|
||||
while (lfs.mtree.weight == orig) {
|
||||
char name[256];
|
||||
sprintf(name, "xnotata%03x", i);
|
||||
lfsr_file_open(&lfs, &file, name,
|
||||
@@ -4404,8 +4404,8 @@ code = '''
|
||||
|
||||
// create enough files for mdir to split again
|
||||
i = 0;
|
||||
orig = lfs.mtree.u.weight;
|
||||
while (lfs.mtree.u.weight == orig) {
|
||||
orig = lfs.mtree.weight;
|
||||
while (lfs.mtree.weight == orig) {
|
||||
char name[256];
|
||||
sprintf(name, "vulsor%03x", i);
|
||||
lfsr_file_open(&lfs, &file, name,
|
||||
@@ -4527,7 +4527,7 @@ code = '''
|
||||
|
||||
// create enough files for mroot to split twice
|
||||
lfs_size_t i = 0;
|
||||
while (lfs.mtree.u.weight == 0x80000000) {
|
||||
while (lfs.mtree.weight == 0) {
|
||||
char name[256];
|
||||
sprintf(name, "tarantula%03x", i);
|
||||
lfsr_file_open(&lfs, &file, name,
|
||||
@@ -4537,8 +4537,8 @@ code = '''
|
||||
}
|
||||
|
||||
i = 0;
|
||||
lfs_size_t orig = lfs.mtree.u.weight;
|
||||
while (lfs.mtree.u.weight == orig) {
|
||||
lfs_size_t orig = lfs.mtree.weight;
|
||||
while (lfs.mtree.weight == orig) {
|
||||
char name[256];
|
||||
sprintf(name, "xnotata%03x", i);
|
||||
lfsr_file_open(&lfs, &file, name,
|
||||
@@ -4591,8 +4591,8 @@ code = '''
|
||||
|
||||
// create enough files for mdir to split again
|
||||
i = 0;
|
||||
orig = lfs.mtree.u.weight;
|
||||
while (lfs.mtree.u.weight == orig) {
|
||||
orig = lfs.mtree.weight;
|
||||
while (lfs.mtree.weight == orig) {
|
||||
char name[256];
|
||||
sprintf(name, "vulsor%03x", i);
|
||||
lfsr_file_open(&lfs, &file, name,
|
||||
@@ -4703,7 +4703,7 @@ code = '''
|
||||
|
||||
// create enough files for mroot to split twice
|
||||
lfs_size_t i = 0;
|
||||
while (lfs.mtree.u.weight == 0x80000000) {
|
||||
while (lfs.mtree.weight == 0) {
|
||||
char name[256];
|
||||
sprintf(name, "tarantula%03x", i);
|
||||
lfsr_file_open(&lfs, &file, name,
|
||||
@@ -4713,8 +4713,8 @@ code = '''
|
||||
}
|
||||
|
||||
i = 0;
|
||||
lfs_size_t orig = lfs.mtree.u.weight;
|
||||
while (lfs.mtree.u.weight == orig) {
|
||||
lfs_size_t orig = lfs.mtree.weight;
|
||||
while (lfs.mtree.weight == orig) {
|
||||
char name[256];
|
||||
sprintf(name, "xnotata%03x", i);
|
||||
lfsr_file_open(&lfs, &file, name,
|
||||
@@ -4876,7 +4876,7 @@ code = '''
|
||||
|
||||
// create enough files for mroot to split twice
|
||||
lfs_size_t i = 0;
|
||||
while (lfs.mtree.u.weight == 0x80000000) {
|
||||
while (lfs.mtree.weight == 0) {
|
||||
char name[256];
|
||||
sprintf(name, "tarantula%03x", i);
|
||||
lfsr_file_open(&lfs, &file, name,
|
||||
@@ -4886,8 +4886,8 @@ code = '''
|
||||
}
|
||||
|
||||
i = 0;
|
||||
lfs_size_t orig = lfs.mtree.u.weight;
|
||||
while (lfs.mtree.u.weight == orig) {
|
||||
lfs_size_t orig = lfs.mtree.weight;
|
||||
while (lfs.mtree.weight == orig) {
|
||||
char name[256];
|
||||
sprintf(name, "xnotata%03x", i);
|
||||
lfsr_file_open(&lfs, &file, name,
|
||||
@@ -5067,7 +5067,7 @@ code = '''
|
||||
|
||||
// create enough files for mroot to split twice
|
||||
lfs_size_t i = 0;
|
||||
while (lfs.mtree.u.weight == 0x80000000) {
|
||||
while (lfs.mtree.weight == 0) {
|
||||
char name[256];
|
||||
sprintf(name, "tarantula%03x", i);
|
||||
lfsr_file_open(&lfs, &file, name,
|
||||
@@ -5077,8 +5077,8 @@ code = '''
|
||||
}
|
||||
|
||||
i = 0;
|
||||
lfs_size_t orig = lfs.mtree.u.weight;
|
||||
while (lfs.mtree.u.weight == orig) {
|
||||
lfs_size_t orig = lfs.mtree.weight;
|
||||
while (lfs.mtree.weight == orig) {
|
||||
char name[256];
|
||||
sprintf(name, "xnotata%03x", i);
|
||||
lfsr_file_open(&lfs, &file, name,
|
||||
@@ -5246,7 +5246,7 @@ code = '''
|
||||
|
||||
// create enough files for mroot to split twice
|
||||
lfs_size_t i = 0;
|
||||
while (lfs.mtree.u.weight == 0x80000000) {
|
||||
while (lfs.mtree.weight == 0) {
|
||||
char name[256];
|
||||
sprintf(name, "tarantula%03x", i);
|
||||
lfsr_file_open(&lfs, &file, name,
|
||||
@@ -5256,8 +5256,8 @@ code = '''
|
||||
}
|
||||
|
||||
i = 0;
|
||||
lfs_size_t orig = lfs.mtree.u.weight;
|
||||
while (lfs.mtree.u.weight == orig) {
|
||||
lfs_size_t orig = lfs.mtree.weight;
|
||||
while (lfs.mtree.weight == orig) {
|
||||
char name[256];
|
||||
sprintf(name, "xnotata%03x", i);
|
||||
lfsr_file_open(&lfs, &file, name,
|
||||
@@ -5946,7 +5946,7 @@ code = '''
|
||||
|
||||
// create enough files for mroot to split twice
|
||||
lfs_size_t i = 0;
|
||||
while (lfs.mtree.u.weight == 0x80000000) {
|
||||
while (lfs.mtree.weight == 0) {
|
||||
char name[256];
|
||||
sprintf(name, "hydroid%03x", i);
|
||||
lfsr_file_t file;
|
||||
@@ -5957,8 +5957,8 @@ code = '''
|
||||
}
|
||||
|
||||
i = 0;
|
||||
lfs_size_t orig = lfs.mtree.u.weight;
|
||||
while (lfs.mtree.u.weight == orig) {
|
||||
lfs_size_t orig = lfs.mtree.weight;
|
||||
while (lfs.mtree.weight == orig) {
|
||||
char name[256];
|
||||
sprintf(name, "medusa%03x", i);
|
||||
lfsr_file_t file;
|
||||
@@ -6180,7 +6180,7 @@ code = '''
|
||||
|
||||
// create enough files for mroot to split twice
|
||||
lfs_size_t i = 0;
|
||||
while (lfs.mtree.u.weight == 0x80000000) {
|
||||
while (lfs.mtree.weight == 0) {
|
||||
char name[256];
|
||||
sprintf(name, "hydroid%03x", i);
|
||||
lfsr_file_t file;
|
||||
@@ -6191,8 +6191,8 @@ code = '''
|
||||
}
|
||||
|
||||
i = 0;
|
||||
lfs_size_t orig = lfs.mtree.u.weight;
|
||||
while (lfs.mtree.u.weight == orig) {
|
||||
lfs_size_t orig = lfs.mtree.weight;
|
||||
while (lfs.mtree.weight == orig) {
|
||||
char name[256];
|
||||
sprintf(name, "polyp%03x", i);
|
||||
lfsr_file_t file;
|
||||
@@ -6461,7 +6461,7 @@ code = '''
|
||||
assert(!(lfs.flags & LFS_I_MKCONSISTENT));
|
||||
|
||||
// which means there shouldn't be that many files left
|
||||
assert((lfs.mtree.u.weight & 0x7fffffff) <= (2 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight <= (2 << lfs.mdir_bits));
|
||||
assert(file1.o.o.mdir.rbyd.weight <= 3);
|
||||
assert(file2.o.o.mdir.rbyd.weight <= 3);
|
||||
|
||||
@@ -6762,7 +6762,7 @@ code = '''
|
||||
assert(!(lfs.flags & LFS_I_MKCONSISTENT));
|
||||
|
||||
// which means there shouldn't be that many files left
|
||||
assert((lfs.mtree.u.weight & 0x7fffffff) <= (2 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight <= (2 << lfs.mdir_bits));
|
||||
assert(file1.o.o.mdir.rbyd.weight <= 3);
|
||||
assert(file2.o.o.mdir.rbyd.weight <= 3);
|
||||
|
||||
@@ -6920,7 +6920,7 @@ code = '''
|
||||
assert(!(lfs.flags & LFS_I_MKCONSISTENT));
|
||||
|
||||
// which means there shouldn't be that many files left
|
||||
assert((lfs.mtree.u.weight & 0x7fffffff) <= (2 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight <= (2 << lfs.mdir_bits));
|
||||
assert(file1.o.o.mdir.rbyd.weight <= 3);
|
||||
assert(file2.o.o.mdir.rbyd.weight <= 3);
|
||||
|
||||
@@ -7089,7 +7089,7 @@ code = '''
|
||||
assert(!(lfs.flags & LFS_I_MKCONSISTENT));
|
||||
|
||||
// which means there shouldn't be that many files left
|
||||
assert((lfs.mtree.u.weight & 0x7fffffff) <= (2 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight <= (2 << lfs.mdir_bits));
|
||||
assert(file1.o.o.mdir.rbyd.weight <= 3);
|
||||
assert(file2.o.o.mdir.rbyd.weight <= 3);
|
||||
|
||||
@@ -7256,7 +7256,7 @@ code = '''
|
||||
assert(!(lfs.flags & LFS_I_MKCONSISTENT));
|
||||
|
||||
// which means there shouldn't be that many files left
|
||||
assert((lfs.mtree.u.weight & 0x7fffffff) <= (2 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight <= (2 << lfs.mdir_bits));
|
||||
assert(file1.o.o.mdir.rbyd.weight <= 3);
|
||||
assert(file2.o.o.mdir.rbyd.weight <= 3);
|
||||
|
||||
@@ -7421,7 +7421,7 @@ code = '''
|
||||
assert(!(lfs.flags & LFS_I_MKCONSISTENT));
|
||||
|
||||
// which means there shouldn't be that many files left
|
||||
assert((lfs.mtree.u.weight & 0x7fffffff) <= (2 << lfs.mdir_bits));
|
||||
assert(lfs.mtree.weight <= (2 << lfs.mdir_bits));
|
||||
assert(file1.o.o.mdir.rbyd.weight <= 3);
|
||||
assert(file2.o.o.mdir.rbyd.weight <= 3);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user