diff --git a/lfs.c b/lfs.c index db4f58cb..8a82f7e7 100644 --- a/lfs.c +++ b/lfs.c @@ -5625,7 +5625,7 @@ static lfsr_data_t lfsr_data_fromgrm(const lfsr_grm_t *grm, } // required by lfsr_data_readgrm -static inline lfsr_mid_t lfsr_fs_weight(lfs_t *lfs); +static inline lfsr_mid_t lfsr_mtree_weight(lfs_t *lfs); static int lfsr_data_readgrm(lfs_t *lfs, lfsr_data_t *data, lfsr_grm_t *grm) { @@ -5651,7 +5651,7 @@ static int lfsr_data_readgrm(lfs_t *lfs, lfsr_data_t *data, if (err) { return err; } - LFS_ASSERT((lfsr_mid_t)grm->mids[i] < lfsr_fs_weight(lfs)); + LFS_ASSERT((lfsr_mid_t)grm->mids[i] < lfsr_mtree_weight(lfs)); } return 0; @@ -5974,7 +5974,7 @@ 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) { +static inline lfsr_mid_t lfsr_mtree_weight_(const lfsr_mtree_t *mtree) { return mtree->u.weight & ~LFSR_MTREE_ISMPTR; } @@ -5992,37 +5992,39 @@ static inline int lfsr_mtree_cmp( } } -static int lfsr_mtree_lookup(lfs_t *lfs, const lfsr_mtree_t *mtree, - lfsr_smid_t mid, +static inline lfsr_mid_t lfsr_mtree_weight(lfs_t *lfs) { + return lfs_max( + lfsr_mtree_weight_(&lfs->mtree), + 1 << lfs->mdir_bits); +} + +static int lfsr_mtree_lookup(lfs_t *lfs, lfsr_smid_t mid, lfsr_mdir_t *mdir_) { // looking up mid=-1 is probably a mistake LFS_ASSERT(mid >= 0); // out of bounds? - if ((lfsr_mid_t)mid >= lfs_max( - lfsr_mtree_weight(mtree), - 1 << lfs->mdir_bits)) { + if ((lfsr_mid_t)mid >= lfsr_mtree_weight(lfs)) { return LFS_ERR_NOENT; } // looking up mroot? - if (lfsr_mtree_isnull(mtree)) { + if (lfsr_mtree_isnull(&lfs->mtree)) { mdir_->mid = mid; mdir_->rbyd = lfs->mroot.rbyd; return 0; // looking up direct mdir? - } else if (lfsr_mtree_ismptr(mtree)) { + } else if (lfsr_mtree_ismptr(&lfs->mtree)) { // fetch mdir - return lfsr_mdir_fetch(lfs, mdir_, mid, &mtree->u.mptr.mptr); + return lfsr_mdir_fetch(lfs, mdir_, mid, &lfs->mtree.u.mptr.mptr); // look up mdir in actual mtree } else { lfsr_bid_t bid; lfsr_tag_t tag; lfsr_data_t data; - int err = lfsr_btree_lookupnext(lfs, &mtree->u.btree, - mid, + int err = lfsr_btree_lookupnext(lfs, &lfs->mtree.u.btree, mid, &bid, &tag, NULL, &data); if (err) { LFS_ASSERT(err != LFS_ERR_NOENT); @@ -6043,8 +6045,7 @@ static int lfsr_mtree_lookup(lfs_t *lfs, const lfsr_mtree_t *mtree, } } -static int lfsr_mtree_seek(lfs_t *lfs, const lfsr_mtree_t *mtree, - lfsr_mdir_t *mdir, lfs_off_t off) { +static int lfsr_mtree_seek(lfs_t *lfs, lfsr_mdir_t *mdir, lfs_off_t off) { // upper layers should handle removed mdirs LFS_ASSERT(mdir->mid >= 0); @@ -6056,7 +6057,7 @@ static int lfsr_mtree_seek(lfs_t *lfs, const lfsr_mtree_t *mtree, // we don't know how many rids are in each mdir until we fetch while (rid >= (lfsr_srid_t)mdir->rbyd.weight) { // end of mtree? - if (bid+(1 << lfs->mdir_bits) >= lfsr_mtree_weight(mtree)) { + if (bid+(1 << lfs->mdir_bits) >= lfsr_mtree_weight(lfs)) { // if we hit the end of the mtree, park the mdir so all future // seeks return noent mdir->mid = bid + (1 << lfs->mdir_bits); @@ -6065,7 +6066,7 @@ static int lfsr_mtree_seek(lfs_t *lfs, const lfsr_mtree_t *mtree, bid += (1 << lfs->mdir_bits); rid -= mdir->rbyd.weight; - int err = lfsr_mtree_lookup(lfs, mtree, bid, mdir); + int err = lfsr_mtree_lookup(lfs, bid, mdir); if (err) { return err; } @@ -7232,7 +7233,7 @@ static int lfsr_mdir_commit(lfs_t *lfs, lfsr_mdir_t *mdir, // need to update mtree? if (lfsr_mtree_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(lfsr_mtree_weight_(&mtree_) > 0); // mark any copies of our mroot as unerased lfs->mroot.rbyd.eoff = -1; @@ -7563,19 +7564,19 @@ static int lfsr_mdir_namelookup(lfs_t *lfs, const lfsr_mdir_t *mdir, // lookup names in our mtree // // if not found, rid will be the best place to insert -static int lfsr_mtree_namelookup(lfs_t *lfs, const lfsr_mtree_t *mtree, +static int lfsr_mtree_namelookup(lfs_t *lfs, lfsr_did_t did, const char *name, lfs_size_t name_size, 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(mtree)) { + if (lfsr_mtree_isnull(&lfs->mtree)) { mdir = lfs->mroot; // treat inlined mdir as mid=0 mdir.mid = 0; // direct mdir? - } else if (lfsr_mtree_ismptr(mtree)) { - int err = lfsr_mdir_fetch(lfs, &mdir, 0, &mtree->u.mptr.mptr); + } else if (lfsr_mtree_ismptr(&lfs->mtree)) { + int err = lfsr_mdir_fetch(lfs, &mdir, 0, &lfs->mtree.u.mptr.mptr); if (err) { return err; } @@ -7586,7 +7587,7 @@ static int lfsr_mtree_namelookup(lfs_t *lfs, const lfsr_mtree_t *mtree, lfsr_tag_t tag; lfsr_bid_t weight; lfsr_data_t data; - lfs_scmp_t cmp = lfsr_btree_namelookup(lfs, &mtree->u.btree, + lfs_scmp_t cmp = lfsr_btree_namelookup(lfs, &lfs->mtree.u.btree, did, name, name_size, &bid, &tag, &weight, &data); if (cmp < 0) { @@ -7648,8 +7649,7 @@ enum { // // if not found, mdir_/did_/name_ will at least be set up // with what should be the parent -static int lfsr_mtree_pathlookup(lfs_t *lfs, const lfsr_mtree_t *mtree, - const char *path, +static int lfsr_mtree_pathlookup(lfs_t *lfs, const char *path, lfsr_mdir_t *mdir_, lfsr_tag_t *tag_, lfsr_did_t *did_, const char **name_, lfs_size_t *name_size_) { // setup root @@ -7747,8 +7747,7 @@ static int lfsr_mtree_pathlookup(lfs_t *lfs, const lfsr_mtree_t *mtree, } // lookup up this name in the mtree - int err = lfsr_mtree_namelookup(lfs, mtree, - did, name, name_size, + int err = lfsr_mtree_namelookup(lfs, did, name, name_size, &mdir, &tag, NULL); if (err) { // report where to insert if we are the last name in our path @@ -7820,21 +7819,21 @@ static int lfsr_mtree_pathlookup(lfs_t *lfs, const lfsr_mtree_t *mtree, // traversing littlefs is a bit complex, so we use a state machine to keep // track of where we are enum { - LFSR_TSTATE_MROOTANCHOR = 0, - LFSR_TSTATE_MROOTCHAIN = 1, - LFSR_TSTATE_MTREE = 2, - LFSR_TSTATE_MDIRS = 3, - LFSR_TSTATE_MDIR = 4, - LFSR_TSTATE_BTREE = 5, - LFSR_TSTATE_OMDIRS = 6, - LFSR_TSTATE_OBTREE = 7, - LFSR_TSTATE_DONE = 8, + LFSR_MTRAVERSAL_MROOTANCHOR = 0, + LFSR_MTRAVERSAL_MROOTCHAIN = 1, + LFSR_MTRAVERSAL_MTREE = 2, + LFSR_MTRAVERSAL_MDIRS = 3, + LFSR_MTRAVERSAL_MDIR = 4, + LFSR_MTRAVERSAL_BTREE = 5, + LFSR_MTRAVERSAL_OMDIRS = 6, + LFSR_MTRAVERSAL_OBTREE = 7, + LFSR_MTRAVERSAL_DONE = 8, }; #define LFSR_MTRAVERSAL(_flags) \ ((lfsr_mtraversal_t){ \ .o.type=LFS_TYPE_TRAVERSAL, \ - .o.state=LFSR_TSTATE_MROOTANCHOR, \ + .o.state=LFSR_MTRAVERSAL_MROOTANCHOR, \ .o.flags=_flags, \ .o.mdir.mid=-1, \ .o.mdir.rbyd.blocks={-1,-1}, \ @@ -7875,16 +7874,10 @@ static inline bool lfsr_f_isdirty(uint32_t flags) { return flags & LFS_F_DIRTY; } -static inline lfsr_mid_t lfsr_fs_weight(lfs_t *lfs) { - return lfs_max( - lfsr_mtree_weight(&lfs->mtree), - 1 << lfs->mdir_bits); -} - -static void lfsr_fs_traverserewind(lfs_t *lfs, lfsr_mtraversal_t *mt) { +static void lfsr_mtree_traverserewind(lfs_t *lfs, lfsr_mtraversal_t *mt) { (void)lfs; mt->o.flags &= ~LFS_F_DIRTY; - mt->o.state = LFSR_TSTATE_MROOTANCHOR; + mt->o.state = LFSR_MTRAVERSAL_MROOTANCHOR; mt->o.mdir.mid = -1; mt->o.mdir.rbyd.blocks[0] = -1; mt->o.mdir.rbyd.blocks[1] = -1; @@ -7895,21 +7888,21 @@ static void lfsr_fs_traverserewind(lfs_t *lfs, lfsr_mtraversal_t *mt) { mt->u.mtortoise.power = 0; } -static void lfsr_fs_traverseclobber(lfs_t *lfs, lfsr_mtraversal_t *mt, +static void lfsr_mtree_traverseclobber(lfs_t *lfs, lfsr_mtraversal_t *mt, lfsr_smid_t mid) { (void)lfs; if (mid != -1) { // increment the mid (to make progress) and reset to mdir iteration - mt->o.state = LFSR_TSTATE_MDIRS; + mt->o.state = LFSR_MTRAVERSAL_MDIRS; mt->o.mdir.mid = mid; mt->o.mdir.rbyd.blocks[0] = -1; mt->o.mdir.rbyd.blocks[1] = -1; mt->ot = NULL; } else { // move to next omdir - LFS_ASSERT(mt->o.state == LFSR_TSTATE_OMDIRS - || mt->o.state == LFSR_TSTATE_OBTREE); - mt->o.state = LFSR_TSTATE_OMDIRS; + LFS_ASSERT(mt->o.state == LFSR_MTRAVERSAL_OMDIRS + || mt->o.state == LFSR_MTRAVERSAL_OBTREE); + mt->o.state = LFSR_MTRAVERSAL_OMDIRS; mt->ot = mt->ot->next; } } @@ -7919,14 +7912,14 @@ static void lfsr_fs_traverseclobber(lfs_t *lfs, lfsr_mtraversal_t *mt, // alias mtinfo=btinfo typedef lfsr_btinfo_t lfsr_mtinfo_t; -// needed in lfsr_fs_traverse_ +// needed in lfsr_mtree_traverse_ static inline bool lfsr_f_isunsync(uint32_t flags); static int lfsr_bshrub_traverse(lfs_t *lfs, const lfsr_file_t *file, lfsr_btraversal_t *bt, lfsr_bid_t *bid_, lfsr_btinfo_t *btinfo); // low-level traversal _only_ finds blocks -static int lfsr_fs_traverse_(lfs_t *lfs, lfsr_mtraversal_t *mt, +static int lfsr_mtree_traverse_(lfs_t *lfs, lfsr_mtraversal_t *mt, lfsr_mtinfo_t *mtinfo) { while (true) { switch (mt->o.state) { @@ -7934,7 +7927,7 @@ static int lfsr_fs_traverse_(lfs_t *lfs, lfsr_mtraversal_t *mt, // // note we make sure to include all mroots in our mroot chain! // - case LFSR_TSTATE_MROOTANCHOR:; + case LFSR_MTRAVERSAL_MROOTANCHOR:; // fetch the first mroot 0x{0,1} int err = lfsr_mdir_fetch(lfs, &mt->o.mdir, -1, &LFSR_MPTR_MROOTANCHOR()); @@ -7943,14 +7936,14 @@ static int lfsr_fs_traverse_(lfs_t *lfs, lfsr_mtraversal_t *mt, } // transition to traversing the mroot chain - mt->o.state = LFSR_TSTATE_MROOTCHAIN; + mt->o.state = LFSR_MTRAVERSAL_MROOTCHAIN; mtinfo->tag = LFSR_TAG_MDIR; mtinfo->u.mdir = mt->o.mdir; return 0; // traverse the mroot chain, checking for mroot/mtree/mdir - case LFSR_TSTATE_MROOTCHAIN:; + case LFSR_MTRAVERSAL_MROOTCHAIN:; // lookup mroot, if we find one this is not the active mroot lfsr_tag_t tag; lfsr_data_t data; @@ -7962,7 +7955,7 @@ static int lfsr_fs_traverse_(lfs_t *lfs, lfsr_mtraversal_t *mt, // traverse any files in our mroot next if (err == LFS_ERR_NOENT) { mt->o.mdir.mid = 0; - mt->o.state = LFSR_TSTATE_MDIR; + mt->o.state = LFSR_MTRAVERSAL_MDIR; continue; } return err; @@ -8021,7 +8014,7 @@ static int lfsr_fs_traverse_(lfs_t *lfs, lfsr_mtraversal_t *mt, } // transition to traversing the mdir - mt->o.state = LFSR_TSTATE_MDIR; + mt->o.state = LFSR_MTRAVERSAL_MDIR; mtinfo->tag = LFSR_TAG_MDIR; mtinfo->u.mdir = mt->o.mdir; @@ -8037,7 +8030,7 @@ static int lfsr_fs_traverse_(lfs_t *lfs, lfsr_mtraversal_t *mt, // transition to traversing the mtree mt->u.bt = LFSR_BTRAVERSAL(); - mt->o.state = LFSR_TSTATE_MTREE; + mt->o.state = LFSR_MTRAVERSAL_MTREE; continue; } else { @@ -8046,35 +8039,35 @@ static int lfsr_fs_traverse_(lfs_t *lfs, lfsr_mtraversal_t *mt, } // iterate over mdirs in the mtree - case LFSR_TSTATE_MDIRS:; + case LFSR_MTRAVERSAL_MDIRS:; // find the next mdir - err = lfsr_mtree_lookup(lfs, &lfs->mtree, mt->o.mdir.mid, + err = lfsr_mtree_lookup(lfs, mt->o.mdir.mid, &mt->o.mdir); if (err) { // end of mtree? guess we're done if (err == LFS_ERR_NOENT) { - mt->o.state = LFSR_TSTATE_DONE; + mt->o.state = LFSR_MTRAVERSAL_DONE; continue; } return err; } // transition to traversing the mdir - mt->o.state = LFSR_TSTATE_MDIR; + mt->o.state = LFSR_MTRAVERSAL_MDIR; mtinfo->tag = LFSR_TAG_MDIR; mtinfo->u.mdir = mt->o.mdir; return 0; // scan for blocks/btrees in the current mdir - case LFSR_TSTATE_MDIR:; + case LFSR_MTRAVERSAL_MDIR:; // not traversing all blocks? have we exceeded our mdir's weight? // return to mtree iteration if (lfsr_t_ismtreeonly(mt->o.flags) || lfsr_mid_rid(lfs, mt->o.mdir.mid) >= (lfsr_srid_t)mt->o.mdir.rbyd.weight) { mt->o.mdir.mid = lfsr_mid_bid(lfs, mt->o.mdir.mid) + 1; - mt->o.state = LFSR_TSTATE_MDIRS; + mt->o.state = LFSR_MTRAVERSAL_MDIRS; continue; } @@ -8111,21 +8104,21 @@ static int lfsr_fs_traverse_(lfs_t *lfs, lfsr_mtraversal_t *mt, // no? next we need to check any opened files } else { mt->ot = lfs->opened; - mt->o.state = LFSR_TSTATE_OMDIRS; + mt->o.state = LFSR_MTRAVERSAL_OMDIRS; continue; } // start traversing mt->u.bt = LFSR_BTRAVERSAL(); - mt->o.state = LFSR_TSTATE_BTREE; + mt->o.state = LFSR_MTRAVERSAL_BTREE; continue; // scan for blocks/btrees in our opened file list - case LFSR_TSTATE_OMDIRS:; + case LFSR_MTRAVERSAL_OMDIRS:; // reached end of opened files? return to mdir traversal if (!mt->ot) { mt->o.mdir.mid += 1; - mt->o.state = LFSR_TSTATE_MDIR; + mt->o.state = LFSR_MTRAVERSAL_MDIR; continue; } @@ -8148,33 +8141,33 @@ static int lfsr_fs_traverse_(lfs_t *lfs, lfsr_mtraversal_t *mt, const lfsr_file_t *file = (const lfsr_file_t*)mt->ot; mt->bshrub = file->bshrub; mt->u.bt = LFSR_BTRAVERSAL(); - mt->o.state = LFSR_TSTATE_OBTREE; + mt->o.state = LFSR_MTRAVERSAL_OBTREE; continue; // traverse any btrees we see, this includes the mtree and any file // btrees/bshrubs - case LFSR_TSTATE_MTREE:; - case LFSR_TSTATE_BTREE:; - case LFSR_TSTATE_OBTREE:; + case LFSR_MTRAVERSAL_MTREE:; + case LFSR_MTRAVERSAL_BTREE:; + case LFSR_MTRAVERSAL_OBTREE:; // traverse through our file err = lfsr_bshrub_traverse(lfs, (const lfsr_file_t*)mt, &mt->u.bt, NULL, mtinfo); if (err) { if (err == LFS_ERR_NOENT) { // end of mtree? start iterating over mdirs - if (mt->o.state == LFSR_TSTATE_MTREE) { + if (mt->o.state == LFSR_MTRAVERSAL_MTREE) { mt->o.mdir.mid = 0; - mt->o.state = LFSR_TSTATE_MDIRS; + mt->o.state = LFSR_MTRAVERSAL_MDIRS; continue; // end of mdir btree? start iterating over opened files - } else if (mt->o.state == LFSR_TSTATE_BTREE) { + } else if (mt->o.state == LFSR_MTRAVERSAL_BTREE) { mt->ot = lfs->opened; - mt->o.state = LFSR_TSTATE_OMDIRS; + mt->o.state = LFSR_MTRAVERSAL_OMDIRS; continue; // end of opened btree? go to next opened file - } else if (mt->o.state == LFSR_TSTATE_OBTREE) { + } else if (mt->o.state == LFSR_MTRAVERSAL_OBTREE) { mt->ot = mt->ot->next; - mt->o.state = LFSR_TSTATE_OMDIRS; + mt->o.state = LFSR_MTRAVERSAL_OMDIRS; continue; } else { LFS_UNREACHABLE(); @@ -8194,7 +8187,7 @@ static int lfsr_fs_traverse_(lfs_t *lfs, lfsr_mtraversal_t *mt, continue; - case LFSR_TSTATE_DONE:; + case LFSR_MTRAVERSAL_DONE:; return LFS_ERR_NOENT; default:; @@ -8203,15 +8196,15 @@ static int lfsr_fs_traverse_(lfs_t *lfs, lfsr_mtraversal_t *mt, } } -// needed in lfsr_fs_traverse +// needed in lfsr_mtree_traverse static void lfs_alloc_markinuse(lfs_t *lfs, lfs_block_t block); // high-level immutable traversal, handle extra features here, // but no mutation! (we're called in lfs_alloc, so things would end up // recursive) -static int lfsr_fs_traverse(lfs_t *lfs, lfsr_mtraversal_t *mt, +static int lfsr_mtree_traverse(lfs_t *lfs, lfsr_mtraversal_t *mt, lfsr_mtinfo_t *mtinfo) { - int err = lfsr_fs_traverse_(lfs, mt, mtinfo); + int err = lfsr_mtree_traverse_(lfs, mt, mtinfo); if (err) { return err; } @@ -8258,10 +8251,10 @@ static int lfsr_fs_traverse(lfs_t *lfs, lfsr_mtraversal_t *mt, // high-level mutating traversal, handle extra features that require // mutation here, upper layers should call lfs_alloc_ckpoint as needed -static int lfsr_fs_traversemut(lfs_t *lfs, lfsr_mtraversal_t *mt, +static int lfsr_mtree_traversemut(lfs_t *lfs, lfsr_mtraversal_t *mt, lfsr_mtinfo_t *mtinfo) { // TODO - return lfsr_fs_traverse(lfs, mt, mtinfo); + return lfsr_mtree_traverse(lfs, mt, mtinfo); } @@ -8724,7 +8717,7 @@ static int lfsr_mountinited(lfs_t *lfs) { LFS_T_MTREEONLY | LFS_T_CKMETADATA); while (true) { lfsr_mtinfo_t mtinfo; - int err = lfsr_fs_traverse(lfs, &mt, &mtinfo); + int err = lfsr_mtree_traverse(lfs, &mt, &mtinfo); if (err) { if (err == LFS_ERR_NOENT) { break; @@ -8980,7 +8973,7 @@ int lfsr_mount(lfs_t *lfs, const struct lfs_config *cfg) { lfs->mroot.rbyd.blocks[0], lfs->mroot.rbyd.blocks[1], lfsr_rbyd_trunk(&lfs->mroot.rbyd), - lfsr_mtree_weight(&lfs->mtree) >> lfs->mdir_bits, + lfsr_mtree_weight_(&lfs->mtree) >> lfs->mdir_bits, 1 << lfs->mdir_bits); return 0; @@ -9162,7 +9155,7 @@ static lfs_sblock_t lfs_alloc(lfs_t *lfs, bool erase) { lfsr_mtraversal_t mt = LFSR_MTRAVERSAL(LFS_T_LOOKAHEAD); while (true) { lfsr_mtinfo_t mtinfo; - int err = lfsr_fs_traverse(lfs, &mt, &mtinfo); + int err = lfsr_mtree_traverse(lfs, &mt, &mtinfo); if (err) { LFS_ASSERT(err != LFS_ERR_BUSY); if (err == LFS_ERR_NOENT) { @@ -9194,7 +9187,7 @@ lfs_ssize_t lfsr_fs_size(lfs_t *lfs) { lfsr_mtraversal_t mt = LFSR_MTRAVERSAL(0); while (true) { lfsr_mtinfo_t mtinfo; - int err = lfsr_fs_traverse(lfs, &mt, &mtinfo); + int err = lfsr_mtree_traverse(lfs, &mt, &mtinfo); if (err) { if (err == LFS_ERR_NOENT) { break; @@ -9227,7 +9220,7 @@ static int lfsr_fs_fixgrm(lfs_t *lfs) { while (lfsr_grm_hasrm(&lfs->grm)) { // find our mdir lfsr_mdir_t mdir; - int err = lfsr_mtree_lookup(lfs, &lfs->mtree, lfs->grm.mids[0], + int err = lfsr_mtree_lookup(lfs, lfs->grm.mids[0], &mdir); if (err) { LFS_ASSERT(err != LFS_ERR_NOENT); @@ -9261,7 +9254,8 @@ static int lfsr_fs_fixorphans(lfs_t *lfs) { // note this never takes longer than lfsr_mount // lfsr_mdir_t mdir; - int err = lfsr_mtree_lookup(lfs, &lfs->mtree, 0, &mdir); + int err = lfsr_mtree_lookup(lfs, 0, + &mdir); if (err) { LFS_ASSERT(err != LFS_ERR_NOENT); return err; @@ -9286,7 +9280,7 @@ static int lfsr_fs_fixorphans(lfs_t *lfs) { } // seek in case our mdir was dropped - err = lfsr_mtree_seek(lfs, &lfs->mtree, &mdir, 0); + err = lfsr_mtree_seek(lfs, &mdir, 0); if (err) { if (err == LFS_ERR_NOENT) { break; @@ -9299,7 +9293,7 @@ static int lfsr_fs_fixorphans(lfs_t *lfs) { } // lookup next entry - err = lfsr_mtree_seek(lfs, &lfs->mtree, &mdir, 1); + err = lfsr_mtree_seek(lfs, &mdir, 1); if (err) { if (err == LFS_ERR_NOENT) { break; @@ -9419,7 +9413,7 @@ failed:; static void lfsr_traversal_clobber(lfs_t *lfs, lfsr_traversal_t *t, lfsr_smid_t mid) { // clobber low-level traversal - lfsr_fs_traverseclobber(lfs, &t->mt, mid); + lfsr_mtree_traverseclobber(lfs, &t->mt, mid); // and clear any pending blocks t->blocks[0] = -1; @@ -9495,7 +9489,7 @@ int lfsr_traversal_read(lfs_t *lfs, lfsr_traversal_t *t, // find next block lfsr_mtinfo_t mtinfo; - int err = lfsr_fs_traversemut(lfs, &t->mt, &mtinfo); + int err = lfsr_mtree_traversemut(lfs, &t->mt, &mtinfo); if (err) { // end of traversal? if (err == LFS_ERR_NOENT) { @@ -9537,7 +9531,7 @@ done:; static int lfsr_traversal_rewind_(lfs_t *lfs, lfsr_traversal_t *t) { // reset traversal state - lfsr_fs_traverserewind(lfs, &t->mt); + lfsr_mtree_traverserewind(lfs, &t->mt); t->blocks[0] = -1; t->blocks[1] = -1; @@ -9576,7 +9570,7 @@ int lfsr_mkdir(lfs_t *lfs, const char *path) { lfsr_did_t did; const char *name; lfs_size_t name_size; - err = lfsr_mtree_pathlookup(lfs, &lfs->mtree, path, + err = lfsr_mtree_pathlookup(lfs, path, &mdir, &tag, &did, &name, &name_size); if (err && err != LFS_ERR_EXIST @@ -9640,7 +9634,7 @@ int lfsr_mkdir(lfs_t *lfs, const char *path) { // lfsr_did_t dmask = (1 << lfs_min( - lfs_nlog2(lfsr_fs_weight(lfs) >> lfs->mdir_bits) + lfs_nlog2(lfsr_mtree_weight(lfs) >> lfs->mdir_bits) + lfs_nlog2(lfs->cfg->block_size/32), 31) ) - 1; @@ -9649,8 +9643,7 @@ int lfsr_mkdir(lfs_t *lfs, const char *path) { // Check if we have a collision. If we do, search for the next // available did while (true) { - err = lfsr_mtree_namelookup(lfs, &lfs->mtree, - did_, NULL, 0, + err = lfsr_mtree_namelookup(lfs, did_, NULL, 0, &mdir, NULL, NULL); if (err) { if (err == LFS_ERR_NOENT) { @@ -9686,8 +9679,7 @@ int lfsr_mkdir(lfs_t *lfs, const char *path) { // committing our bookmark may have changed the mid of our metadata entry, // we need to look it up again, we can at least avoid the full path walk - err = lfsr_mtree_namelookup(lfs, &lfs->mtree, - did, name, name_size, + err = lfsr_mtree_namelookup(lfs, did, name, name_size, &mdir, NULL, NULL); if (err && err != LFS_ERR_NOENT) { return err; @@ -9745,7 +9737,7 @@ int lfsr_remove(lfs_t *lfs, const char *path) { lfsr_did_t did; const char *name; lfs_size_t name_size; - err = lfsr_mtree_pathlookup(lfs, &lfs->mtree, path, + err = lfsr_mtree_pathlookup(lfs, path, &mdir, &tag, &did, &name, &name_size); if (err && err != LFS_ERR_EXIST) { @@ -9775,8 +9767,7 @@ int lfsr_remove(lfs_t *lfs, const char *path) { // then lookup the bookmark entry lfsr_mdir_t bookmark_mdir; - err = lfsr_mtree_namelookup(lfs, &lfs->mtree, - did_, NULL, 0, + err = lfsr_mtree_namelookup(lfs, did_, NULL, 0, &bookmark_mdir, NULL, NULL); if (err) { LFS_ASSERT(err != LFS_ERR_NOENT); @@ -9785,7 +9776,7 @@ int lfsr_remove(lfs_t *lfs, const char *path) { lfsr_mid_t bookmark_mid = bookmark_mdir.mid; // check that the directory is empty - err = lfsr_mtree_seek(lfs, &lfs->mtree, &bookmark_mdir, 1); + err = lfsr_mtree_seek(lfs, &bookmark_mdir, 1); if (err && err != LFS_ERR_NOENT) { return err; } @@ -9878,7 +9869,7 @@ int lfsr_rename(lfs_t *lfs, const char *old_path, const char *new_path) { lfsr_mdir_t old_mdir; lfsr_tag_t old_tag; lfsr_did_t old_did; - err = lfsr_mtree_pathlookup(lfs, &lfs->mtree, old_path, + err = lfsr_mtree_pathlookup(lfs, old_path, &old_mdir, &old_tag, &old_did, NULL, NULL); if (err && err != LFS_ERR_EXIST) { @@ -9895,7 +9886,7 @@ int lfsr_rename(lfs_t *lfs, const char *old_path, const char *new_path) { lfsr_did_t new_did; const char *new_name; lfs_size_t new_name_size; - err = lfsr_mtree_pathlookup(lfs, &lfs->mtree, new_path, + err = lfsr_mtree_pathlookup(lfs, new_path, &new_mdir, &new_tag, &new_did, &new_name, &new_name_size); if (err && err != LFS_ERR_EXIST) { @@ -9947,8 +9938,7 @@ int lfsr_rename(lfs_t *lfs, const char *old_path, const char *new_path) { // then lookup the bookmark entry lfsr_mdir_t bookmark_mdir; - err = lfsr_mtree_namelookup(lfs, &lfs->mtree, - new_did_, NULL, 0, + err = lfsr_mtree_namelookup(lfs, new_did_, NULL, 0, &bookmark_mdir, NULL, NULL); if (err) { LFS_ASSERT(err != LFS_ERR_NOENT); @@ -9957,7 +9947,7 @@ int lfsr_rename(lfs_t *lfs, const char *old_path, const char *new_path) { lfsr_mid_t bookmark_mid = bookmark_mdir.mid; // check that the directory is empty - err = lfsr_mtree_seek(lfs, &lfs->mtree, &bookmark_mdir, 1); + err = lfsr_mtree_seek(lfs, &bookmark_mdir, 1); if (err && err != LFS_ERR_NOENT) { return err; } @@ -10101,7 +10091,7 @@ int lfsr_stat(lfs_t *lfs, const char *path, struct lfs_info *info) { lfsr_tag_t tag; const char *name; lfs_size_t name_size; - int err = lfsr_mtree_pathlookup(lfs, &lfs->mtree, path, + int err = lfsr_mtree_pathlookup(lfs, path, &mdir, &tag, NULL, &name, &name_size); if (err && err != LFS_ERR_EXIST @@ -10141,7 +10131,7 @@ int lfsr_dir_open(lfs_t *lfs, lfsr_dir_t *dir, const char *path) { // lookup our directory lfsr_mdir_t mdir; lfsr_tag_t tag; - int err = lfsr_mtree_pathlookup(lfs, &lfs->mtree, path, + int err = lfsr_mtree_pathlookup(lfs, path, &mdir, &tag, NULL, NULL, NULL); if (err && err != LFS_ERR_EXIST @@ -10219,7 +10209,7 @@ int lfsr_dir_read(lfs_t *lfs, lfsr_dir_t *dir, struct lfs_info *info) { } // seek in case our mdir was dropped - int err = lfsr_mtree_seek(lfs, &lfs->mtree, &dir->o.mdir, 0); + int err = lfsr_mtree_seek(lfs, &dir->o.mdir, 0); if (err) { return err; } @@ -10257,7 +10247,7 @@ int lfsr_dir_read(lfs_t *lfs, lfsr_dir_t *dir, struct lfs_info *info) { } // eagerly look up the next entry - err = lfsr_mtree_seek(lfs, &lfs->mtree, &dir->o.mdir, 1); + err = lfsr_mtree_seek(lfs, &dir->o.mdir, 1); if (err && err != LFS_ERR_NOENT) { return err; } @@ -10288,7 +10278,7 @@ int lfsr_dir_seek(lfs_t *lfs, lfsr_dir_t *dir, lfs_soff_t off) { // // note the -2 to adjust for dot entries if (off > 2) { - err = lfsr_mtree_seek(lfs, &lfs->mtree, &dir->o.mdir, off - 2); + err = lfsr_mtree_seek(lfs, &dir->o.mdir, off - 2); if (err && err != LFS_ERR_NOENT) { return err; } @@ -10315,8 +10305,7 @@ static int lfsr_dir_rewind_(lfs_t *lfs, lfsr_dir_t *dir) { dir->pos = 0; // lookup our bookmark in the mtree - int err = lfsr_mtree_namelookup(lfs, &lfs->mtree, - dir->did, NULL, 0, + int err = lfsr_mtree_namelookup(lfs, dir->did, NULL, 0, &dir->o.mdir, NULL, NULL); if (err) { LFS_ASSERT(err != LFS_ERR_NOENT); @@ -10324,7 +10313,7 @@ static int lfsr_dir_rewind_(lfs_t *lfs, lfsr_dir_t *dir) { } // eagerly lookup the next entry - err = lfsr_mtree_seek(lfs, &lfs->mtree, &dir->o.mdir, 1); + err = lfsr_mtree_seek(lfs, &dir->o.mdir, 1); if (err && err != LFS_ERR_NOENT) { return err; } @@ -10517,7 +10506,7 @@ int lfsr_file_opencfg(lfs_t *lfs, lfsr_file_t *file, lfsr_did_t did; const char *name; lfs_size_t name_size; - int err = lfsr_mtree_pathlookup(lfs, &lfs->mtree, path, + int err = lfsr_mtree_pathlookup(lfs, path, &file->o.mdir, &tag, &did, &name, &name_size); if (err && err != LFS_ERR_EXIST diff --git a/tests/test_alloc.toml b/tests/test_alloc.toml index 18ff4d2f..77d79031 100644 --- a/tests/test_alloc.toml +++ b/tests/test_alloc.toml @@ -170,7 +170,7 @@ code = ''' assert(i < 2*BLOCK_COUNT); lfsr_mtinfo_t mtinfo; - int err = lfsr_fs_traverse(&lfs, &mt, &mtinfo); + int err = lfsr_mtree_traverse(&lfs, &mt, &mtinfo); assert(!err || err == LFS_ERR_NOENT); if (err == LFS_ERR_NOENT) { break; @@ -338,7 +338,7 @@ code = ''' assert(i < 2*BLOCK_COUNT); lfsr_mtinfo_t mtinfo; - int err = lfsr_fs_traverse(&lfs, &mt, &mtinfo); + int err = lfsr_mtree_traverse(&lfs, &mt, &mtinfo); assert(!err || err == LFS_ERR_NOENT); if (err == LFS_ERR_NOENT) { break; @@ -492,7 +492,7 @@ code = ''' assert(i < 2*BLOCK_COUNT); lfsr_mtinfo_t mtinfo; - int err = lfsr_fs_traverse(&lfs, &mt, &mtinfo); + int err = lfsr_mtree_traverse(&lfs, &mt, &mtinfo); assert(!err || err == LFS_ERR_NOENT); if (err == LFS_ERR_NOENT) { break; diff --git a/tests/test_incompat.toml b/tests/test_incompat.toml index 6d215011..6311cfb4 100644 --- a/tests/test_incompat.toml +++ b/tests/test_incompat.toml @@ -411,7 +411,7 @@ code = ''' lfsr_did_t did; const char *name; lfs_size_t name_size; - lfsr_mtree_pathlookup(&lfs, &lfs.mtree, "b", + lfsr_mtree_pathlookup(&lfs, "b", &mdir, NULL, &did, &name, &name_size) => LFS_ERR_EXIST; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( diff --git a/tests/test_mtree.toml b/tests/test_mtree.toml index 99013053..c71cfe9d 100644 --- a/tests/test_mtree.toml +++ b/tests/test_mtree.toml @@ -166,7 +166,7 @@ code = ''' memset(buffer, 'b', SIZE); lfsr_mdir_t mdir; - lfsr_mtree_lookup(&lfs, &lfs.mtree, 0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, 0, &mdir) => 0; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_UATTR(2), 0, LFSR_DATA_BUF(buffer, SIZE)))) => 0; @@ -176,7 +176,7 @@ code = ''' LFSR_ATTR(LFSR_TAG_UATTR(3), 0, LFSR_DATA_BUF("c", 1)))) => 0; // assert mdirs were unininlined - assert(lfsr_mtree_weight(&lfs.mtree) == (1 << lfs.mdir_bits)); + assert(lfsr_mtree_weight_(&lfs.mtree) == (1 << lfs.mdir_bits)); // assert mroot now has no entries assert(lfs.mroot.rbyd.weight == 0); @@ -185,7 +185,7 @@ code = ''' lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; assert(buffer[0] == 'a'); - lfsr_mtree_lookup(&lfs, &lfs.mtree, 0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, 0, &mdir) => 0; assert(mdir.rbyd.weight == 1); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_UATTR(2), &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; @@ -200,7 +200,7 @@ code = ''' lfsr_mount(&lfs, CFG) => 0; // assert mdirs were unininlined - assert(lfsr_mtree_weight(&lfs.mtree) == (1 << lfs.mdir_bits)); + assert(lfsr_mtree_weight_(&lfs.mtree) == (1 << lfs.mdir_bits)); // assert mroot now has no entries assert(lfs.mroot.rbyd.weight == 0); @@ -209,7 +209,7 @@ code = ''' lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; assert(buffer[0] == 'a'); - lfsr_mtree_lookup(&lfs, &lfs.mtree, 0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, 0, &mdir) => 0; assert(mdir.rbyd.weight == 1); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_UATTR(2), &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; @@ -238,14 +238,14 @@ code = ''' buffer[0] = '\0'; memset(buffer+1, 'a', SIZE-1); lfsr_mdir_t mdir; - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF(buffer, SIZE)))) => 0; assert(mdir.rbyd.weight == 2); memset(buffer+1, 'b', SIZE-1); - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF(buffer, SIZE)))) => 0; @@ -257,18 +257,18 @@ code = ''' LFSR_ATTR(LFSR_TAG_UATTR(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(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits)); // assert mroot now has no entries assert(lfs.mroot.rbyd.weight == 0); // assert that our entries are still in the mtree - lfsr_mtree_lookup(&lfs, &lfs.mtree, (0 << lfs.mdir_bits)+1, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (0 << lfs.mdir_bits)+1, &mdir) => 0; assert(mdir.rbyd.weight == 2); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; assert(buffer[1] == 'a'); - lfsr_mtree_lookup(&lfs, &lfs.mtree, (1 << lfs.mdir_bits)+0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (1 << lfs.mdir_bits)+0, &mdir) => 0; assert(mdir.rbyd.weight == 1); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; @@ -283,18 +283,18 @@ code = ''' lfsr_mount(&lfs, CFG) => 0; // assert mdirs were unininlined and split - assert(lfsr_mtree_weight(&lfs.mtree) == (2 << lfs.mdir_bits)); + assert(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits)); // assert mroot now has no entries assert(lfs.mroot.rbyd.weight == 0); // assert that our entries are still in the mtree - lfsr_mtree_lookup(&lfs, &lfs.mtree, (0 << lfs.mdir_bits)+1, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (0 << lfs.mdir_bits)+1, &mdir) => 0; assert(mdir.rbyd.weight == 2); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; assert(buffer[1] == 'a'); - lfsr_mtree_lookup(&lfs, &lfs.mtree, (1 << lfs.mdir_bits)+0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (1 << lfs.mdir_bits)+0, &mdir) => 0; assert(mdir.rbyd.weight == 1); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; @@ -323,14 +323,14 @@ code = ''' buffer[0] = '\0'; memset(buffer+1, 'a', SIZE-1); lfsr_mdir_t mdir; - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF(buffer, SIZE)))) => 0; assert(mdir.rbyd.weight == 2); memset(buffer+1, 'b', SIZE-1); - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF(buffer, SIZE)))) => 0; @@ -342,13 +342,13 @@ code = ''' LFSR_ATTR(LFSR_TAG_UATTR(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(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits)); // assert mroot now has no entries assert(lfs.mroot.rbyd.weight == 0); // now add another large entry to an mdir, forcing a split memset(buffer+1, 'd', SIZE-1); - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF(buffer, SIZE)))) => 0; @@ -360,18 +360,18 @@ code = ''' LFSR_ATTR(LFSR_TAG_UATTR(2), 0, LFSR_DATA_BUF("e", 1)))) => 0; // assert mdir was split correctly - assert(lfsr_mtree_weight(&lfs.mtree) == (3 << lfs.mdir_bits)); + assert(lfsr_mtree_weight_(&lfs.mtree) == (3 << lfs.mdir_bits)); // assert mroot still has no entries assert(lfs.mroot.rbyd.weight == 0); // assert that our entries are still in the mtree - lfsr_mtree_lookup(&lfs, &lfs.mtree, (0 << lfs.mdir_bits)+1, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (0 << lfs.mdir_bits)+1, &mdir) => 0; assert(mdir.rbyd.weight == 2); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; assert(buffer[1] == 'a'); - lfsr_mtree_lookup(&lfs, &lfs.mtree, (1 << lfs.mdir_bits)+0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (1 << lfs.mdir_bits)+0, &mdir) => 0; assert(mdir.rbyd.weight == 1); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; @@ -381,7 +381,7 @@ code = ''' lfsr_data_read(&lfs, &data, buffer, 1) => 1; assert(buffer[0] == 'c'); - lfsr_mtree_lookup(&lfs, &lfs.mtree, (2 << lfs.mdir_bits)+0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (2 << lfs.mdir_bits)+0, &mdir) => 0; assert(mdir.rbyd.weight == 1); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; @@ -396,18 +396,18 @@ code = ''' lfsr_mount(&lfs, CFG) => 0; // assert mdir was split correctly - assert(lfsr_mtree_weight(&lfs.mtree) == (3 << lfs.mdir_bits)); + assert(lfsr_mtree_weight_(&lfs.mtree) == (3 << lfs.mdir_bits)); // assert mroot still has no entries assert(lfs.mroot.rbyd.weight == 0); // assert that our entries are still in the mtree - lfsr_mtree_lookup(&lfs, &lfs.mtree, (0 << lfs.mdir_bits)+1, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (0 << lfs.mdir_bits)+1, &mdir) => 0; assert(mdir.rbyd.weight == 2); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; assert(buffer[1] == 'a'); - lfsr_mtree_lookup(&lfs, &lfs.mtree, (1 << lfs.mdir_bits)+0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (1 << lfs.mdir_bits)+0, &mdir) => 0; assert(mdir.rbyd.weight == 1); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; @@ -417,7 +417,7 @@ code = ''' lfsr_data_read(&lfs, &data, buffer, 1) => 1; assert(buffer[0] == 'c'); - lfsr_mtree_lookup(&lfs, &lfs.mtree, (2 << lfs.mdir_bits)+0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (2 << lfs.mdir_bits)+0, &mdir) => 0; assert(mdir.rbyd.weight == 1); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; @@ -448,7 +448,7 @@ code = ''' name[0] = '\0'; sprintf(name+1, "%03x", i); lfsr_mdir_t mdir; - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)name+1, 3, + lfsr_mtree_namelookup(&lfs, 0, (const char*)name+1, 3, &mdir, NULL, NULL) => LFS_ERR_NOENT; // force a compaction? if (FORCE_COMPACTION) { @@ -467,7 +467,7 @@ code = ''' // try looking up each entry lfsr_mdir_t mdir; - lfsr_mtree_lookup(&lfs, &lfs.mtree, 0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, 0, &mdir) => 0; lfsr_data_t data; uint8_t buffer[256]; lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_BOOKMARK, &data) => 0; @@ -476,7 +476,7 @@ code = ''' char name[256]; name[0] = '\0'; sprintf(name+1, "%03x", i); - lfsr_mtree_seek(&lfs, &lfs.mtree, &mdir, +1) => 0; + lfsr_mtree_seek(&lfs, &mdir, +1) => 0; lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, sizeof(buffer)) => 4; assert(memcmp(buffer, name, 4) == 0); @@ -487,14 +487,14 @@ code = ''' lfsr_mount(&lfs, CFG) => 0; // try looking up each entry - lfsr_mtree_lookup(&lfs, &lfs.mtree, 0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, 0, &mdir) => 0; lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_BOOKMARK, &data) => 0; lfsr_data_read(&lfs, &data, buffer, sizeof(buffer)) => 1; for (lfs_size_t i = 0; i < N; i++) { char name[256]; name[0] = '\0'; sprintf(name+1, "%03x", i); - lfsr_mtree_seek(&lfs, &lfs.mtree, &mdir, +1) => 0; + lfsr_mtree_seek(&lfs, &mdir, +1) => 0; lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, sizeof(buffer)) => 4; assert(memcmp(buffer, name, 4) == 0); @@ -534,8 +534,7 @@ code = ''' name[0] = '\0'; sprintf(name+1, "%03x", x); lfsr_mdir_t mdir; - int err = lfsr_mtree_namelookup(&lfs, &lfs.mtree, - 0, (const char*)name+1, 3, + int err = lfsr_mtree_namelookup(&lfs, 0, (const char*)name+1, 3, &mdir, NULL, NULL); assert(!err || err == LFS_ERR_NOENT); if (!err) { @@ -559,7 +558,7 @@ code = ''' // try looking up each entry lfsr_mdir_t mdir; - lfsr_mtree_lookup(&lfs, &lfs.mtree, 0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, 0, &mdir) => 0; lfsr_data_t data; uint8_t buffer[256]; lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_BOOKMARK, &data) => 0; @@ -569,13 +568,13 @@ code = ''' name[0] = '\0'; sprintf(name+1, "%03x", i); if (sim[i]) { - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)name+1, 3, + lfsr_mtree_namelookup(&lfs, 0, (const char*)name+1, 3, &mdir, NULL, NULL) => 0; lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, sizeof(buffer)) => 4; assert(memcmp(buffer, name, 4) == 0); } else { - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)name+1, 3, + lfsr_mtree_namelookup(&lfs, 0, (const char*)name+1, 3, &mdir, NULL, NULL) => LFS_ERR_NOENT; } } @@ -585,7 +584,7 @@ code = ''' lfsr_mount(&lfs, CFG) => 0; // try looking up each entry - lfsr_mtree_lookup(&lfs, &lfs.mtree, 0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, 0, &mdir) => 0; lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_BOOKMARK, &data) => 0; lfsr_data_read(&lfs, &data, buffer, sizeof(buffer)) => 1; for (lfs_size_t i = 0; i < N; i++) { @@ -593,13 +592,13 @@ code = ''' name[0] = '\0'; sprintf(name+1, "%03x", i); if (sim[i]) { - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)name+1, 3, + lfsr_mtree_namelookup(&lfs, 0, (const char*)name+1, 3, &mdir, NULL, NULL) => 0; lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, sizeof(buffer)) => 4; assert(memcmp(buffer, name, 4) == 0); } else { - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)name+1, 3, + lfsr_mtree_namelookup(&lfs, 0, (const char*)name+1, 3, &mdir, NULL, NULL) => LFS_ERR_NOENT; } } @@ -627,14 +626,14 @@ code = ''' buffer[0] = '\0'; memset(buffer+1, 'a', SIZE-1); lfsr_mdir_t mdir; - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF(buffer, SIZE)))) => 0; assert(mdir.rbyd.weight == 2); memset(buffer+1, 'b', SIZE-1); - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF(buffer, SIZE)))) => 0; @@ -646,25 +645,25 @@ code = ''' LFSR_ATTR(LFSR_TAG_UATTR(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(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits)); // assert mroot now has no entries assert(lfs.mroot.rbyd.weight == 0); // remove an entry, forcing the mdir to be dropped memset(buffer+1, 'b', SIZE-1); - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => 0; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_RM, -1, LFSR_DATA_NULL()))) => 0; assert(mdir.rbyd.weight == 0); // assert mdir was dropped - assert(lfsr_mtree_weight(&lfs.mtree) == (1 << lfs.mdir_bits)); + assert(lfsr_mtree_weight_(&lfs.mtree) == (1 << lfs.mdir_bits)); // assert mroot still has no entries assert(lfs.mroot.rbyd.weight == 0); // assert that our entries are still in the mtree - lfsr_mtree_lookup(&lfs, &lfs.mtree, (0 << lfs.mdir_bits)+1, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (0 << lfs.mdir_bits)+1, &mdir) => 0; assert(mdir.rbyd.weight == 2); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; @@ -679,12 +678,12 @@ code = ''' lfsr_mount(&lfs, CFG) => 0; // assert mdir was dropped - assert(lfsr_mtree_weight(&lfs.mtree) == (1 << lfs.mdir_bits)); + assert(lfsr_mtree_weight_(&lfs.mtree) == (1 << lfs.mdir_bits)); // assert mroot still has no entries assert(lfs.mroot.rbyd.weight == 0); // assert that our entries are still in the mtree - lfsr_mtree_lookup(&lfs, &lfs.mtree, (0 << lfs.mdir_bits)+1, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (0 << lfs.mdir_bits)+1, &mdir) => 0; assert(mdir.rbyd.weight == 2); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; @@ -713,14 +712,14 @@ code = ''' buffer[0] = '\0'; memset(buffer+1, 'a', SIZE-1); lfsr_mdir_t mdir; - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF(buffer, SIZE)))) => 0; assert(mdir.rbyd.weight == 2); memset(buffer+1, 'b', SIZE-1); - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF(buffer, SIZE)))) => 0; @@ -732,13 +731,13 @@ code = ''' LFSR_ATTR(LFSR_TAG_UATTR(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(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits)); // assert mroot now has no entries assert(lfs.mroot.rbyd.weight == 0); // remove an entry, forcing the mdir to be dropped memset(buffer+1, 'b', SIZE-1); - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => 0; // force mdir to compact while we're removing mdir.rbyd.eoff = -1; @@ -747,12 +746,12 @@ code = ''' assert(mdir.rbyd.weight == 0); // assert mdir was dropped - assert(lfsr_mtree_weight(&lfs.mtree) == (1 << lfs.mdir_bits)); + assert(lfsr_mtree_weight_(&lfs.mtree) == (1 << lfs.mdir_bits)); // assert mroot still has no entries assert(lfs.mroot.rbyd.weight == 0); // assert that our entries are still in the mtree - lfsr_mtree_lookup(&lfs, &lfs.mtree, (0 << lfs.mdir_bits)+1, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (0 << lfs.mdir_bits)+1, &mdir) => 0; assert(mdir.rbyd.weight == 2); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; @@ -767,12 +766,12 @@ code = ''' lfsr_mount(&lfs, CFG) => 0; // assert mdir was dropped - assert(lfsr_mtree_weight(&lfs.mtree) == (1 << lfs.mdir_bits)); + assert(lfsr_mtree_weight_(&lfs.mtree) == (1 << lfs.mdir_bits)); // assert mroot still has no entries assert(lfs.mroot.rbyd.weight == 0); // assert that our entries are still in the mtree - lfsr_mtree_lookup(&lfs, &lfs.mtree, (0 << lfs.mdir_bits)+1, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (0 << lfs.mdir_bits)+1, &mdir) => 0; assert(mdir.rbyd.weight == 2); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; @@ -801,14 +800,14 @@ code = ''' buffer[0] = '\0'; memset(buffer+1, 'a', SIZE-1); lfsr_mdir_t mdir; - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF(buffer, SIZE)))) => 0; assert(mdir.rbyd.weight == 2); memset(buffer+1, 'b', SIZE-1); - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF(buffer, SIZE)))) => 0; @@ -816,7 +815,7 @@ code = ''' // remove an entry, forcing the mdir to be dropped memset(buffer+1, 'b', SIZE-1); - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => 0; // force mdir to compact while we're removing lfs.mroot.rbyd.eoff = -1; @@ -826,12 +825,12 @@ code = ''' assert(mdir.rbyd.weight == 2); // assert split/drop worked out - assert(lfsr_mtree_weight(&lfs.mtree) == (1 << lfs.mdir_bits)); + assert(lfsr_mtree_weight_(&lfs.mtree) == (1 << lfs.mdir_bits)); // assert mroot still has no entries assert(lfs.mroot.rbyd.weight == 0); // assert that our entries are still in the mtree - lfsr_mtree_lookup(&lfs, &lfs.mtree, (0 << lfs.mdir_bits)+1, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (0 << lfs.mdir_bits)+1, &mdir) => 0; assert(mdir.rbyd.weight == 2); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; @@ -842,12 +841,12 @@ code = ''' lfsr_mount(&lfs, CFG) => 0; // assert mdir was dropped - assert(lfsr_mtree_weight(&lfs.mtree) == (1 << lfs.mdir_bits)); + assert(lfsr_mtree_weight_(&lfs.mtree) == (1 << lfs.mdir_bits)); // assert mroot still has no entries assert(lfs.mroot.rbyd.weight == 0); // assert that our entries are still in the mtree - lfsr_mtree_lookup(&lfs, &lfs.mtree, (0 << lfs.mdir_bits)+1, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (0 << lfs.mdir_bits)+1, &mdir) => 0; assert(mdir.rbyd.weight == 2); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; @@ -872,14 +871,14 @@ code = ''' buffer[0] = '\0'; memset(buffer+1, 'a', SIZE-1); lfsr_mdir_t mdir; - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF(buffer, SIZE)))) => 0; assert(mdir.rbyd.weight == 2); memset(buffer+1, 'b', SIZE-1); - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF(buffer, SIZE)))) => 0; @@ -891,13 +890,13 @@ code = ''' LFSR_ATTR(LFSR_TAG_UATTR(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(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits)); // assert mroot now has no entries assert(lfs.mroot.rbyd.weight == 0); // now add another large entry to an mdir, forcing a split memset(buffer+1, 'd', SIZE-1); - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF(buffer, SIZE)))) => 0; @@ -905,7 +904,7 @@ code = ''' // remove an entry, forcing the mdir to be dropped memset(buffer+1, 'b', SIZE-1); - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => 0; // force mdir to compact while we're removing mdir.rbyd.eoff = -1; @@ -914,12 +913,12 @@ code = ''' assert(mdir.rbyd.weight == 1); // assert split/drop worked out - assert(lfsr_mtree_weight(&lfs.mtree) == (2 << lfs.mdir_bits)); + assert(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits)); // assert mroot still has no entries assert(lfs.mroot.rbyd.weight == 0); // assert that our entries are still in the mtree - lfsr_mtree_lookup(&lfs, &lfs.mtree, (0 << lfs.mdir_bits)+1, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (0 << lfs.mdir_bits)+1, &mdir) => 0; assert(mdir.rbyd.weight == 2); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; @@ -929,7 +928,7 @@ code = ''' lfsr_data_read(&lfs, &data, buffer, 1) => 1; assert(buffer[0] == 'c'); - lfsr_mtree_lookup(&lfs, &lfs.mtree, (1 << lfs.mdir_bits)+0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (1 << lfs.mdir_bits)+0, &mdir) => 0; assert(mdir.rbyd.weight == 1); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; @@ -940,12 +939,12 @@ code = ''' lfsr_mount(&lfs, CFG) => 0; // assert split/drop worked out - assert(lfsr_mtree_weight(&lfs.mtree) == (2 << lfs.mdir_bits)); + assert(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits)); // assert mroot still has no entries assert(lfs.mroot.rbyd.weight == 0); // assert that our entries are still in the mtree - lfsr_mtree_lookup(&lfs, &lfs.mtree, (0 << lfs.mdir_bits)+1, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (0 << lfs.mdir_bits)+1, &mdir) => 0; assert(mdir.rbyd.weight == 2); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; @@ -955,7 +954,7 @@ code = ''' lfsr_data_read(&lfs, &data, buffer, 1) => 1; assert(buffer[0] == 'c'); - lfsr_mtree_lookup(&lfs, &lfs.mtree, (1 << lfs.mdir_bits)+0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (1 << lfs.mdir_bits)+0, &mdir) => 0; assert(mdir.rbyd.weight == 1); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; @@ -980,14 +979,14 @@ code = ''' buffer[0] = '\0'; memset(buffer+1, 'a', SIZE-1); lfsr_mdir_t mdir; - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF(buffer, SIZE)))) => 0; assert(mdir.rbyd.weight == 2); memset(buffer+1, 'b', SIZE-1); - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF(buffer, SIZE)))) => 0; @@ -999,13 +998,13 @@ code = ''' LFSR_ATTR(LFSR_TAG_UATTR(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(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits)); // assert mroot now has no entries assert(lfs.mroot.rbyd.weight == 0); // now add another large entry to an mdir, forcing a split memset(buffer+1, 'd', SIZE-1); - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF(buffer, SIZE)))) => 0; @@ -1013,7 +1012,7 @@ code = ''' // remove an entry, forcing the mdir to be dropped memset(buffer+1, 'd', SIZE-1); - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => 0; // force mdir to compact while we're removing mdir.rbyd.eoff = -1; @@ -1022,18 +1021,18 @@ code = ''' assert(mdir.rbyd.weight == 1); // assert split/drop worked out - assert(lfsr_mtree_weight(&lfs.mtree) == (2 << lfs.mdir_bits)); + assert(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits)); // assert mroot still has no entries assert(lfs.mroot.rbyd.weight == 0); // assert that our entries are still in the mtree - lfsr_mtree_lookup(&lfs, &lfs.mtree, (0 << lfs.mdir_bits)+1, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (0 << lfs.mdir_bits)+1, &mdir) => 0; assert(mdir.rbyd.weight == 2); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; assert(buffer[1] == 'a'); - lfsr_mtree_lookup(&lfs, &lfs.mtree, (1 << lfs.mdir_bits)+0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (1 << lfs.mdir_bits)+0, &mdir) => 0; assert(mdir.rbyd.weight == 1); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; @@ -1048,18 +1047,18 @@ code = ''' lfsr_mount(&lfs, CFG) => 0; // assert split/drop worked out - assert(lfsr_mtree_weight(&lfs.mtree) == (2 << lfs.mdir_bits)); + assert(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits)); // assert mroot still has no entries assert(lfs.mroot.rbyd.weight == 0); // assert that our entries are still in the mtree - lfsr_mtree_lookup(&lfs, &lfs.mtree, (0 << lfs.mdir_bits)+1, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (0 << lfs.mdir_bits)+1, &mdir) => 0; assert(mdir.rbyd.weight == 2); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; assert(buffer[1] == 'a'); - lfsr_mtree_lookup(&lfs, &lfs.mtree, (1 << lfs.mdir_bits)+0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (1 << lfs.mdir_bits)+0, &mdir) => 0; assert(mdir.rbyd.weight == 1); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; @@ -1106,8 +1105,7 @@ code = ''' // update mtree lfsr_mdir_t mdir; - int err = lfsr_mtree_namelookup(&lfs, &lfs.mtree, - 0, (const char*)name+1, 3, + int err = lfsr_mtree_namelookup(&lfs, 0, (const char*)name+1, 3, &mdir, NULL, NULL); assert(!err || err == LFS_ERR_NOENT); if (!err) { @@ -1135,8 +1133,7 @@ code = ''' // update mtree lfsr_mdir_t mdir; - int err = lfsr_mtree_namelookup(&lfs, &lfs.mtree, - 0, (const char*)name+1, 3, + int err = lfsr_mtree_namelookup(&lfs, 0, (const char*)name+1, 3, &mdir, NULL, NULL); assert(!err || err == LFS_ERR_NOENT); if (err == LFS_ERR_NOENT) { @@ -1154,7 +1151,7 @@ code = ''' // try looking up each entry lfsr_mdir_t mdir; - lfsr_mtree_lookup(&lfs, &lfs.mtree, 0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, 0, &mdir) => 0; lfsr_data_t data; uint8_t buffer[256]; lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_BOOKMARK, &data) => 0; @@ -1164,13 +1161,13 @@ code = ''' name[0] = '\0'; sprintf(name+1, "%03x", i); if (sim[i]) { - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)name+1, 3, + lfsr_mtree_namelookup(&lfs, 0, (const char*)name+1, 3, &mdir, NULL, NULL) => 0; lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, sizeof(buffer)) => 4; assert(memcmp(buffer, name, 4) == 0); } else { - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)name+1, 3, + lfsr_mtree_namelookup(&lfs, 0, (const char*)name+1, 3, &mdir, NULL, NULL) => LFS_ERR_NOENT; } } @@ -1180,7 +1177,7 @@ code = ''' lfsr_mount(&lfs, CFG) => 0; // try looking up each entry - lfsr_mtree_lookup(&lfs, &lfs.mtree, 0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, 0, &mdir) => 0; lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_BOOKMARK, &data) => 0; lfsr_data_read(&lfs, &data, buffer, sizeof(buffer)) => 1; for (lfs_size_t i = 0; i < N; i++) { @@ -1188,13 +1185,13 @@ code = ''' name[0] = '\0'; sprintf(name+1, "%03x", i); if (sim[i]) { - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)name+1, 3, + lfsr_mtree_namelookup(&lfs, 0, (const char*)name+1, 3, &mdir, NULL, NULL) => 0; lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, sizeof(buffer)) => 4; assert(memcmp(buffer, name, 4) == 0); } else { - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)name+1, 3, + lfsr_mtree_namelookup(&lfs, 0, (const char*)name+1, 3, &mdir, NULL, NULL) => LFS_ERR_NOENT; } } @@ -1227,7 +1224,7 @@ code = ''' memset(buffer, 'b', SIZE); lfsr_mdir_t mdir; - lfsr_mtree_lookup(&lfs, &lfs.mtree, 0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, 0, &mdir) => 0; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_UATTR(2), 0, LFSR_DATA_BUF(buffer, SIZE)))) => 0; @@ -1237,12 +1234,12 @@ code = ''' LFSR_ATTR(LFSR_TAG_UATTR(3), 0, LFSR_DATA_BUF("c", 1)))) => 0; // assert mdirs were unininlined - assert(lfsr_mtree_weight(&lfs.mtree) == (1 << lfs.mdir_bits)); + assert(lfsr_mtree_weight_(&lfs.mtree) == (1 << lfs.mdir_bits)); // assert mroot now has no entries assert(lfs.mroot.rbyd.weight == 0); // force mdir to compact twice, this should relocate - lfsr_mtree_lookup(&lfs, &lfs.mtree, 0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, 0, &mdir) => 0; lfsr_mdir_t old_mdir = mdir; mdir.rbyd.eoff = -1; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( @@ -1254,7 +1251,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(lfsr_mtree_weight_(&lfs.mtree) == (1 << lfs.mdir_bits)); // assert mroot now has no entries assert(lfs.mroot.rbyd.weight == 0); @@ -1263,7 +1260,7 @@ code = ''' lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; assert(buffer[0] == 'a'); - lfsr_mtree_lookup(&lfs, &lfs.mtree, 0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, 0, &mdir) => 0; assert(mdir.rbyd.weight == 1); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_UATTR(2), &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; @@ -1273,7 +1270,7 @@ code = ''' lfsr_data_read(&lfs, &data, buffer, 1) => 1; assert(buffer[0] == 'c'); - lfsr_mtree_lookup(&lfs, &lfs.mtree, 0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, 0, &mdir) => 0; assert(mdir.rbyd.weight == 1); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_UATTR(4), &data) => 0; lfsr_data_read(&lfs, &data, buffer, 1) => 1; @@ -1288,7 +1285,7 @@ code = ''' lfsr_mount(&lfs, CFG) => 0; // assert mdirs were unininlined - assert(lfsr_mtree_weight(&lfs.mtree) == (1 << lfs.mdir_bits)); + assert(lfsr_mtree_weight_(&lfs.mtree) == (1 << lfs.mdir_bits)); // assert mroot now has no entries assert(lfs.mroot.rbyd.weight == 0); @@ -1297,7 +1294,7 @@ code = ''' lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; assert(buffer[0] == 'a'); - lfsr_mtree_lookup(&lfs, &lfs.mtree, 0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, 0, &mdir) => 0; assert(mdir.rbyd.weight == 1); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_UATTR(2), &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; @@ -1307,7 +1304,7 @@ code = ''' lfsr_data_read(&lfs, &data, buffer, 1) => 1; assert(buffer[0] == 'c'); - lfsr_mtree_lookup(&lfs, &lfs.mtree, 0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, 0, &mdir) => 0; assert(mdir.rbyd.weight == 1); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_UATTR(4), &data) => 0; lfsr_data_read(&lfs, &data, buffer, 1) => 1; @@ -1338,14 +1335,14 @@ code = ''' buffer[0] = '\0'; memset(buffer+1, 'a', SIZE-1); lfsr_mdir_t mdir; - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF(buffer, SIZE)))) => 0; assert(mdir.rbyd.weight == 2); memset(buffer+1, 'b', SIZE-1); - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF(buffer, SIZE)))) => 0; @@ -1357,13 +1354,13 @@ code = ''' LFSR_ATTR(LFSR_TAG_UATTR(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(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits)); // assert mroot now has no entries assert(lfs.mroot.rbyd.weight == 0); // force mdir to compact twice, this should relocate memset(buffer+1, 'a', SIZE-1); - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => 0; lfsr_mdir_t old_mdir = mdir; mdir.rbyd.eoff = -1; @@ -1376,18 +1373,18 @@ 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(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits)); // assert mroot now has no entries assert(lfs.mroot.rbyd.weight == 0); // assert that our entries are still in the mtree - lfsr_mtree_lookup(&lfs, &lfs.mtree, (0 << lfs.mdir_bits)+1, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (0 << lfs.mdir_bits)+1, &mdir) => 0; assert(mdir.rbyd.weight == 2); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; assert(buffer[1] == 'a'); - lfsr_mtree_lookup(&lfs, &lfs.mtree, (1 << lfs.mdir_bits)+0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (1 << lfs.mdir_bits)+0, &mdir) => 0; assert(mdir.rbyd.weight == 1); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; @@ -1397,7 +1394,7 @@ code = ''' lfsr_data_read(&lfs, &data, buffer, 1) => 1; assert(buffer[0] == 'c'); - lfsr_mtree_lookup(&lfs, &lfs.mtree, (0 << lfs.mdir_bits)+1, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (0 << lfs.mdir_bits)+1, &mdir) => 0; assert(mdir.rbyd.weight == 2); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_UATTR(2), &data) => 0; lfsr_data_read(&lfs, &data, buffer, 1) => 1; @@ -1412,18 +1409,18 @@ code = ''' lfsr_mount(&lfs, CFG) => 0; // assert mdirs were unininlined and split - assert(lfsr_mtree_weight(&lfs.mtree) == (2 << lfs.mdir_bits)); + assert(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits)); // assert mroot now has no entries assert(lfs.mroot.rbyd.weight == 0); // assert that our entries are still in the mtree - lfsr_mtree_lookup(&lfs, &lfs.mtree, (0 << lfs.mdir_bits)+1, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (0 << lfs.mdir_bits)+1, &mdir) => 0; assert(mdir.rbyd.weight == 2); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; assert(buffer[1] == 'a'); - lfsr_mtree_lookup(&lfs, &lfs.mtree, (1 << lfs.mdir_bits)+0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (1 << lfs.mdir_bits)+0, &mdir) => 0; assert(mdir.rbyd.weight == 1); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; @@ -1433,7 +1430,7 @@ code = ''' lfsr_data_read(&lfs, &data, buffer, 1) => 1; assert(buffer[0] == 'c'); - lfsr_mtree_lookup(&lfs, &lfs.mtree, (0 << lfs.mdir_bits)+1, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (0 << lfs.mdir_bits)+1, &mdir) => 0; assert(mdir.rbyd.weight == 2); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_UATTR(2), &data) => 0; lfsr_data_read(&lfs, &data, buffer, 1) => 1; @@ -1464,14 +1461,14 @@ code = ''' buffer[0] = '\0'; memset(buffer+1, 'a', SIZE-1); lfsr_mdir_t mdir; - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF(buffer, SIZE)))) => 0; assert(mdir.rbyd.weight == 2); memset(buffer+1, 'b', SIZE-1); - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF(buffer, SIZE)))) => 0; @@ -1483,13 +1480,13 @@ code = ''' LFSR_ATTR(LFSR_TAG_UATTR(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(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits)); // assert mroot now has no entries assert(lfs.mroot.rbyd.weight == 0); // force mdir to compact twice, this should relocate memset(buffer+1, 'b', SIZE-1); - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => 0; lfsr_mdir_t old_mdir = mdir; mdir.rbyd.eoff = -1; @@ -1502,18 +1499,18 @@ 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(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits)); // assert mroot now has no entries assert(lfs.mroot.rbyd.weight == 0); // assert that our entries are still in the mtree - lfsr_mtree_lookup(&lfs, &lfs.mtree, (0 << lfs.mdir_bits)+1, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (0 << lfs.mdir_bits)+1, &mdir) => 0; assert(mdir.rbyd.weight == 2); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; assert(buffer[1] == 'a'); - lfsr_mtree_lookup(&lfs, &lfs.mtree, (1 << lfs.mdir_bits)+0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (1 << lfs.mdir_bits)+0, &mdir) => 0; assert(mdir.rbyd.weight == 1); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; @@ -1523,7 +1520,7 @@ code = ''' lfsr_data_read(&lfs, &data, buffer, 1) => 1; assert(buffer[0] == 'c'); - lfsr_mtree_lookup(&lfs, &lfs.mtree, (1 << lfs.mdir_bits)+0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (1 << lfs.mdir_bits)+0, &mdir) => 0; assert(mdir.rbyd.weight == 1); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_UATTR(2), &data) => 0; lfsr_data_read(&lfs, &data, buffer, 1) => 1; @@ -1538,18 +1535,18 @@ code = ''' lfsr_mount(&lfs, CFG) => 0; // assert mdirs were unininlined and split - assert(lfsr_mtree_weight(&lfs.mtree) == (2 << lfs.mdir_bits)); + assert(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits)); // assert mroot now has no entries assert(lfs.mroot.rbyd.weight == 0); // assert that our entries are still in the mtree - lfsr_mtree_lookup(&lfs, &lfs.mtree, (0 << lfs.mdir_bits)+1, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (0 << lfs.mdir_bits)+1, &mdir) => 0; assert(mdir.rbyd.weight == 2); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; assert(buffer[1] == 'a'); - lfsr_mtree_lookup(&lfs, &lfs.mtree, (1 << lfs.mdir_bits)+0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (1 << lfs.mdir_bits)+0, &mdir) => 0; assert(mdir.rbyd.weight == 1); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; @@ -1559,7 +1556,7 @@ code = ''' lfsr_data_read(&lfs, &data, buffer, 1) => 1; assert(buffer[0] == 'c'); - lfsr_mtree_lookup(&lfs, &lfs.mtree, (1 << lfs.mdir_bits)+0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (1 << lfs.mdir_bits)+0, &mdir) => 0; assert(mdir.rbyd.weight == 1); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_UATTR(2), &data) => 0; lfsr_data_read(&lfs, &data, buffer, 1) => 1; @@ -1590,7 +1587,7 @@ code = ''' buffer[0] = '\0'; memset(buffer+1, 'a', SIZE-1); lfsr_mdir_t mdir; - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF(buffer, SIZE)))) => 0; @@ -1608,7 +1605,7 @@ code = ''' assert(lfsr_mdir_cmp(&old_mroot, &lfs.mroot) != 0); // assert that our entry is still in the mroot - lfsr_mtree_lookup(&lfs, &lfs.mtree, (0 << lfs.mdir_bits)+1, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (0 << lfs.mdir_bits)+1, &mdir) => 0; assert(mdir.rbyd.weight == 2); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; @@ -1627,7 +1624,7 @@ code = ''' lfsr_mount(&lfs, CFG) => 0; // assert that our attr is still in the mroot - lfsr_mtree_lookup(&lfs, &lfs.mtree, (0 << lfs.mdir_bits)+1, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (0 << lfs.mdir_bits)+1, &mdir) => 0; assert(mdir.rbyd.weight == 2); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; @@ -1665,7 +1662,7 @@ code = ''' buffer[0] = '\0'; memset(buffer+1, 'a', SIZE-1); lfsr_mdir_t mdir; - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF(buffer, SIZE)))) => 0; @@ -1701,7 +1698,7 @@ code = ''' assert(lfsr_mdir_cmp(&old_mroot, &lfs.mroot) != 0); // assert that our attr is still in the mroot - lfsr_mtree_lookup(&lfs, &lfs.mtree, (0 << lfs.mdir_bits)+1, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (0 << lfs.mdir_bits)+1, &mdir) => 0; assert(mdir.rbyd.weight == 2); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; @@ -1736,7 +1733,7 @@ code = ''' lfsr_mount(&lfs, CFG) => 0; // assert that our attr is still in the mroot - lfsr_mtree_lookup(&lfs, &lfs.mtree, (0 << lfs.mdir_bits)+1, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (0 << lfs.mdir_bits)+1, &mdir) => 0; assert(mdir.rbyd.weight == 2); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; @@ -1787,7 +1784,7 @@ code = ''' buffer[0] = '\0'; memset(buffer+1, 'a', SIZE-1); lfsr_mdir_t mdir; - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF(buffer, SIZE)))) => 0; @@ -1816,7 +1813,7 @@ code = ''' assert(lfsr_mdir_cmp(&old_mroot, &lfs.mroot) != 0); // assert that our entry is still in the mroot - lfsr_mtree_lookup(&lfs, &lfs.mtree, (0 << lfs.mdir_bits)+1, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (0 << lfs.mdir_bits)+1, &mdir) => 0; assert(mdir.rbyd.weight == 2); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; @@ -1843,7 +1840,7 @@ code = ''' lfsr_mount(&lfs, CFG) => 0; // assert that our attr is still in the mroot - lfsr_mtree_lookup(&lfs, &lfs.mtree, (0 << lfs.mdir_bits)+1, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (0 << lfs.mdir_bits)+1, &mdir) => 0; assert(mdir.rbyd.weight == 2); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; @@ -1886,14 +1883,14 @@ code = ''' buffer[0] = '\0'; memset(buffer+1, 'a', SIZE-1); lfsr_mdir_t mdir; - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF(buffer, SIZE)))) => 0; assert(mdir.rbyd.weight == 2); memset(buffer+1, 'b', SIZE-1); - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF(buffer, SIZE)))) => 0; @@ -1905,7 +1902,7 @@ code = ''' LFSR_ATTR(LFSR_TAG_UATTR(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(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits)); // assert mroot now has no entries assert(lfs.mroot.rbyd.weight == 0); @@ -1914,7 +1911,7 @@ code = ''' lfsr_mdir_t old_mroot = lfs.mroot; // force mdir to compact twice, this should relocate memset(buffer+1, 'b', SIZE-1); - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => 0; lfsr_mdir_t old_mdir = mdir; mdir.rbyd.eoff = -1; @@ -1929,18 +1926,18 @@ 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(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits)); // assert mroot now has no entries assert(lfs.mroot.rbyd.weight == 0); // assert that our entries are still in the mtree - lfsr_mtree_lookup(&lfs, &lfs.mtree, (0 << lfs.mdir_bits)+1, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (0 << lfs.mdir_bits)+1, &mdir) => 0; assert(mdir.rbyd.weight == 2); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; assert(buffer[1] == 'a'); - lfsr_mtree_lookup(&lfs, &lfs.mtree, (1 << lfs.mdir_bits)+0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (1 << lfs.mdir_bits)+0, &mdir) => 0; assert(mdir.rbyd.weight == 1); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; @@ -1950,7 +1947,7 @@ code = ''' lfsr_data_read(&lfs, &data, buffer, 1) => 1; assert(buffer[0] == 'c'); - lfsr_mtree_lookup(&lfs, &lfs.mtree, (1 << lfs.mdir_bits)+0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (1 << lfs.mdir_bits)+0, &mdir) => 0; assert(mdir.rbyd.weight == 1); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_UATTR(2), &data) => 0; lfsr_data_read(&lfs, &data, buffer, 1) => 1; @@ -1965,18 +1962,18 @@ code = ''' lfsr_mount(&lfs, CFG) => 0; // assert mdirs were unininlined and split - assert(lfsr_mtree_weight(&lfs.mtree) == (2 << lfs.mdir_bits)); + assert(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits)); // assert mroot now has no entries assert(lfs.mroot.rbyd.weight == 0); // assert that our entries are still in the mtree - lfsr_mtree_lookup(&lfs, &lfs.mtree, (0 << lfs.mdir_bits)+1, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (0 << lfs.mdir_bits)+1, &mdir) => 0; assert(mdir.rbyd.weight == 2); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; assert(buffer[1] == 'a'); - lfsr_mtree_lookup(&lfs, &lfs.mtree, (1 << lfs.mdir_bits)+0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (1 << lfs.mdir_bits)+0, &mdir) => 0; assert(mdir.rbyd.weight == 1); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; @@ -1986,7 +1983,7 @@ code = ''' lfsr_data_read(&lfs, &data, buffer, 1) => 1; assert(buffer[0] == 'c'); - lfsr_mtree_lookup(&lfs, &lfs.mtree, (1 << lfs.mdir_bits)+0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (1 << lfs.mdir_bits)+0, &mdir) => 0; assert(mdir.rbyd.weight == 1); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_UATTR(2), &data) => 0; lfsr_data_read(&lfs, &data, buffer, 1) => 1; @@ -2017,14 +2014,14 @@ code = ''' buffer[0] = '\0'; memset(buffer+1, 'a', SIZE-1); lfsr_mdir_t mdir; - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF(buffer, SIZE)))) => 0; assert(mdir.rbyd.weight == 2); memset(buffer+1, 'b', SIZE-1); - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF(buffer, SIZE)))) => 0; @@ -2036,13 +2033,13 @@ code = ''' LFSR_ATTR(LFSR_TAG_UATTR(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(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits)); // assert mroot now has no entries assert(lfs.mroot.rbyd.weight == 0); // now add another large entry to an mdir, forcing a split memset(buffer+1, 'd', SIZE-1); - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF(buffer, SIZE)))) => 0; @@ -2065,18 +2062,18 @@ 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(lfsr_mtree_weight_(&lfs.mtree) == (3 << lfs.mdir_bits)); // assert mroot still has no entries assert(lfs.mroot.rbyd.weight == 0); // assert that our entries are still in the mtree - lfsr_mtree_lookup(&lfs, &lfs.mtree, (0 << lfs.mdir_bits)+1, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (0 << lfs.mdir_bits)+1, &mdir) => 0; assert(mdir.rbyd.weight == 2); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; assert(buffer[1] == 'a'); - lfsr_mtree_lookup(&lfs, &lfs.mtree, (1 << lfs.mdir_bits)+0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (1 << lfs.mdir_bits)+0, &mdir) => 0; assert(mdir.rbyd.weight == 1); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; @@ -2086,7 +2083,7 @@ code = ''' lfsr_data_read(&lfs, &data, buffer, 1) => 1; assert(buffer[0] == 'c'); - lfsr_mtree_lookup(&lfs, &lfs.mtree, (2 << lfs.mdir_bits)+0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (2 << lfs.mdir_bits)+0, &mdir) => 0; assert(mdir.rbyd.weight == 1); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; @@ -2105,18 +2102,18 @@ code = ''' lfsr_mount(&lfs, CFG) => 0; // assert mdir was split correctly - assert(lfsr_mtree_weight(&lfs.mtree) == (3 << lfs.mdir_bits)); + assert(lfsr_mtree_weight_(&lfs.mtree) == (3 << lfs.mdir_bits)); // assert mroot still has no entries assert(lfs.mroot.rbyd.weight == 0); // assert that our entries are still in the mtree - lfsr_mtree_lookup(&lfs, &lfs.mtree, (0 << lfs.mdir_bits)+1, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (0 << lfs.mdir_bits)+1, &mdir) => 0; assert(mdir.rbyd.weight == 2); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; assert(buffer[1] == 'a'); - lfsr_mtree_lookup(&lfs, &lfs.mtree, (1 << lfs.mdir_bits)+0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (1 << lfs.mdir_bits)+0, &mdir) => 0; assert(mdir.rbyd.weight == 1); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; @@ -2126,7 +2123,7 @@ code = ''' lfsr_data_read(&lfs, &data, buffer, 1) => 1; assert(buffer[0] == 'c'); - lfsr_mtree_lookup(&lfs, &lfs.mtree, (2 << lfs.mdir_bits)+0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (2 << lfs.mdir_bits)+0, &mdir) => 0; assert(mdir.rbyd.weight == 1); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; @@ -2161,14 +2158,14 @@ code = ''' buffer[0] = '\0'; memset(buffer+1, 'a', SIZE-1); lfsr_mdir_t mdir; - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF(buffer, SIZE)))) => 0; assert(mdir.rbyd.weight == 2); memset(buffer+1, 'b', SIZE-1); - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF(buffer, SIZE)))) => 0; @@ -2180,7 +2177,7 @@ code = ''' LFSR_ATTR(LFSR_TAG_UATTR(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(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits)); // assert mroot now has no entries assert(lfs.mroot.rbyd.weight == 0); @@ -2189,7 +2186,7 @@ code = ''' lfsr_mdir_t old_mroot = lfs.mroot; // remove an entry, forcing the mdir to be dropped memset(buffer+1, 'b', SIZE-1); - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => 0; // force mdir to compact twice, this should relocate mdir.rbyd.eoff = -1; @@ -2204,12 +2201,12 @@ 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(lfsr_mtree_weight_(&lfs.mtree) == (1 << lfs.mdir_bits)); // assert mroot still has no entries assert(lfs.mroot.rbyd.weight == 0); // assert that our entries are still in the mtree - lfsr_mtree_lookup(&lfs, &lfs.mtree, (0 << lfs.mdir_bits)+1, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (0 << lfs.mdir_bits)+1, &mdir) => 0; assert(mdir.rbyd.weight == 2); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; @@ -2224,12 +2221,12 @@ code = ''' lfsr_mount(&lfs, CFG) => 0; // assert mdir was dropped - assert(lfsr_mtree_weight(&lfs.mtree) == (1 << lfs.mdir_bits)); + assert(lfsr_mtree_weight_(&lfs.mtree) == (1 << lfs.mdir_bits)); // assert mroot still has no entries assert(lfs.mroot.rbyd.weight == 0); // assert that our entries are still in the mtree - lfsr_mtree_lookup(&lfs, &lfs.mtree, (0 << lfs.mdir_bits)+1, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (0 << lfs.mdir_bits)+1, &mdir) => 0; assert(mdir.rbyd.weight == 2); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; @@ -2268,7 +2265,7 @@ code = ''' memset(buffer, 'b', SIZE); lfsr_mdir_t mdir; - lfsr_mtree_lookup(&lfs, &lfs.mtree, 0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, 0, &mdir) => 0; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_UATTR(2), 0, LFSR_DATA_BUF(buffer, SIZE)))) => 0; @@ -2281,7 +2278,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(lfsr_mtree_weight_(&lfs.mtree) == (1 << lfs.mdir_bits)); // assert mroot now has no entries assert(lfs.mroot.rbyd.weight == 0); @@ -2290,7 +2287,7 @@ code = ''' lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; assert(buffer[0] == 'a'); - lfsr_mtree_lookup(&lfs, &lfs.mtree, 0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, 0, &mdir) => 0; assert(mdir.rbyd.weight == 1); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_UATTR(2), &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; @@ -2305,7 +2302,7 @@ code = ''' lfsr_mount(&lfs, CFG) => 0; // assert mdirs were unininlined - assert(lfsr_mtree_weight(&lfs.mtree) == (1 << lfs.mdir_bits)); + assert(lfsr_mtree_weight_(&lfs.mtree) == (1 << lfs.mdir_bits)); // assert mroot now has no entries assert(lfs.mroot.rbyd.weight == 0); @@ -2314,7 +2311,7 @@ code = ''' lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; assert(buffer[0] == 'a'); - lfsr_mtree_lookup(&lfs, &lfs.mtree, 0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, 0, &mdir) => 0; assert(mdir.rbyd.weight == 1); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_UATTR(2), &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; @@ -2350,14 +2347,14 @@ code = ''' buffer[0] = '\0'; memset(buffer+1, 'a', SIZE-1); lfsr_mdir_t mdir; - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF(buffer, SIZE)))) => 0; assert(mdir.rbyd.weight == 2); memset(buffer+1, 'b', SIZE-1); - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF(buffer, SIZE)))) => 0; @@ -2372,18 +2369,18 @@ 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(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits)); // assert mroot now has no entries assert(lfs.mroot.rbyd.weight == 0); // assert that our entries are still in the mtree - lfsr_mtree_lookup(&lfs, &lfs.mtree, (0 << lfs.mdir_bits)+1, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (0 << lfs.mdir_bits)+1, &mdir) => 0; assert(mdir.rbyd.weight == 2); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; assert(buffer[1] == 'a'); - lfsr_mtree_lookup(&lfs, &lfs.mtree, (1 << lfs.mdir_bits)+0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (1 << lfs.mdir_bits)+0, &mdir) => 0; assert(mdir.rbyd.weight == 1); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; @@ -2398,18 +2395,18 @@ code = ''' lfsr_mount(&lfs, CFG) => 0; // assert mdirs were unininlined and split - assert(lfsr_mtree_weight(&lfs.mtree) == (2 << lfs.mdir_bits)); + assert(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits)); // assert mroot now has no entries assert(lfs.mroot.rbyd.weight == 0); // assert that our entries are still in the mtree - lfsr_mtree_lookup(&lfs, &lfs.mtree, (0 << lfs.mdir_bits)+1, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (0 << lfs.mdir_bits)+1, &mdir) => 0; assert(mdir.rbyd.weight == 2); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; assert(buffer[1] == 'a'); - lfsr_mtree_lookup(&lfs, &lfs.mtree, (1 << lfs.mdir_bits)+0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (1 << lfs.mdir_bits)+0, &mdir) => 0; assert(mdir.rbyd.weight == 1); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; @@ -2458,8 +2455,7 @@ code = ''' // update mtree lfsr_mdir_t mdir; - int err = lfsr_mtree_namelookup(&lfs, &lfs.mtree, - 0, (const char*)name+1, 3, + int err = lfsr_mtree_namelookup(&lfs, 0, (const char*)name+1, 3, &mdir, NULL, NULL); assert(!err || err == LFS_ERR_NOENT); if (!err) { @@ -2486,8 +2482,7 @@ code = ''' // update mtree lfsr_mdir_t mdir; - int err = lfsr_mtree_namelookup(&lfs, &lfs.mtree, - 0, (const char*)name+1, 3, + int err = lfsr_mtree_namelookup(&lfs, 0, (const char*)name+1, 3, &mdir, NULL, NULL); assert(!err || err == LFS_ERR_NOENT); if (err == LFS_ERR_NOENT) { @@ -2517,8 +2512,7 @@ code = ''' // update mtree lfsr_mdir_t mdir; - int err = lfsr_mtree_namelookup(&lfs, &lfs.mtree, - 0, (const char*)name+1, 3, + int err = lfsr_mtree_namelookup(&lfs, 0, (const char*)name+1, 3, &mdir, NULL, NULL); assert(!err || err == LFS_ERR_NOENT); if (err == LFS_ERR_NOENT) { @@ -2536,7 +2530,7 @@ code = ''' // try looking up each entry lfsr_mdir_t mdir; - lfsr_mtree_lookup(&lfs, &lfs.mtree, 0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, 0, &mdir) => 0; lfsr_data_t data; uint8_t buffer[256]; lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_BOOKMARK, &data) => 0; @@ -2546,13 +2540,13 @@ code = ''' name[0] = '\0'; sprintf(name+1, "%03x", i); if (sim[i]) { - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)name+1, 3, + lfsr_mtree_namelookup(&lfs, 0, (const char*)name+1, 3, &mdir, NULL, NULL) => 0; lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, sizeof(buffer)) => 4; assert(memcmp(buffer, name, 4) == 0); } else { - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)name+1, 3, + lfsr_mtree_namelookup(&lfs, 0, (const char*)name+1, 3, &mdir, NULL, NULL) => LFS_ERR_NOENT; } } @@ -2562,7 +2556,7 @@ code = ''' lfsr_mount(&lfs, CFG) => 0; // try looking up each entry - lfsr_mtree_lookup(&lfs, &lfs.mtree, 0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, 0, &mdir) => 0; lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_BOOKMARK, &data) => 0; lfsr_data_read(&lfs, &data, buffer, sizeof(buffer)) => 1; for (lfs_size_t i = 0; i < N; i++) { @@ -2570,13 +2564,13 @@ code = ''' name[0] = '\0'; sprintf(name+1, "%03x", i); if (sim[i]) { - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)name+1, 3, + lfsr_mtree_namelookup(&lfs, 0, (const char*)name+1, 3, &mdir, NULL, NULL) => 0; lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, sizeof(buffer)) => 4; assert(memcmp(buffer, name, 4) == 0); } else { - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)name+1, 3, + lfsr_mtree_namelookup(&lfs, 0, (const char*)name+1, 3, &mdir, NULL, NULL) => LFS_ERR_NOENT; } } @@ -2597,7 +2591,7 @@ code = ''' // setup our neighbors lfsr_omdir_t left = {.type=0}; - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, "a", 1, + lfsr_mtree_namelookup(&lfs, 0, "a", 1, &left.mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &left.mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF("\0a", 2)))) => 0; @@ -2605,7 +2599,7 @@ code = ''' lfsr_opened_add(&lfs, &left); lfsr_omdir_t right = {.type=0}; - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, "c", 1, + lfsr_mtree_namelookup(&lfs, 0, "c", 1, &right.mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &right.mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF("\0c", 2)))) => 0; @@ -2614,7 +2608,7 @@ code = ''' // insert a new entry, this should update our neighbors lfsr_mdir_t mdir; - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, "b", 1, + lfsr_mtree_namelookup(&lfs, 0, "b", 1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF("\0b", 2)))) => 0; @@ -2628,13 +2622,13 @@ code = ''' assert(buffer[1] == 'b'); // assert that our neighbors were updated correctly - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, "a", 1, + lfsr_mtree_namelookup(&lfs, 0, "a", 1, &mdir, NULL, NULL) => 0; assert(left.mdir.mid == mdir.mid); assert(lfsr_mdir_cmp(&left.mdir, &mdir) == 0); assert(left.mdir.rbyd.trunk == mdir.rbyd.trunk); assert(left.mdir.rbyd.cksum == mdir.rbyd.cksum); - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, "c", 1, + lfsr_mtree_namelookup(&lfs, 0, "c", 1, &mdir, NULL, NULL) => 0; assert(right.mdir.mid == mdir.mid); assert(lfsr_mdir_cmp(&right.mdir, &mdir) == 0); @@ -2656,7 +2650,7 @@ code = ''' // setup our neighbors lfsr_omdir_t left = {.type=0}; - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, "a", 1, + lfsr_mtree_namelookup(&lfs, 0, "a", 1, &left.mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &left.mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF("\0a", 2)))) => 0; @@ -2664,7 +2658,7 @@ code = ''' lfsr_opened_add(&lfs, &left); lfsr_omdir_t right = {.type=0}; - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, "b", 1, + lfsr_mtree_namelookup(&lfs, 0, "b", 1, &right.mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &right.mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF("\0b", 2)))) => 0; @@ -2673,18 +2667,18 @@ code = ''' // try removing left neighbor lfsr_mdir_t mdir; - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, "a", 1, + lfsr_mtree_namelookup(&lfs, 0, "a", 1, &mdir, NULL, NULL) => 0; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_RM, -1, LFSR_DATA_NULL()))) => 0; assert(mdir.rbyd.weight == 2); // assert neighbor was removed - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, "a", 1, + lfsr_mtree_namelookup(&lfs, 0, "a", 1, &mdir, NULL, NULL) => LFS_ERR_NOENT; // assert that our neighbors were updated correctly - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, "b", 1, + lfsr_mtree_namelookup(&lfs, 0, "b", 1, &mdir, NULL, NULL) => 0; assert(right.mdir.mid == mdir.mid); assert(lfsr_mdir_cmp(&right.mdir, &mdir) == 0); @@ -2706,7 +2700,7 @@ code = ''' // setup our neighbors lfsr_omdir_t left = {.type=0}; - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, "a", 1, + lfsr_mtree_namelookup(&lfs, 0, "a", 1, &left.mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &left.mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF("\0a", 2)))) => 0; @@ -2714,7 +2708,7 @@ code = ''' lfsr_opened_add(&lfs, &left); lfsr_omdir_t right = {.type=0}; - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, "b", 1, + lfsr_mtree_namelookup(&lfs, 0, "b", 1, &right.mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &right.mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF("\0b", 2)))) => 0; @@ -2723,18 +2717,18 @@ code = ''' // try removing right neighbor lfsr_mdir_t mdir; - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, "b", 1, + lfsr_mtree_namelookup(&lfs, 0, "b", 1, &mdir, NULL, NULL) => 0; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_RM, -1, LFSR_DATA_NULL()))) => 0; assert(mdir.rbyd.weight == 2); // assert neighbor was removed - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, "b", 1, + lfsr_mtree_namelookup(&lfs, 0, "b", 1, &mdir, NULL, NULL) => LFS_ERR_NOENT; // assert that our neighbors were updated correctly - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, "a", 1, + lfsr_mtree_namelookup(&lfs, 0, "a", 1, &mdir, NULL, NULL) => 0; assert(left.mdir.mid == mdir.mid); assert(lfsr_mdir_cmp(&left.mdir, &mdir) == 0); @@ -2758,7 +2752,7 @@ code = ''' // setup our neighbors lfsr_omdir_t left = {.type=0}; - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, "a", 1, + lfsr_mtree_namelookup(&lfs, 0, "a", 1, &left.mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &left.mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF("\0a", 2)))) => 0; @@ -2766,7 +2760,7 @@ code = ''' lfsr_opened_add(&lfs, &left); lfsr_omdir_t right = {.type=0}; - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, "d", 1, + lfsr_mtree_namelookup(&lfs, 0, "d", 1, &right.mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &right.mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF("\0d", 2)))) => 0; @@ -2778,14 +2772,14 @@ code = ''' buffer[0] = '\0'; memset(buffer+1, 'b', SIZE-1); lfsr_mdir_t mdir; - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF(buffer, SIZE)))) => 0; assert(mdir.rbyd.weight == 4); memset(buffer+1, 'c', SIZE-1); - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF(buffer, SIZE)))) => 0; @@ -2796,18 +2790,18 @@ 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(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits)); // assert mroot now has no entries assert(lfs.mroot.rbyd.weight == 0); // assert that our neighbors were updated correctly - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, "a", 1, + lfsr_mtree_namelookup(&lfs, 0, "a", 1, &mdir, NULL, NULL) => 0; assert(left.mdir.mid == mdir.mid); assert(lfsr_mdir_cmp(&left.mdir, &mdir) == 0); assert(left.mdir.rbyd.trunk == mdir.rbyd.trunk); assert(left.mdir.rbyd.cksum == mdir.rbyd.cksum); - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, "d", 1, + lfsr_mtree_namelookup(&lfs, 0, "d", 1, &mdir, NULL, NULL) => 0; assert(right.mdir.mid == mdir.mid); assert(lfsr_mdir_cmp(&right.mdir, &mdir) == 0); @@ -2831,7 +2825,7 @@ code = ''' // setup our neighbors lfsr_omdir_t left = {.type=0}; - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, "a", 1, + lfsr_mtree_namelookup(&lfs, 0, "a", 1, &left.mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &left.mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF("\0a", 2)))) => 0; @@ -2839,7 +2833,7 @@ code = ''' lfsr_opened_add(&lfs, &left); lfsr_omdir_t right = {.type=0}; - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, "e", 1, + lfsr_mtree_namelookup(&lfs, 0, "e", 1, &right.mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &right.mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF("\0e", 2)))) => 0; @@ -2851,14 +2845,14 @@ code = ''' buffer[0] = '\0'; memset(buffer+1, 'b', SIZE-1); lfsr_mdir_t mdir; - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF(buffer, SIZE)))) => 0; assert(mdir.rbyd.weight == 4); memset(buffer+1, 'd', SIZE-1); - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF(buffer, SIZE)))) => 0; @@ -2870,7 +2864,7 @@ code = ''' // now add another large entry to an mdir, forcing a split memset(buffer+1, 'c', SIZE-1); - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF(buffer, SIZE)))) => 0; @@ -2881,18 +2875,18 @@ 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(lfsr_mtree_weight_(&lfs.mtree) == (3 << lfs.mdir_bits)); // assert mroot still has no entries assert(lfs.mroot.rbyd.weight == 0); // assert that our neighbors were updated correctly - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, "a", 1, + lfsr_mtree_namelookup(&lfs, 0, "a", 1, &mdir, NULL, NULL) => 0; assert(left.mdir.mid == mdir.mid); assert(lfsr_mdir_cmp(&left.mdir, &mdir) == 0); assert(left.mdir.rbyd.trunk == mdir.rbyd.trunk); assert(left.mdir.rbyd.cksum == mdir.rbyd.cksum); - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, "e", 1, + lfsr_mtree_namelookup(&lfs, 0, "e", 1, &mdir, NULL, NULL) => 0; assert(right.mdir.mid == mdir.mid); assert(lfsr_mdir_cmp(&right.mdir, &mdir) == 0); @@ -2916,7 +2910,7 @@ code = ''' // setup our neighbors lfsr_omdir_t left = {.type=0}; - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, "a", 1, + lfsr_mtree_namelookup(&lfs, 0, "a", 1, &left.mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &left.mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF("\0a", 2)))) => 0; @@ -2924,7 +2918,7 @@ code = ''' lfsr_opened_add(&lfs, &left); lfsr_omdir_t right = {.type=0}; - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, "b", 1, + lfsr_mtree_namelookup(&lfs, 0, "b", 1, &right.mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &right.mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF("\0b", 2)))) => 0; @@ -2942,13 +2936,13 @@ code = ''' // assert that our neighbors were updated correctly lfsr_mdir_t mdir; - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, "a", 1, + lfsr_mtree_namelookup(&lfs, 0, "a", 1, &mdir, NULL, NULL) => 0; assert(left.mdir.mid == mdir.mid); assert(lfsr_mdir_cmp(&left.mdir, &mdir) == 0); assert(left.mdir.rbyd.trunk == mdir.rbyd.trunk); assert(left.mdir.rbyd.cksum == mdir.rbyd.cksum); - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, "b", 1, + lfsr_mtree_namelookup(&lfs, 0, "b", 1, &mdir, NULL, NULL) => 0; assert(right.mdir.mid == mdir.mid); assert(lfsr_mdir_cmp(&right.mdir, &mdir) == 0); @@ -2974,7 +2968,7 @@ code = ''' // setup our neighbors lfsr_omdir_t left = {.type=0}; - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, "a", 1, + lfsr_mtree_namelookup(&lfs, 0, "a", 1, &left.mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &left.mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF("\0a", 2)))) => 0; @@ -2982,7 +2976,7 @@ code = ''' lfsr_opened_add(&lfs, &left); lfsr_omdir_t right = {.type=0}; - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, "d", 1, + lfsr_mtree_namelookup(&lfs, 0, "d", 1, &right.mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &right.mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF("\0d", 2)))) => 0; @@ -2994,14 +2988,14 @@ code = ''' buffer[0] = '\0'; memset(buffer+1, 'b', SIZE-1); lfsr_mdir_t mdir; - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF(buffer, SIZE)))) => 0; assert(mdir.rbyd.weight == 4); memset(buffer+1, 'c', SIZE-1); - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF(buffer, SIZE)))) => 0; @@ -3012,13 +3006,13 @@ 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(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits)); // assert mroot now has no entries assert(lfs.mroot.rbyd.weight == 0); // force mdir to compact twice, this should relocate memset(buffer+1, 'b', SIZE-1); - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => 0; lfsr_mdir_t old_mdir = mdir; mdir.rbyd.eoff = -1; @@ -3031,13 +3025,13 @@ code = ''' assert(lfsr_mdir_cmp(&old_mdir, &mdir) != 0); // assert that our neighbors were updated correctly - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, "a", 1, + lfsr_mtree_namelookup(&lfs, 0, "a", 1, &mdir, NULL, NULL) => 0; assert(left.mdir.mid == mdir.mid); assert(lfsr_mdir_cmp(&left.mdir, &mdir) == 0); assert(left.mdir.rbyd.trunk == mdir.rbyd.trunk); assert(left.mdir.rbyd.cksum == mdir.rbyd.cksum); - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, "d", 1, + lfsr_mtree_namelookup(&lfs, 0, "d", 1, &mdir, NULL, NULL) => 0; assert(right.mdir.mid == mdir.mid); assert(lfsr_mdir_cmp(&right.mdir, &mdir) == 0); @@ -3063,7 +3057,7 @@ code = ''' // setup our neighbors lfsr_omdir_t left = {.type=0}; - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, "a", 1, + lfsr_mtree_namelookup(&lfs, 0, "a", 1, &left.mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &left.mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF("\0a", 2)))) => 0; @@ -3071,7 +3065,7 @@ code = ''' lfsr_opened_add(&lfs, &left); lfsr_omdir_t right = {.type=0}; - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, "d", 1, + lfsr_mtree_namelookup(&lfs, 0, "d", 1, &right.mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &right.mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF("\0d", 2)))) => 0; @@ -3083,14 +3077,14 @@ code = ''' buffer[0] = '\0'; memset(buffer+1, 'b', SIZE-1); lfsr_mdir_t mdir; - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF(buffer, SIZE)))) => 0; assert(mdir.rbyd.weight == 4); memset(buffer+1, 'c', SIZE-1); - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF(buffer, SIZE)))) => 0; @@ -3101,13 +3095,13 @@ 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(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits)); // assert mroot now has no entries assert(lfs.mroot.rbyd.weight == 0); // force mdir to compact twice, this should relocate memset(buffer+1, 'c', SIZE-1); - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => 0; lfsr_mdir_t old_mdir = mdir; mdir.rbyd.eoff = -1; @@ -3120,13 +3114,13 @@ code = ''' assert(lfsr_mdir_cmp(&old_mdir, &mdir) != 0); // assert that our neighbors were updated correctly - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, "a", 1, + lfsr_mtree_namelookup(&lfs, 0, "a", 1, &mdir, NULL, NULL) => 0; assert(left.mdir.mid == mdir.mid); assert(lfsr_mdir_cmp(&left.mdir, &mdir) == 0); assert(left.mdir.rbyd.trunk == mdir.rbyd.trunk); assert(left.mdir.rbyd.cksum == mdir.rbyd.cksum); - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, "d", 1, + lfsr_mtree_namelookup(&lfs, 0, "d", 1, &mdir, NULL, NULL) => 0; assert(right.mdir.mid == mdir.mid); assert(lfsr_mdir_cmp(&right.mdir, &mdir) == 0); @@ -3150,7 +3144,7 @@ code = ''' // setup our neighbors lfsr_omdir_t left = {.type=0}; - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, "a", 1, + lfsr_mtree_namelookup(&lfs, 0, "a", 1, &left.mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &left.mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF("\0a", 2)))) => 0; @@ -3158,7 +3152,7 @@ code = ''' lfsr_opened_add(&lfs, &left); lfsr_omdir_t right = {.type=0}; - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, "f", 1, + lfsr_mtree_namelookup(&lfs, 0, "f", 1, &right.mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &right.mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF("\0f", 2)))) => 0; @@ -3170,14 +3164,14 @@ code = ''' buffer[0] = '\0'; memset(buffer+1, 'b', SIZE-1); lfsr_mdir_t mdir; - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF(buffer, SIZE)))) => 0; assert(mdir.rbyd.weight == 4); memset(buffer+1, 'e', SIZE-1); - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF(buffer, SIZE)))) => 0; @@ -3189,7 +3183,7 @@ code = ''' // now add another large entry to an mdir, forcing a split memset(buffer+1, 'c', SIZE-1); - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF(buffer, SIZE)))) => 0; @@ -3200,13 +3194,13 @@ 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(lfsr_mtree_weight_(&lfs.mtree) == (3 << lfs.mdir_bits)); // assert mroot still has no entries assert(lfs.mroot.rbyd.weight == 0); // now add _another_ large entry to the middle mdir, forcing another split memset(buffer+1, 'd', SIZE-1); - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF(buffer, SIZE)))) => 0; @@ -3217,18 +3211,18 @@ 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(lfsr_mtree_weight_(&lfs.mtree) == (4 << lfs.mdir_bits)); // assert mroot still has no entries assert(lfs.mroot.rbyd.weight == 0); // assert that our neighbors were updated correctly - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, "a", 1, + lfsr_mtree_namelookup(&lfs, 0, "a", 1, &mdir, NULL, NULL) => 0; assert(left.mdir.mid == mdir.mid); assert(lfsr_mdir_cmp(&left.mdir, &mdir) == 0); assert(left.mdir.rbyd.trunk == mdir.rbyd.trunk); assert(left.mdir.rbyd.cksum == mdir.rbyd.cksum); - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, "f", 1, + lfsr_mtree_namelookup(&lfs, 0, "f", 1, &mdir, NULL, NULL) => 0; assert(right.mdir.mid == mdir.mid); assert(lfsr_mdir_cmp(&right.mdir, &mdir) == 0); @@ -3252,7 +3246,7 @@ code = ''' // setup our neighbors lfsr_omdir_t left = {.type=0}; - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, "a", 1, + lfsr_mtree_namelookup(&lfs, 0, "a", 1, &left.mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &left.mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF("\0a", 2)))) => 0; @@ -3260,7 +3254,7 @@ code = ''' lfsr_opened_add(&lfs, &left); lfsr_omdir_t right = {.type=0}; - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, "e", 1, + lfsr_mtree_namelookup(&lfs, 0, "e", 1, &right.mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &right.mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF("\0e", 2)))) => 0; @@ -3272,14 +3266,14 @@ code = ''' buffer[0] = '\0'; memset(buffer+1, 'b', SIZE-1); lfsr_mdir_t mdir; - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF(buffer, SIZE)))) => 0; assert(mdir.rbyd.weight == 4); memset(buffer+1, 'd', SIZE-1); - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF(buffer, SIZE)))) => 0; @@ -3291,7 +3285,7 @@ code = ''' // now add another large entry to an mdir, forcing a split memset(buffer+1, 'c', SIZE-1); - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF(buffer, SIZE)))) => 0; @@ -3302,7 +3296,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(lfsr_mtree_weight_(&lfs.mtree) == (3 << lfs.mdir_bits)); // assert mroot still has no entries assert(lfs.mroot.rbyd.weight == 0); @@ -3312,18 +3306,18 @@ code = ''' assert(mdir.rbyd.weight == 0); // assert mdir was dropped correctly - assert(lfsr_mtree_weight(&lfs.mtree) == (2 << lfs.mdir_bits)); + assert(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits)); // assert mroot still has no entries assert(lfs.mroot.rbyd.weight == 0); // assert that our neighbors were updated correctly - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, "a", 1, + lfsr_mtree_namelookup(&lfs, 0, "a", 1, &mdir, NULL, NULL) => 0; assert(left.mdir.mid == mdir.mid); assert(lfsr_mdir_cmp(&left.mdir, &mdir) == 0); assert(left.mdir.rbyd.trunk == mdir.rbyd.trunk); assert(left.mdir.rbyd.cksum == mdir.rbyd.cksum); - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, "e", 1, + lfsr_mtree_namelookup(&lfs, 0, "e", 1, &mdir, NULL, NULL) => 0; assert(right.mdir.mid == mdir.mid); assert(lfsr_mdir_cmp(&right.mdir, &mdir) == 0); @@ -3350,7 +3344,7 @@ code = ''' // insert at least one entry lfsr_mdir_t mdir; - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, "a", 1, + lfsr_mtree_namelookup(&lfs, 0, "a", 1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF("\0a", 2)))) => 0; @@ -3368,7 +3362,7 @@ code = ''' assert(i < 2*BLOCK_COUNT); lfsr_mtinfo_t mtinfo; - int err = lfsr_fs_traverse(&lfs, &mt, &mtinfo); + int err = lfsr_mtree_traverse(&lfs, &mt, &mtinfo); assert(!err || err == LFS_ERR_NOENT); if (err == LFS_ERR_NOENT) { break; @@ -3418,7 +3412,7 @@ code = ''' // assert that our entry is still in the mtree uint8_t buffer[256]; - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, "a", 1, + lfsr_mtree_namelookup(&lfs, 0, "a", 1, &mdir, NULL, NULL) => 0; lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, sizeof(buffer)) => 2; @@ -3429,7 +3423,7 @@ code = ''' lfsr_mount(&lfs, CFG) => 0; // assert that our entry is still in the mtree - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, "a", 1, + lfsr_mtree_namelookup(&lfs, 0, "a", 1, &mdir, NULL, NULL) => 0; lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, sizeof(buffer)) => 2; @@ -3458,7 +3452,7 @@ code = ''' memset(buffer, 'b', SIZE); lfsr_mdir_t mdir; - lfsr_mtree_lookup(&lfs, &lfs.mtree, 0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, 0, &mdir) => 0; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_UATTR(1), 0, LFSR_DATA_BUF(buffer, SIZE)))) => 0; @@ -3467,7 +3461,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(lfsr_mtree_weight_(&lfs.mtree) == (1 << lfs.mdir_bits)); // assert mroot now has no entries assert(lfs.mroot.rbyd.weight == 0); @@ -3483,7 +3477,7 @@ code = ''' assert(i < 2*BLOCK_COUNT); lfsr_mtinfo_t mtinfo; - int err = lfsr_fs_traverse(&lfs, &mt, &mtinfo); + int err = lfsr_mtree_traverse(&lfs, &mt, &mtinfo); assert(!err || err == LFS_ERR_NOENT); if (err == LFS_ERR_NOENT) { break; @@ -3531,7 +3525,7 @@ code = ''' // and the tree should still work // assert mdirs were unininlined - assert(lfsr_mtree_weight(&lfs.mtree) == (1 << lfs.mdir_bits)); + assert(lfsr_mtree_weight_(&lfs.mtree) == (1 << lfs.mdir_bits)); // assert mroot now has no entries assert(lfs.mroot.rbyd.weight == 0); @@ -3540,7 +3534,7 @@ code = ''' lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; assert(buffer[0] == 'a'); - lfsr_mtree_lookup(&lfs, &lfs.mtree, 0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, 0, &mdir) => 0; assert(mdir.rbyd.weight == 1); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_UATTR(1), &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; @@ -3551,7 +3545,7 @@ code = ''' lfsr_mount(&lfs, CFG) => 0; // assert mdirs were unininlined - assert(lfsr_mtree_weight(&lfs.mtree) == (1 << lfs.mdir_bits)); + assert(lfsr_mtree_weight_(&lfs.mtree) == (1 << lfs.mdir_bits)); // assert mroot now has no entries assert(lfs.mroot.rbyd.weight == 0); @@ -3560,7 +3554,7 @@ code = ''' lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; assert(buffer[0] == 'a'); - lfsr_mtree_lookup(&lfs, &lfs.mtree, 0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, 0, &mdir) => 0; assert(mdir.rbyd.weight == 1); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_UATTR(1), &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; @@ -3586,14 +3580,14 @@ code = ''' buffer[0] = '\0'; memset(buffer+1, 'a', SIZE-1); lfsr_mdir_t mdir; - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF(buffer, SIZE)))) => 0; assert(mdir.rbyd.weight == 2); memset(buffer+1, 'b', SIZE-1); - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF(buffer, SIZE)))) => 0; @@ -3604,7 +3598,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(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits)); // assert mroot now has no entries assert(lfs.mroot.rbyd.weight == 0); @@ -3620,7 +3614,7 @@ code = ''' assert(i < 2*BLOCK_COUNT); lfsr_mtinfo_t mtinfo; - int err = lfsr_fs_traverse(&lfs, &mt, &mtinfo); + int err = lfsr_mtree_traverse(&lfs, &mt, &mtinfo); assert(!err || err == LFS_ERR_NOENT); if (err == LFS_ERR_NOENT) { break; @@ -3668,18 +3662,18 @@ code = ''' // and the tree should still work // assert mdirs were unininlined and split - assert(lfsr_mtree_weight(&lfs.mtree) == (2 << lfs.mdir_bits)); + assert(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits)); // assert mroot now has no entries assert(lfs.mroot.rbyd.weight == 0); // assert that our entries are still in the mtree - lfsr_mtree_lookup(&lfs, &lfs.mtree, (0 << lfs.mdir_bits)+1, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (0 << lfs.mdir_bits)+1, &mdir) => 0; assert(mdir.rbyd.weight == 2); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; assert(buffer[1] == 'a'); - lfsr_mtree_lookup(&lfs, &lfs.mtree, (1 << lfs.mdir_bits)+0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (1 << lfs.mdir_bits)+0, &mdir) => 0; assert(mdir.rbyd.weight == 1); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; @@ -3690,18 +3684,18 @@ code = ''' lfsr_mount(&lfs, CFG) => 0; // assert mdirs were unininlined and split - assert(lfsr_mtree_weight(&lfs.mtree) == (2 << lfs.mdir_bits)); + assert(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits)); // assert mroot now has no entries assert(lfs.mroot.rbyd.weight == 0); // assert that our entries are still in the mtree - lfsr_mtree_lookup(&lfs, &lfs.mtree, (0 << lfs.mdir_bits)+1, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (0 << lfs.mdir_bits)+1, &mdir) => 0; assert(mdir.rbyd.weight == 2); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; assert(buffer[1] == 'a'); - lfsr_mtree_lookup(&lfs, &lfs.mtree, (1 << lfs.mdir_bits)+0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (1 << lfs.mdir_bits)+0, &mdir) => 0; assert(mdir.rbyd.weight == 1); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; @@ -3727,14 +3721,14 @@ code = ''' buffer[0] = '\0'; memset(buffer+1, 'a', SIZE-1); lfsr_mdir_t mdir; - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF(buffer, SIZE)))) => 0; assert(mdir.rbyd.weight == 2); memset(buffer+1, 'b', SIZE-1); - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF(buffer, SIZE)))) => 0; @@ -3745,13 +3739,13 @@ 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(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits)); // assert mroot now has no entries assert(lfs.mroot.rbyd.weight == 0); // now add another large entry to an mdir, forcing a split memset(buffer+1, 'c', SIZE-1); - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF(buffer, SIZE)))) => 0; @@ -3762,7 +3756,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(lfsr_mtree_weight_(&lfs.mtree) == (3 << lfs.mdir_bits)); // assert mroot still has no entries assert(lfs.mroot.rbyd.weight == 0); @@ -3778,7 +3772,7 @@ code = ''' assert(i < 2*BLOCK_COUNT); lfsr_mtinfo_t mtinfo; - int err = lfsr_fs_traverse(&lfs, &mt, &mtinfo); + int err = lfsr_mtree_traverse(&lfs, &mt, &mtinfo); assert(!err || err == LFS_ERR_NOENT); if (err == LFS_ERR_NOENT) { break; @@ -3826,24 +3820,24 @@ code = ''' // and the tree should still work // assert mdir was split correctly - assert(lfsr_mtree_weight(&lfs.mtree) == (3 << lfs.mdir_bits)); + assert(lfsr_mtree_weight_(&lfs.mtree) == (3 << lfs.mdir_bits)); // assert mroot still has no entries assert(lfs.mroot.rbyd.weight == 0); // assert that our entries are still in the mtree - lfsr_mtree_lookup(&lfs, &lfs.mtree, (0 << lfs.mdir_bits)+1, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (0 << lfs.mdir_bits)+1, &mdir) => 0; assert(mdir.rbyd.weight == 2); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; assert(buffer[1] == 'a'); - lfsr_mtree_lookup(&lfs, &lfs.mtree, (1 << lfs.mdir_bits)+0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (1 << lfs.mdir_bits)+0, &mdir) => 0; assert(mdir.rbyd.weight == 1); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; assert(buffer[1] == 'b'); - lfsr_mtree_lookup(&lfs, &lfs.mtree, (2 << lfs.mdir_bits)+0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (2 << lfs.mdir_bits)+0, &mdir) => 0; assert(mdir.rbyd.weight == 1); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; @@ -3854,24 +3848,24 @@ code = ''' lfsr_mount(&lfs, CFG) => 0; // assert mdir was split correctly - assert(lfsr_mtree_weight(&lfs.mtree) == (3 << lfs.mdir_bits)); + assert(lfsr_mtree_weight_(&lfs.mtree) == (3 << lfs.mdir_bits)); // assert mroot still has no entries assert(lfs.mroot.rbyd.weight == 0); // assert that our entries are still in the mtree - lfsr_mtree_lookup(&lfs, &lfs.mtree, (0 << lfs.mdir_bits)+1, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (0 << lfs.mdir_bits)+1, &mdir) => 0; assert(mdir.rbyd.weight == 2); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; assert(buffer[1] == 'a'); - lfsr_mtree_lookup(&lfs, &lfs.mtree, (1 << lfs.mdir_bits)+0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (1 << lfs.mdir_bits)+0, &mdir) => 0; assert(mdir.rbyd.weight == 1); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; assert(buffer[1] == 'b'); - lfsr_mtree_lookup(&lfs, &lfs.mtree, (2 << lfs.mdir_bits)+0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (2 << lfs.mdir_bits)+0, &mdir) => 0; assert(mdir.rbyd.weight == 1); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; @@ -3893,7 +3887,7 @@ code = ''' // insert at least one entry lfsr_mdir_t mdir; - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, "a", 1, + lfsr_mtree_namelookup(&lfs, 0, "a", 1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF("\0a", 2)))) => 0; @@ -3920,7 +3914,7 @@ code = ''' assert(i < 2*BLOCK_COUNT); lfsr_mtinfo_t mtinfo; - int err = lfsr_fs_traverse(&lfs, &mt, &mtinfo); + int err = lfsr_mtree_traverse(&lfs, &mt, &mtinfo); assert(!err || err == LFS_ERR_NOENT); if (err == LFS_ERR_NOENT) { break; @@ -3970,7 +3964,7 @@ code = ''' // assert that our entry is still in the mtree uint8_t buffer[256]; - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, "a", 1, + lfsr_mtree_namelookup(&lfs, 0, "a", 1, &mdir, NULL, NULL) => 0; lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, sizeof(buffer)) => 2; @@ -3981,7 +3975,7 @@ code = ''' lfsr_mount(&lfs, CFG) => 0; // assert that our entry is still in the mtree - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, "a", 1, + lfsr_mtree_namelookup(&lfs, 0, "a", 1, &mdir, NULL, NULL) => 0; lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, sizeof(buffer)) => 2; @@ -4008,7 +4002,7 @@ code = ''' name[0] = '\0'; sprintf(name+1, "%03x", i); lfsr_mdir_t mdir; - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)name+1, 3, + lfsr_mtree_namelookup(&lfs, 0, (const char*)name+1, 3, &mdir, NULL, NULL) => LFS_ERR_NOENT; // force a compaction? if (FORCE_COMPACTION) { @@ -4037,7 +4031,7 @@ code = ''' assert(i < 2*BLOCK_COUNT); lfsr_mtinfo_t mtinfo; - int err = lfsr_fs_traverse(&lfs, &mt, &mtinfo); + int err = lfsr_mtree_traverse(&lfs, &mt, &mtinfo); assert(!err || err == LFS_ERR_NOENT); if (err == LFS_ERR_NOENT) { break; @@ -4086,7 +4080,7 @@ code = ''' // try looking up each entry lfsr_mdir_t mdir; - lfsr_mtree_lookup(&lfs, &lfs.mtree, 0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, 0, &mdir) => 0; lfsr_data_t data; uint8_t buffer[256]; lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_BOOKMARK, &data) => 0; @@ -4095,7 +4089,7 @@ code = ''' char name[256]; name[0] = '\0'; sprintf(name+1, "%03x", i); - lfsr_mtree_seek(&lfs, &lfs.mtree, &mdir, +1) => 0; + lfsr_mtree_seek(&lfs, &mdir, +1) => 0; lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, sizeof(buffer)) => 4; assert(memcmp(buffer, name, 4) == 0); @@ -4106,14 +4100,14 @@ code = ''' lfsr_mount(&lfs, CFG) => 0; // try looking up each entry - lfsr_mtree_lookup(&lfs, &lfs.mtree, 0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, 0, &mdir) => 0; lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_BOOKMARK, &data) => 0; lfsr_data_read(&lfs, &data, buffer, sizeof(buffer)) => 1; for (lfs_size_t i = 0; i < N; i++) { char name[256]; name[0] = '\0'; sprintf(name+1, "%03x", i); - lfsr_mtree_seek(&lfs, &lfs.mtree, &mdir, +1) => 0; + lfsr_mtree_seek(&lfs, &mdir, +1) => 0; lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, sizeof(buffer)) => 4; assert(memcmp(buffer, name, 4) == 0); @@ -4153,8 +4147,7 @@ code = ''' name[0] = '\0'; sprintf(name+1, "%03x", x); lfsr_mdir_t mdir; - int err = lfsr_mtree_namelookup(&lfs, &lfs.mtree, - 0, (const char*)name+1, 3, + int err = lfsr_mtree_namelookup(&lfs, 0, (const char*)name+1, 3, &mdir, NULL, NULL); assert(!err || err == LFS_ERR_NOENT); if (!err) { @@ -4189,7 +4182,7 @@ code = ''' assert(i < 2*BLOCK_COUNT); lfsr_mtinfo_t mtinfo; - int err = lfsr_fs_traverse(&lfs, &mt, &mtinfo); + int err = lfsr_mtree_traverse(&lfs, &mt, &mtinfo); assert(!err || err == LFS_ERR_NOENT); if (err == LFS_ERR_NOENT) { break; @@ -4238,7 +4231,7 @@ code = ''' // try looking up each entry lfsr_mdir_t mdir; - lfsr_mtree_lookup(&lfs, &lfs.mtree, 0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, 0, &mdir) => 0; lfsr_data_t data; uint8_t buffer[256]; lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_BOOKMARK, &data) => 0; @@ -4248,13 +4241,13 @@ code = ''' name[0] = '\0'; sprintf(name+1, "%03x", i); if (sim[i]) { - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)name+1, 3, + lfsr_mtree_namelookup(&lfs, 0, (const char*)name+1, 3, &mdir, NULL, NULL) => 0; lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, sizeof(buffer)) => 4; assert(memcmp(buffer, name, 4) == 0); } else { - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)name+1, 3, + lfsr_mtree_namelookup(&lfs, 0, (const char*)name+1, 3, &mdir, NULL, NULL) => LFS_ERR_NOENT; } } @@ -4264,7 +4257,7 @@ code = ''' lfsr_mount(&lfs, CFG) => 0; // try looking up each entry - lfsr_mtree_lookup(&lfs, &lfs.mtree, 0, &mdir) => 0; + lfsr_mtree_lookup(&lfs, 0, &mdir) => 0; lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_BOOKMARK, &data) => 0; lfsr_data_read(&lfs, &data, buffer, sizeof(buffer)) => 1; for (lfs_size_t i = 0; i < N; i++) { @@ -4272,13 +4265,13 @@ code = ''' name[0] = '\0'; sprintf(name+1, "%03x", i); if (sim[i]) { - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)name+1, 3, + lfsr_mtree_namelookup(&lfs, 0, (const char*)name+1, 3, &mdir, NULL, NULL) => 0; lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, sizeof(buffer)) => 4; assert(memcmp(buffer, name, 4) == 0); } else { - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)name+1, 3, + lfsr_mtree_namelookup(&lfs, 0, (const char*)name+1, 3, &mdir, NULL, NULL) => LFS_ERR_NOENT; } } @@ -4311,7 +4304,7 @@ code = ''' assert(i < 2*BLOCK_COUNT); lfsr_mtinfo_t mtinfo; - int err = lfsr_fs_traverse(&lfs, &mt, &mtinfo); + int err = lfsr_mtree_traverse(&lfs, &mt, &mtinfo); assert(!err || err == LFS_ERR_CORRUPT); if (err == LFS_ERR_CORRUPT) { break; @@ -4377,7 +4370,7 @@ code = ''' buffer[0] = '\0'; memset(buffer+1, 'a', SIZE-1); lfsr_mdir_t mdir; - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF(buffer, SIZE)))) => 0; @@ -4393,7 +4386,7 @@ code = ''' assert(lfsr_mdir_cmp(&old_mroot, &lfs.mroot) != 0); // assert that our entry is still in the mroot - lfsr_mtree_lookup(&lfs, &lfs.mtree, (0 << lfs.mdir_bits)+1, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (0 << lfs.mdir_bits)+1, &mdir) => 0; assert(mdir.rbyd.weight == 2); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE; @@ -4434,7 +4427,7 @@ code = ''' buffer[0] = '\0'; memset(buffer+1, 'a', SIZE-1); lfsr_mdir_t mdir; - lfsr_mtree_namelookup(&lfs, &lfs.mtree, 0, (const char*)buffer+1, SIZE-1, + lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => LFS_ERR_NOENT; lfsr_mdir_commit(&lfs, &mdir, LFSR_ATTRS( LFSR_ATTR(LFSR_TAG_REG, +1, LFSR_DATA_BUF(buffer, SIZE)))) => 0; @@ -4464,7 +4457,7 @@ code = ''' assert(lfsr_mdir_cmp(&old_mroot, &lfs.mroot) != 0); // assert that our attr is still in the mroot - lfsr_mtree_lookup(&lfs, &lfs.mtree, (0 << lfs.mdir_bits)+1, &mdir) => 0; + lfsr_mtree_lookup(&lfs, (0 << lfs.mdir_bits)+1, &mdir) => 0; assert(mdir.rbyd.weight == 2); lfsr_mdir_lookup(&lfs, &mdir, LFSR_TAG_REG, &data) => 0; lfsr_data_read(&lfs, &data, buffer, SIZE) => SIZE;