diff --git a/lfs.c b/lfs.c index 99aa0a27..b94f8aa0 100644 --- a/lfs.c +++ b/lfs.c @@ -2044,8 +2044,8 @@ static inline bool lfsr_rbyd_isfetched(const lfsr_rbyd_t *rbyd) { static inline int lfsr_rbyd_cmp( const lfsr_rbyd_t *a, const lfsr_rbyd_t *b) { - if (a->block != b->block) { - return a->block - b->block; + if (a->blocks[0] != b->blocks[0]) { + return a->blocks[0] - b->blocks[0]; } else { return a->trunk - b->trunk; } @@ -2055,13 +2055,13 @@ static inline int lfsr_rbyd_cmp( // allocate an rbyd block static int lfsr_rbyd_alloc(lfs_t *lfs, lfsr_rbyd_t *rbyd) { *rbyd = (lfsr_rbyd_t){.weight=0, .trunk=0, .eoff=0, .cksum=0}; - int err = lfs_alloc(lfs, &rbyd->block); + int err = lfs_alloc(lfs, &rbyd->blocks[0]); if (err) { return err; } // TODO should erase be implicit in alloc eventually? - err = lfsr_bd_erase(lfs, rbyd->block); + err = lfsr_bd_erase(lfs, rbyd->blocks[0]); if (err) { return err; } @@ -2079,7 +2079,7 @@ static int lfsr_rbyd_fetch(lfs_t *lfs, lfsr_rbyd_t *rbyd, return err; } - rbyd->block = block; + rbyd->blocks[0] = block; rbyd->eoff = 0; rbyd->trunk = 0; @@ -2231,7 +2231,7 @@ static int lfsr_rbyd_fetch(lfs_t *lfs, lfsr_rbyd_t *rbyd, // this failed most likely a previous prog was interrupted, we // need a new erase uint32_t ecksum_ = 0; - err = lfsr_bd_cksum(lfs, rbyd->block, rbyd->eoff, 0, ecksum.size, + err = lfsr_bd_cksum(lfs, rbyd->blocks[0], rbyd->eoff, 0, ecksum.size, &ecksum_); if (err && err != LFS_ERR_CORRUPT) { return err; @@ -2270,7 +2270,7 @@ static int lfsr_rbyd_fetchvalidate(lfs_t *lfs, lfsr_rbyd_t *rbyd, if (rbyd->cksum != cksum) { LFS_ERROR("Found rbyd cksum mismatch rbyd 0x%"PRIx32".%"PRIx32", " "cksum 0x%08"PRIx32" (!= 0x%08"PRIx32")", - rbyd->block, rbyd->trunk, rbyd->cksum, cksum); + rbyd->blocks[0], rbyd->trunk, rbyd->cksum, cksum); return LFS_ERR_CORRUPT; } @@ -2310,7 +2310,7 @@ static int lfsr_rbyd_lookupnext(lfs_t *lfs, const lfsr_rbyd_t *rbyd, lfsr_rid_t weight; lfs_size_t jump; lfs_ssize_t d = lfsr_bd_readtag(lfs, - rbyd->block, branch, 0, + rbyd->blocks[0], branch, 0, &alt, &weight, &jump, NULL); if (d < 0) { return d; @@ -2353,7 +2353,7 @@ static int lfsr_rbyd_lookupnext(lfs_t *lfs, const lfsr_rbyd_t *rbyd, *weight_ = upper - lower; } if (data_) { - *data_ = LFSR_DATA_DISK(rbyd->block, branch + d, jump); + *data_ = LFSR_DATA_DISK(rbyd->blocks[0], branch + d, jump); } return 0; } @@ -2401,7 +2401,7 @@ static int lfsr_rbyd_appendrev(lfs_t *lfs, lfsr_rbyd_t *rbyd, uint32_t rev) { // intentionally allow the revision count to overflow uint8_t rev_buf[sizeof(uint32_t)]; lfs_tole32_(rev, &rev_buf); - int err = lfsr_bd_prog(lfs, rbyd->block, rbyd->eoff, + int err = lfsr_bd_prog(lfs, rbyd->blocks[0], rbyd->eoff, &rev_buf, sizeof(uint32_t), &rbyd->cksum); if (err) { return err; @@ -2426,7 +2426,7 @@ static int lfsr_rbyd_p_flush(lfs_t *lfs, lfsr_rbyd_t *rbyd, lfsr_rid_t weight = p_weights[3-1-i]; lfs_size_t jump = rbyd->eoff - p_jumps[3-1-i]; - lfs_ssize_t d = lfsr_bd_progtag(lfs, rbyd->block, rbyd->eoff, + lfs_ssize_t d = lfsr_bd_progtag(lfs, rbyd->blocks[0], rbyd->eoff, alt, weight, jump, &rbyd->cksum); if (d < 0) { @@ -2652,7 +2652,7 @@ static int lfsr_rbyd_appendattr(lfs_t *lfs, lfsr_rbyd_t *rbyd, lfsr_rid_t weight; lfs_size_t jump; lfs_ssize_t d = lfsr_bd_readtag(lfs, - rbyd->block, branch, 0, + rbyd->blocks[0], branch, 0, &alt, &weight, &jump, NULL); if (d < 0) { return d; @@ -2990,7 +2990,7 @@ leaf:; // // note we always need a non-alt to terminate the trunk, otherwise we // can't find trunks during fetch - lfs_ssize_t d = lfsr_bd_progtag(lfs, rbyd->block, rbyd->eoff, + lfs_ssize_t d = lfsr_bd_progtag(lfs, rbyd->blocks[0], rbyd->eoff, // rm => null or shrubnull, otherwise strip off control bits (lfsr_tag_isrm(tag) ? lfsr_tag_mode(lfsr_tag_shrubkey(tag)) @@ -3004,7 +3004,7 @@ leaf:; rbyd->eoff += d; // don't forget the data! - err = lfsr_bd_progdata(lfs, rbyd->block, rbyd->eoff, data, + err = lfsr_bd_progdata(lfs, rbyd->blocks[0], rbyd->eoff, data, &rbyd->cksum); if (err) { return err; @@ -3064,7 +3064,7 @@ static int lfsr_rbyd_appendcksum(lfs_t *lfs, lfsr_rbyd_t *rbyd) { // read the leading byte in case we need to change the expected // value of the next tag's valid bit int err = lfsr_bd_read(lfs, - rbyd->block, aligned_eoff, lfs->cfg->prog_size, + rbyd->blocks[0], aligned_eoff, lfs->cfg->prog_size, &perturb, 1); if (err && err != LFS_ERR_CORRUPT) { return err; @@ -3073,7 +3073,8 @@ static int lfsr_rbyd_appendcksum(lfs_t *lfs, lfsr_rbyd_t *rbyd) { // find the expected ecksum, don't bother avoiding a reread of the // perturb byte, as it should still be in our cache lfsr_ecksum_t ecksum = {.size=lfs->cfg->prog_size, .cksum=0}; - err = lfsr_bd_cksum(lfs, rbyd->block, aligned_eoff, lfs->cfg->prog_size, + err = lfsr_bd_cksum(lfs, + rbyd->blocks[0], aligned_eoff, lfs->cfg->prog_size, lfs->cfg->prog_size, &ecksum.cksum); if (err && err != LFS_ERR_CORRUPT) { @@ -3082,7 +3083,7 @@ static int lfsr_rbyd_appendcksum(lfs_t *lfs, lfsr_rbyd_t *rbyd) { uint8_t ecksum_buf[LFSR_ECKSUM_DSIZE]; lfsr_data_t ecksum_data = lfsr_data_fromecksum(&ecksum, ecksum_buf); - lfs_ssize_t d = lfsr_bd_progtag(lfs, rbyd->block, rbyd->eoff, + lfs_ssize_t d = lfsr_bd_progtag(lfs, rbyd->blocks[0], rbyd->eoff, LFSR_TAG_ECKSUM, 0, lfsr_data_size(&ecksum_data), &rbyd->cksum); if (d < 0) { @@ -3090,7 +3091,7 @@ static int lfsr_rbyd_appendcksum(lfs_t *lfs, lfsr_rbyd_t *rbyd) { } rbyd->eoff += d; - err = lfsr_bd_progdata(lfs, rbyd->block, rbyd->eoff, ecksum_data, + err = lfsr_bd_progdata(lfs, rbyd->blocks[0], rbyd->eoff, ecksum_data, &rbyd->cksum); if (err) { return err; @@ -3135,7 +3136,7 @@ static int lfsr_rbyd_appendcksum(lfs_t *lfs, lfsr_rbyd_t *rbyd) { } lfs_tole32_(rbyd->cksum, &cksum_buf[2+1+5]); - int err = lfsr_bd_prog(lfs, rbyd->block, rbyd->eoff, + int err = lfsr_bd_prog(lfs, rbyd->blocks[0], rbyd->eoff, cksum_buf, 2+1+5+4, NULL); if (err) { @@ -3234,7 +3235,7 @@ static int lfsr_rbyd_appendcompactattr(lfs_t *lfs, lfsr_rbyd_t *rbyd, } // write the tag - lfs_ssize_t d = lfsr_bd_progtag(lfs, rbyd->block, rbyd->eoff, + lfs_ssize_t d = lfsr_bd_progtag(lfs, rbyd->blocks[0], rbyd->eoff, tag, weight, lfsr_data_size(&data), &rbyd->cksum); if (d < 0) { @@ -3243,7 +3244,7 @@ static int lfsr_rbyd_appendcompactattr(lfs_t *lfs, lfsr_rbyd_t *rbyd, rbyd->eoff += d; // and the data - int err = lfsr_bd_progdata(lfs, rbyd->block, rbyd->eoff, data, + int err = lfsr_bd_progdata(lfs, rbyd->blocks[0], rbyd->eoff, data, &rbyd->cksum); if (err) { return err; @@ -3312,7 +3313,7 @@ static int lfsr_rbyd_compact(lfs_t *lfs, lfsr_rbyd_t *rbyd, // empty rbyd? write a null tag so our trunk can still point to something if (rbyd->eoff == off) { - lfs_ssize_t d = lfsr_bd_progtag(lfs, rbyd->block, rbyd->eoff, + lfs_ssize_t d = lfsr_bd_progtag(lfs, rbyd->blocks[0], rbyd->eoff, shrub ? LFSR_TAG_SHRUB(NULL) : LFSR_TAG_NULL, 0, 0, &rbyd->cksum); if (d < 0) { @@ -3343,7 +3344,7 @@ static int lfsr_rbyd_compact(lfs_t *lfs, lfsr_rbyd_t *rbyd, lfsr_rid_t weight__; lfs_size_t size__; lfs_ssize_t d = lfsr_bd_readtag(lfs, - rbyd->block, off, layer_ - off, + rbyd->blocks[0], off, layer_ - off, &tag__, &weight__, &size__, NULL); if (d < 0) { return d; @@ -3386,7 +3387,8 @@ static int lfsr_rbyd_compact(lfs_t *lfs, lfsr_rbyd_t *rbyd, } // connect with an altle - lfs_ssize_t d = lfsr_bd_progtag(lfs, rbyd->block, rbyd->eoff, + lfs_ssize_t d = lfsr_bd_progtag(lfs, + rbyd->blocks[0], rbyd->eoff, LFSR_TAG_ALT(LE, B, lfsr_tag_key(tag)), weight, rbyd->eoff - trunk, @@ -3398,7 +3400,7 @@ static int lfsr_rbyd_compact(lfs_t *lfs, lfsr_rbyd_t *rbyd, } // terminate with a null tag - lfs_ssize_t d = lfsr_bd_progtag(lfs, rbyd->block, rbyd->eoff, + lfs_ssize_t d = lfsr_bd_progtag(lfs, rbyd->blocks[0], rbyd->eoff, shrub ? LFSR_TAG_SHRUB(NULL) : LFSR_TAG_NULL, 0, 0, &rbyd->cksum); if (d < 0) { @@ -3711,7 +3713,7 @@ static lfsr_data_t lfsr_data_frombranch(const lfsr_rbyd_t *branch, uint8_t buffer[static LFSR_BRANCH_DSIZE]) { lfs_ssize_t d = 0; - lfs_ssize_t d_ = lfs_toleb128(branch->block, &buffer[d], 5); + lfs_ssize_t d_ = lfs_toleb128(branch->blocks[0], &buffer[d], 5); LFS_ASSERT(d_ >= 0); d += d_; @@ -3733,7 +3735,7 @@ static int lfsr_data_readbranch(lfs_t *lfs, lfsr_data_t *data, branch->eoff = 0; branch->weight = weight; - int err = lfsr_data_readleb128(lfs, data, (int32_t*)&branch->block); + int err = lfsr_data_readleb128(lfs, data, (int32_t*)&branch->blocks[0]); if (err) { return err; } @@ -3940,7 +3942,8 @@ static int lfsr_btree_parent(lfs_t *lfs, const lfsr_btree_t *btree, } // found our child? - if (branch_.block == child->block && branch_.trunk == child->trunk) { + if (branch_.blocks[0] == child->blocks[0] + && branch_.trunk == child->trunk) { // TODO how many of these should be conditional? if (rbyd_) { *rbyd_ = branch; @@ -3998,7 +4001,7 @@ static lfs_ssize_t lfsr_btree_commit_(lfs_t *lfs, lfsr_rbyd_t parent = {.trunk=0, .weight=0}; lfsr_srid_t rid; // are we root? - if (rbyd.block == btree->block || rbyd.trunk == 0) { + if (rbyd.blocks[0] == btree->blocks[0] || rbyd.trunk == 0) { // new root? shrub root? yield creation of new roots to // higher-level bshrub/btree logic if (shrub || rbyd.trunk == 0) { @@ -4034,7 +4037,7 @@ static lfs_ssize_t lfsr_btree_commit_(lfs_t *lfs, // a funny benefit is we cache the root of our btree this way if (!lfsr_rbyd_isfetched(&rbyd)) { int err = lfsr_rbyd_fetchvalidate(lfs, &rbyd, - rbyd.block, rbyd.trunk, rbyd.weight, rbyd.cksum); + rbyd.blocks[0], rbyd.trunk, rbyd.weight, rbyd.cksum); if (err) { return err; } @@ -4728,12 +4731,12 @@ static int lfsr_btree_traverse(lfs_t *lfs, const lfsr_btree_t *btree, static inline bool lfsr_bshrub_isbshrub( const lfsr_mdir_t *mdir, const lfsr_bshrub_t *bshrub) { - return mdir->blocks[0] == bshrub->rbyd.block; + return mdir->rbyd.blocks[0] == bshrub->rbyd.blocks[0]; } static inline bool lfsr_bshrub_isbtree( const lfsr_mdir_t *mdir, const lfsr_bshrub_t *bshrub) { - return mdir->blocks[0] != bshrub->rbyd.block; + return mdir->rbyd.blocks[0] != bshrub->rbyd.blocks[0]; } static inline int lfsr_bshrub_cmp( @@ -4747,7 +4750,7 @@ static inline int lfsr_bshrub_cmp( static int lfsr_bshrub_alloc(lfs_t *lfs, const lfsr_mdir_t *mdir, lfsr_bshrub_t *bshrub) { (void)lfs; - bshrub->rbyd.block = mdir->rbyd.block; + bshrub->rbyd.blocks[0] = mdir->rbyd.blocks[0]; bshrub->rbyd.trunk = 0; bshrub->rbyd.weight = 0; bshrub->progged = 0; @@ -4759,7 +4762,7 @@ static int lfsr_bshrub_alloc(lfs_t *lfs, static int lfsr_bshrub_fetch(lfs_t *lfs, const lfsr_mdir_t *mdir, lfsr_bshrub_t *bshrub, lfs_size_t trunk, lfsr_rid_t weight) { - bshrub->rbyd.block = mdir->rbyd.block; + bshrub->rbyd.blocks[0] = mdir->rbyd.blocks[0]; bshrub->rbyd.trunk = trunk; bshrub->rbyd.weight = weight; @@ -5006,7 +5009,7 @@ static int lfsr_data_readmptr(lfs_t *lfs, lfsr_data_t *data, // mdir convenience functions static inline const lfsr_mptr_t *lfsr_mdir_mptr(const lfsr_mdir_t *mdir) { - return (const lfsr_mptr_t*)mdir->blocks; + return (const lfsr_mptr_t*)mdir->rbyd.blocks; } static inline int lfsr_mdir_cmp(const lfsr_mdir_t *a, const lfsr_mdir_t *b) { @@ -5029,14 +5032,6 @@ static inline bool lfsr_mdir_isroot(const lfsr_mdir_t *mdir) { return lfsr_mid_isroot(mdir->mid); } -// sync on-disk state, note this does not touch the mid -static inline void lfsr_mdir_sync(lfsr_mdir_t *mdir, - const lfsr_mdir_t *mdir_) { - mdir->blocks[0] = mdir_->blocks[0]; - mdir->blocks[1] = mdir_->blocks[1]; - mdir->rbyd = mdir_->rbyd; -} - // track opened mdirs that may need to by updated static void lfsr_mdir_addopened(lfs_t *lfs, int type, lfsr_openedmdir_t *opened) { @@ -5104,10 +5099,9 @@ static int lfsr_mdir_fetch(lfs_t *lfs, lfsr_mdir_t *mdir, } if (err != LFS_ERR_CORRUPT) { - // keep track of redund blocks for compactions mdir->mid = mid; - mdir->blocks[0] = blocks_[0]; - mdir->blocks[1] = blocks_[1]; + // keep track of other block for compactions + mdir->rbyd.blocks[1] = blocks_[1]; return 0; } @@ -5122,8 +5116,6 @@ static int lfsr_mdir_fetch(lfs_t *lfs, lfsr_mdir_t *mdir, static int lfsr_mdir_lookupnext(lfs_t *lfs, const lfsr_mdir_t *mdir, lfsr_smid_t mid, lfsr_tag_t tag, lfsr_tag_t *tag_, lfsr_data_t *data_) { - LFS_ASSERT(mdir->blocks[0] == mdir->rbyd.block); - lfsr_smid_t mid_; lfsr_tag_t tag__; int err = lfsr_rbyd_lookupnext(lfs, &mdir->rbyd, @@ -5211,8 +5203,6 @@ static int lfsr_mtree_lookup(lfs_t *lfs, lfsr_smid_t mid, LFS_ASSERT(mid >= 0); LFS_ASSERT(mid < (lfsr_smid_t)lfsr_mweight(lfs)); mdir_->mid = mid; - mdir_->blocks[0] = lfs->mroot.blocks[0]; - mdir_->blocks[1] = lfs->mroot.blocks[1]; mdir_->rbyd = lfs->mroot.rbyd; return 0; @@ -5297,13 +5287,12 @@ static int lfsr_mdir_alloc(lfs_t *lfs, lfsr_mdir_t *mdir, lfsr_smid_t mid) { // allocate two blocks for (int i = 0; i < 2; i++) { - int err = lfs_alloc(lfs, &mdir->blocks[i]); + int err = lfs_alloc(lfs, &mdir->rbyd.blocks[i]); if (err) { return err; } } - mdir->rbyd.block = mdir->blocks[0]; mdir->rbyd.weight = 0; mdir->rbyd.trunk = 0; mdir->rbyd.eoff = 0; @@ -5314,7 +5303,7 @@ static int lfsr_mdir_alloc(lfs_t *lfs, lfsr_mdir_t *mdir, lfsr_smid_t mid) { // we use whatever is on-disk to avoid needing to rewrite the // redund block uint32_t rev; - int err = lfsr_bd_read(lfs, mdir->blocks[1], 0, sizeof(uint32_t), + int err = lfsr_bd_read(lfs, mdir->rbyd.blocks[1], 0, sizeof(uint32_t), &rev, sizeof(uint32_t)); if (err && err != LFS_ERR_CORRUPT) { return err; @@ -5329,7 +5318,7 @@ static int lfsr_mdir_alloc(lfs_t *lfs, lfsr_mdir_t *mdir, lfsr_smid_t mid) { } // erase, preparing for compact - err = lfsr_bd_erase(lfs, mdir->blocks[0]); + err = lfsr_bd_erase(lfs, mdir->rbyd.blocks[0]); if (err) { return err; } @@ -5351,7 +5340,7 @@ static int lfsr_mdir_swap(lfs_t *lfs, lfsr_mdir_t *mdir_, // first thing we need to do is read our current revision count uint32_t rev; - int err = lfsr_bd_read(lfs, mdir->blocks[0], 0, sizeof(uint32_t), + int err = lfsr_bd_read(lfs, mdir->rbyd.blocks[0], 0, sizeof(uint32_t), &rev, sizeof(uint32_t)); if (err && err != LFS_ERR_CORRUPT) { return err; @@ -5369,16 +5358,15 @@ static int lfsr_mdir_swap(lfs_t *lfs, lfsr_mdir_t *mdir_, } // swap our blocks - mdir_->blocks[0] = mdir->blocks[1]; - mdir_->blocks[1] = mdir->blocks[0]; - mdir_->rbyd.block = mdir_->blocks[0]; + mdir_->rbyd.blocks[0] = mdir->rbyd.blocks[1]; + mdir_->rbyd.blocks[1] = mdir->rbyd.blocks[0]; mdir_->rbyd.weight = 0; mdir_->rbyd.trunk = 0; mdir_->rbyd.eoff = 0; mdir_->rbyd.cksum = 0; // erase, preparing for compact - err = lfsr_bd_erase(lfs, mdir_->blocks[0]); + err = lfsr_bd_erase(lfs, mdir_->rbyd.blocks[0]); if (err) { return err; } @@ -5408,7 +5396,6 @@ static inline bool lfsr_file_isunsynced(const lfsr_file_t *file); static int lfsr_mdir_commit__(lfs_t *lfs, lfsr_mdir_t *mdir, lfsr_srid_t start_rid, lfsr_srid_t end_rid, const lfsr_attr_t *attrs, lfs_size_t attr_count) { - LFS_ASSERT(mdir->blocks[0] == mdir->rbyd.block); // try to append a commit lfsr_mdir_t mdir_ = *mdir; // mark as erased in case of failure @@ -5578,7 +5565,6 @@ static int lfsr_mdir_commit__(lfs_t *lfs, lfsr_mdir_t *mdir, static int lfsr_mdir_compact__(lfs_t *lfs, lfsr_mdir_t *mdir_, lfsr_srid_t start_rid, lfsr_srid_t end_rid, const lfsr_mdir_t *mdir) { - LFS_ASSERT(mdir_->blocks[0] == mdir_->rbyd.block); // this is basically the same as lfsr_rbyd_appendcompactrbyd + // lfsr_rbyd_compact, but with special handling for inlined trees. // @@ -5638,7 +5624,7 @@ static int lfsr_mdir_compact__(lfs_t *lfs, lfsr_mdir_t *mdir_, // this is a bit tricky since we don't know the tag size, // but we have just enough info file->u.bsprout.data = LFSR_DATA_DISK( - mdir_->rbyd.block, + mdir_->rbyd.blocks[0], mdir_->rbyd.eoff - lfsr_data_size(&data), lfsr_data_size(&data)); } @@ -5741,7 +5727,7 @@ static int lfsr_mdir_compact__(lfs_t *lfs, lfsr_mdir_t *mdir_, // this is a bit tricky since we don't know the tag size, // but we have just enough info file->u.bsprout.data_ = LFSR_DATA_DISK( - mdir_->rbyd.block, + mdir_->rbyd.blocks[0], mdir_->rbyd.eoff - lfsr_data_size(&file->u.bsprout.data), lfsr_data_size(&file->u.bsprout.data)); @@ -6075,8 +6061,8 @@ static int lfsr_mroot_commit(lfs_t *lfs, LFS_DEBUG("Relocating mroot 0x{%"PRIx32",%"PRIx32"} " "-> 0x{%"PRIx32",%"PRIx32"}", - mrootchild.blocks[0], mrootchild.blocks[1], - mrootchild_.blocks[0], mrootchild_.blocks[1]); + mrootchild.rbyd.blocks[0], mrootchild.rbyd.blocks[1], + mrootchild_.rbyd.blocks[0], mrootchild_.rbyd.blocks[1]); mrootchild = mrootparent_; @@ -6102,9 +6088,9 @@ static int lfsr_mroot_commit(lfs_t *lfs, LFS_DEBUG("Extending mroot 0x{%"PRIx32",%"PRIx32"}" " -> 0x{%"PRIx32",%"PRIx32"}" ", 0x{%"PRIx32",%"PRIx32"}", - mrootchild.blocks[0], mrootchild.blocks[1], - mrootchild.blocks[0], mrootchild.blocks[1], - mrootchild_.blocks[0], mrootchild_.blocks[1]); + mrootchild.rbyd.blocks[0], mrootchild.rbyd.blocks[1], + mrootchild.rbyd.blocks[0], mrootchild.rbyd.blocks[1], + mrootchild_.rbyd.blocks[0], mrootchild_.rbyd.blocks[1]); // compact into the new mroot anchor lfsr_mdir_t mrootanchor_; @@ -6180,7 +6166,7 @@ static int lfsr_mroot_commit(lfs_t *lfs, } // update any opened mdirs in our mroot - lfsr_mdir_sync(&opened->mdir, &mroot_); + opened->mdir.rbyd = mroot_.rbyd; } } } @@ -6316,7 +6302,7 @@ static int lfsr_mdir_commit(lfs_t *lfs, lfsr_mdir_t *mdir, } // keep mdir_ in sync with mroot - lfsr_mdir_sync(&mdir_, &lfs->mroot); + mdir_.rbyd = lfs->mroot.rbyd; // otherwise commit normally } else { @@ -6397,9 +6383,9 @@ static int lfsr_mdir_commit(lfs_t *lfs, lfsr_mdir_t *mdir, "-> 0x{%"PRIx32",%"PRIx32"}, " "0x{%"PRIx32",%"PRIx32"}", mdir->mid >> lfs->mbits, - mdir->blocks[0], mdir->blocks[1], - mdir_.blocks[0], mdir_.blocks[1], - msibling_.blocks[0], msibling_.blocks[1]); + mdir->rbyd.blocks[0], mdir->rbyd.blocks[1], + mdir_.rbyd.blocks[0], mdir_.rbyd.blocks[1], + msibling_.rbyd.blocks[0], msibling_.rbyd.blocks[1]); // because of defered commits, both children can still be reduced // to zero, need to catch this here @@ -6409,11 +6395,11 @@ static int lfsr_mdir_commit(lfs_t *lfs, lfsr_mdir_t *mdir, LFS_DEBUG("Dropping mdir %"PRId32" " "0x{%"PRIx32",%"PRIx32"}", mdir_.mid >> lfs->mbits, - mdir_.blocks[0], mdir_.blocks[1]); + mdir_.rbyd.blocks[0], mdir_.rbyd.blocks[1]); LFS_DEBUG("Dropping mdir %"PRId32" " "0x{%"PRIx32",%"PRIx32"}", msibling_.mid >> lfs->mbits, - msibling_.blocks[0], msibling_.blocks[1]); + msibling_.rbyd.blocks[0], msibling_.rbyd.blocks[1]); goto drop; // one sibling reduced to zero @@ -6421,7 +6407,7 @@ static int lfsr_mdir_commit(lfs_t *lfs, lfsr_mdir_t *mdir, LFS_DEBUG("Dropping mdir %"PRId32" " "0x{%"PRIx32",%"PRIx32"}", msibling_.mid >> lfs->mbits, - msibling_.blocks[0], msibling_.blocks[1]); + msibling_.rbyd.blocks[0], msibling_.rbyd.blocks[1]); goto relocate; // other sibling reduced to zero @@ -6429,8 +6415,8 @@ static int lfsr_mdir_commit(lfs_t *lfs, lfsr_mdir_t *mdir, LFS_DEBUG("Dropping mdir %"PRId32" " "0x{%"PRIx32",%"PRIx32"}", mdir_.mid >> lfs->mbits, - mdir_.blocks[0], mdir_.blocks[1]); - lfsr_mdir_sync(&mdir_, &msibling_); + mdir_.rbyd.blocks[0], mdir_.rbyd.blocks[1]); + mdir_.rbyd = msibling_.rbyd; goto relocate; } @@ -6529,7 +6515,7 @@ static int lfsr_mdir_commit(lfs_t *lfs, lfsr_mdir_t *mdir, LFS_DEBUG("Dropping mdir %"PRId32" " "0x{%"PRIx32",%"PRIx32"}", mdir->mid >> lfs->mbits, - mdir->blocks[0], mdir->blocks[1]); + mdir->rbyd.blocks[0], mdir->rbyd.blocks[1]); // consume gstate so we don't lose any info err = lfsr_fs_consumegdelta(lfs, mdir); @@ -6601,8 +6587,8 @@ static int lfsr_mdir_commit(lfs_t *lfs, lfsr_mdir_t *mdir, LFS_DEBUG("Relocating mdir %"PRId32" " "0x{%"PRIx32",%"PRIx32"} -> 0x{%"PRIx32",%"PRIx32"}", mdir->mid >> lfs->mbits, - mdir->blocks[0], mdir->blocks[1], - mdir_.blocks[0], mdir_.blocks[1]); + mdir->rbyd.blocks[0], mdir->rbyd.blocks[1], + mdir_.rbyd.blocks[0], mdir_.rbyd.blocks[1]); relocate:; // new mtree? @@ -6705,9 +6691,9 @@ static int lfsr_mdir_commit(lfs_t *lfs, lfsr_mdir_t *mdir, >= mdir_.rbyd.weight) { opened->mdir.mid += lfsr_mweight(lfs) - mdir_.rbyd.weight; - lfsr_mdir_sync(&opened->mdir, &msibling_); + opened->mdir.rbyd = msibling_.rbyd; } else { - lfsr_mdir_sync(&opened->mdir, &mdir_); + opened->mdir.rbyd = mdir_.rbyd; } } else if (opened->mdir.mid > mdir->mid) { opened->mdir.mid += mdelta; @@ -6758,13 +6744,13 @@ static int lfsr_mdir_commit(lfs_t *lfs, lfsr_mdir_t *mdir, // update mdir to follow requested rid if (mdir->mid == -1) { - lfsr_mdir_sync(mdir, &lfs->mroot); + mdir->rbyd = lfs->mroot.rbyd; } else if (mdelta > 0 && lfsr_mdir_rid(lfs, mdir) >= mdir_.rbyd.weight) { mdir->mid += lfsr_mweight(lfs) - mdir_.rbyd.weight; - lfsr_mdir_sync(mdir, &msibling_); + mdir->rbyd = msibling_.rbyd; } else { - lfsr_mdir_sync(mdir, &mdir_); + mdir->rbyd = mdir_.rbyd; } return 0; @@ -7204,7 +7190,7 @@ static int lfsr_traversal_read(lfs_t *lfs, lfsr_traversal_t *traversal, // match if (lfsr_traversal_isvalidate(traversal)) { err = lfsr_rbyd_fetchvalidate(lfs, &tinfo->u.rbyd, - tinfo->u.rbyd.block, tinfo->u.rbyd.trunk, + tinfo->u.rbyd.blocks[0], tinfo->u.rbyd.trunk, tinfo->u.rbyd.weight, tinfo->u.rbyd.cksum); if (err) { @@ -7254,7 +7240,7 @@ static int lfsr_traversal_read(lfs_t *lfs, lfsr_traversal_t *traversal, // uninitialized in mountinited and 2. stack really matters since // we're at the bottom of lfs_alloc) if (binfo.tag == LFSR_TAG_BRANCH - && binfo.u.rbyd.block == lfs->mtree.u.btree.block) { + && binfo.u.rbyd.blocks[0] == lfs->mtree.u.btree.blocks[0]) { continue; } @@ -7265,7 +7251,7 @@ static int lfsr_traversal_read(lfs_t *lfs, lfsr_traversal_t *traversal, // match if (lfsr_traversal_isvalidate(traversal)) { err = lfsr_rbyd_fetchvalidate(lfs, &binfo.u.rbyd, - binfo.u.rbyd.block, binfo.u.rbyd.trunk, + binfo.u.rbyd.blocks[0], binfo.u.rbyd.trunk, binfo.u.rbyd.weight, binfo.u.rbyd.cksum); if (err) { @@ -7442,7 +7428,7 @@ static int lfsr_traversal_read(lfs_t *lfs, lfsr_traversal_t *traversal, // match if (lfsr_traversal_isvalidate(traversal)) { err = lfsr_rbyd_fetchvalidate(lfs, &binfo.u.rbyd, - binfo.u.rbyd.block, binfo.u.rbyd.trunk, + binfo.u.rbyd.blocks[0], binfo.u.rbyd.trunk, binfo.u.rbyd.weight, binfo.u.rbyd.cksum); if (err) { @@ -8084,9 +8070,9 @@ static int lfsr_formatinited(lfs_t *lfs) { for (int i = 0; i < 2; i++) { // write superblock to both rbyds in the root mroot to hopefully // avoid mounting an older filesystem on disk - lfsr_rbyd_t rbyd = {.block=i, .eoff=0, .trunk=0}; + lfsr_rbyd_t rbyd = {.blocks[0]=i, .eoff=0, .trunk=0}; - int err = lfsr_bd_erase(lfs, rbyd.block); + int err = lfsr_bd_erase(lfs, rbyd.blocks[0]); if (err) { return err; } @@ -8153,8 +8139,8 @@ int lfsr_mount(lfs_t *lfs, const struct lfs_config *cfg) { "bd %"PRId32"x%"PRId32, LFS_DISK_VERSION_MAJOR, LFS_DISK_VERSION_MINOR, - lfs->mroot.blocks[0], - lfs->mroot.blocks[1], + lfs->mroot.rbyd.blocks[0], + lfs->mroot.rbyd.blocks[1], lfs->mroot.rbyd.trunk, lfsr_mtree_weight(lfs) / lfsr_mweight(lfs), lfsr_mweight(lfs), @@ -8284,11 +8270,11 @@ static int lfs_alloc(lfs_t *lfs, lfs_block_t *block) { // mark any blocks we see at in-use, including any btree/mdir blocks if (tinfo.tag == LFSR_TAG_MDIR) { - lfs_alloc_setinuse(lfs, tinfo.u.mdir.blocks[1]); - lfs_alloc_setinuse(lfs, tinfo.u.mdir.blocks[0]); + lfs_alloc_setinuse(lfs, tinfo.u.mdir.rbyd.blocks[1]); + lfs_alloc_setinuse(lfs, tinfo.u.mdir.rbyd.blocks[0]); } else if (tinfo.tag == LFSR_TAG_BRANCH) { - lfs_alloc_setinuse(lfs, tinfo.u.rbyd.block); + lfs_alloc_setinuse(lfs, tinfo.u.rbyd.blocks[0]); } else if (tinfo.tag == LFSR_TAG_BLOCK) { lfs_alloc_setinuse(lfs, tinfo.u.bptr.block); @@ -9025,14 +9011,14 @@ static inline bool lfsr_file_isbsprout(const lfsr_file_t *file) { return (lfs_size_t)file->u.bsprout.data.u.disk.size > (LFSR_FILE_ISDIRECT | 0) && file->u.bsprout.data.u.disk.block - == file->mdir.blocks[0]; + == file->mdir.rbyd.blocks[0]; } static inline bool lfsr_file_isbptr(const lfsr_file_t *file) { return (lfs_size_t)file->u.bsprout.data.u.disk.size > (LFSR_FILE_ISDIRECT | 0) && file->u.bsprout.data.u.disk.block - != file->mdir.blocks[0]; + != file->mdir.rbyd.blocks[0]; } static inline bool lfsr_file_isbshrub(const lfsr_file_t *file) { diff --git a/lfs.h b/lfs.h index e6050872..2a052e3b 100644 --- a/lfs.h +++ b/lfs.h @@ -363,7 +363,7 @@ typedef struct lfs_cache { typedef struct lfsr_rbyd { // note this lines up with weight in lfsr_btree_t lfsr_srid_t weight; - lfs_block_t block; + lfs_block_t blocks[2]; // eoff=0, trunk=0 => not yet committed // eoff=0, trunk>0 => not yet fetched // eoff>=block_size => rbyd not erased/needs compaction @@ -388,8 +388,6 @@ typedef struct lfsr_mptr { typedef struct lfsr_mdir { lfsr_smid_t mid; - // block[0] should always be the active block, block[0]=rbyd.block - lfs_block_t blocks[2]; lfsr_rbyd_t rbyd; } lfsr_mdir_t; diff --git a/tests/test_alloc.toml b/tests/test_alloc.toml index a15ed9cf..31f77c4e 100644 --- a/tests/test_alloc.toml +++ b/tests/test_alloc.toml @@ -176,22 +176,23 @@ code = ''' if (tinfo.tag == LFSR_TAG_MDIR) { printf("traversal: 0x%x mdir 0x{%x,%x}\n", tinfo.tag, - tinfo.u.mdir.blocks[0], - tinfo.u.mdir.blocks[1]); + tinfo.u.mdir.rbyd.blocks[0], + tinfo.u.mdir.rbyd.blocks[1]); // keep track of seen blocks - seen[tinfo.u.mdir.blocks[1] / 8] - |= 1 << (tinfo.u.mdir.blocks[1] % 8); - seen[tinfo.u.mdir.blocks[0] / 8] - |= 1 << (tinfo.u.mdir.blocks[0] % 8); + seen[tinfo.u.mdir.rbyd.blocks[1] / 8] + |= 1 << (tinfo.u.mdir.rbyd.blocks[1] % 8); + seen[tinfo.u.mdir.rbyd.blocks[0] / 8] + |= 1 << (tinfo.u.mdir.rbyd.blocks[0] % 8); } else if (tinfo.tag == LFSR_TAG_BRANCH) { printf("traversal: 0x%x btree 0x%x.%x\n", tinfo.tag, - tinfo.u.rbyd.block, tinfo.u.rbyd.trunk); + tinfo.u.rbyd.blocks[0], tinfo.u.rbyd.trunk); // keep track of seen blocks - seen[tinfo.u.rbyd.block / 8] |= 1 << (tinfo.u.rbyd.block % 8); + seen[tinfo.u.rbyd.blocks[0] / 8] + |= 1 << (tinfo.u.rbyd.blocks[0] % 8); } else { // this shouldn't happen @@ -332,22 +333,23 @@ code = ''' if (tinfo.tag == LFSR_TAG_MDIR) { printf("traversal: 0x%x mdir 0x{%x,%x}\n", tinfo.tag, - tinfo.u.mdir.blocks[0], - tinfo.u.mdir.blocks[1]); + tinfo.u.mdir.rbyd.blocks[0], + tinfo.u.mdir.rbyd.blocks[1]); // keep track of seen blocks - seen[tinfo.u.mdir.blocks[1] / 8] - |= 1 << (tinfo.u.mdir.blocks[1] % 8); - seen[tinfo.u.mdir.blocks[0] / 8] - |= 1 << (tinfo.u.mdir.blocks[0] % 8); + seen[tinfo.u.mdir.rbyd.blocks[1] / 8] + |= 1 << (tinfo.u.mdir.rbyd.blocks[1] % 8); + seen[tinfo.u.mdir.rbyd.blocks[0] / 8] + |= 1 << (tinfo.u.mdir.rbyd.blocks[0] % 8); } else if (tinfo.tag == LFSR_TAG_BRANCH) { printf("traversal: 0x%x btree 0x%x.%x\n", tinfo.tag, - tinfo.u.rbyd.block, tinfo.u.rbyd.trunk); + tinfo.u.rbyd.blocks[0], tinfo.u.rbyd.trunk); // keep track of seen blocks - seen[tinfo.u.rbyd.block / 8] |= 1 << (tinfo.u.rbyd.block % 8); + seen[tinfo.u.rbyd.blocks[0] / 8] + |= 1 << (tinfo.u.rbyd.blocks[0] % 8); } else if (tinfo.tag == LFSR_TAG_BLOCK) { printf("traversal: 0x%x block 0x%x\n", @@ -478,22 +480,23 @@ code = ''' if (tinfo.tag == LFSR_TAG_MDIR) { printf("traversal: 0x%x mdir 0x{%x,%x}\n", tinfo.tag, - tinfo.u.mdir.blocks[0], - tinfo.u.mdir.blocks[1]); + tinfo.u.mdir.rbyd.blocks[0], + tinfo.u.mdir.rbyd.blocks[1]); // keep track of seen blocks - seen[tinfo.u.mdir.blocks[1] / 8] - |= 1 << (tinfo.u.mdir.blocks[1] % 8); - seen[tinfo.u.mdir.blocks[0] / 8] - |= 1 << (tinfo.u.mdir.blocks[0] % 8); + seen[tinfo.u.mdir.rbyd.blocks[1] / 8] + |= 1 << (tinfo.u.mdir.rbyd.blocks[1] % 8); + seen[tinfo.u.mdir.rbyd.blocks[0] / 8] + |= 1 << (tinfo.u.mdir.rbyd.blocks[0] % 8); } else if (tinfo.tag == LFSR_TAG_BRANCH) { printf("traversal: 0x%x btree 0x%x.%x\n", tinfo.tag, - tinfo.u.rbyd.block, tinfo.u.rbyd.trunk); + tinfo.u.rbyd.blocks[0], tinfo.u.rbyd.trunk); // keep track of seen blocks - seen[tinfo.u.rbyd.block / 8] |= 1 << (tinfo.u.rbyd.block % 8); + seen[tinfo.u.rbyd.blocks[0] / 8] + |= 1 << (tinfo.u.rbyd.blocks[0] % 8); } else if (tinfo.tag == LFSR_TAG_BLOCK) { printf("traversal: 0x%x block 0x%x\n", diff --git a/tests/test_btree.toml b/tests/test_btree.toml index a15e1184..4d707359 100644 --- a/tests/test_btree.toml +++ b/tests/test_btree.toml @@ -120,7 +120,7 @@ code = ''' lfsr_btree_alloc(&lfs, &btree) => 0; printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); assert(btree.weight == 0); @@ -154,7 +154,7 @@ code = ''' LFSR_DATA_BUF("a", 1)) => 0; printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); assert(btree.weight == 1); @@ -196,7 +196,7 @@ code = ''' LFSR_DATA_BUF("b", 1)) => 0; printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); assert(btree.weight == 2); @@ -243,7 +243,7 @@ code = ''' LFSR_DATA_BUF("a", 1)) => 0; printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); assert(btree.weight == 2); @@ -293,7 +293,7 @@ code = ''' LFSR_DATA_BUF("c", 1)) => 0; printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); assert(btree.weight == 3); @@ -348,7 +348,7 @@ code = ''' LFSR_DATA_BUF("a", 1)) => 0; printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); assert(btree.weight == 3); @@ -412,7 +412,7 @@ code = ''' } printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); assert(btree.weight == n); @@ -465,7 +465,7 @@ code = ''' } printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); assert(btree.weight == n); @@ -549,7 +549,7 @@ code = ''' printf("]\n"); printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); assert(btree.weight == sim_size); @@ -605,7 +605,7 @@ code = ''' } printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); assert(btree.weight == n*W); @@ -727,7 +727,7 @@ code = ''' printf("]\n"); printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); lfs_size_t total_weight = 0; @@ -810,7 +810,7 @@ code = ''' LFSR_DATA_BUF("A", 1)) => 0; printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); assert(btree.weight == 1); @@ -856,7 +856,7 @@ code = ''' LFSR_DATA_BUF("B", 1)) => 0; printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); assert(btree.weight == 2); @@ -912,7 +912,7 @@ code = ''' LFSR_DATA_BUF("C", 1)) => 0; printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); assert(btree.weight == 3); @@ -969,7 +969,7 @@ code = ''' if (err == LFS_ERR_NOSPC) { printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); return; } @@ -983,7 +983,7 @@ code = ''' if (err == LFS_ERR_NOSPC) { printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); return; } @@ -991,7 +991,7 @@ code = ''' } printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); assert(btree.weight == N); @@ -1042,7 +1042,7 @@ code = ''' if (err == LFS_ERR_NOSPC) { printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); return; } @@ -1089,7 +1089,7 @@ code = ''' printf("]\n"); printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); assert(btree.weight == N); @@ -1139,7 +1139,7 @@ code = ''' if (err == LFS_ERR_NOSPC) { printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); return; } @@ -1153,7 +1153,7 @@ code = ''' if (err == LFS_ERR_NOSPC) { printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); return; } @@ -1161,7 +1161,7 @@ code = ''' } printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); assert(btree.weight == N*W); @@ -1228,7 +1228,7 @@ code = ''' if (err == LFS_ERR_NOSPC) { printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); return; } @@ -1294,7 +1294,7 @@ code = ''' printf("]\n"); printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); lfs_size_t total_weight = 0; @@ -1377,7 +1377,7 @@ code = ''' lfsr_btree_pop(&lfs, &btree, 0) => 0; printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); assert(btree.weight == 0); @@ -1394,7 +1394,7 @@ code = ''' LFSR_DATA_BUF("A", 1)) => 0; printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); assert(btree.weight == 1); @@ -1433,7 +1433,7 @@ code = ''' lfsr_btree_pop(&lfs, &btree, 1) => 0; printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); assert(btree.weight == 1); @@ -1456,7 +1456,7 @@ code = ''' LFSR_DATA_BUF("B", 1)) => 0; printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); assert(btree.weight == 2); @@ -1501,7 +1501,7 @@ code = ''' lfsr_btree_pop(&lfs, &btree, 0) => 0; printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); assert(btree.weight == 1); @@ -1524,7 +1524,7 @@ code = ''' LFSR_DATA_BUF("A", 1)) => 0; printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); assert(btree.weight == 2); @@ -1571,7 +1571,7 @@ code = ''' lfsr_btree_pop(&lfs, &btree, 2) => 0; printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); assert(btree.weight == 2); @@ -1600,7 +1600,7 @@ code = ''' LFSR_DATA_BUF("C", 1)) => 0; printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); assert(btree.weight == 3); @@ -1654,7 +1654,7 @@ code = ''' if (err == LFS_ERR_NOSPC) { printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); return; } @@ -1667,7 +1667,7 @@ code = ''' if (err == LFS_ERR_NOSPC) { printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); return; } @@ -1676,7 +1676,7 @@ code = ''' printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); assert(btree.weight == REMAINING); @@ -1746,7 +1746,7 @@ code = ''' if (err == LFS_ERR_NOSPC) { printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); return; } @@ -1759,7 +1759,7 @@ code = ''' if (err == LFS_ERR_NOSPC) { printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); return; } @@ -1767,7 +1767,7 @@ code = ''' } printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); assert(btree.weight == REMAINING); @@ -1839,7 +1839,7 @@ code = ''' if (err == LFS_ERR_NOSPC) { printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); return; } @@ -1887,7 +1887,7 @@ code = ''' printf("]\n"); printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); assert(btree.weight == sim_size); @@ -1938,7 +1938,7 @@ code = ''' if (err == LFS_ERR_NOSPC) { printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); return; } @@ -1951,7 +1951,7 @@ code = ''' if (err == LFS_ERR_NOSPC) { printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); return; } @@ -1959,7 +1959,7 @@ code = ''' } printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); assert(btree.weight == REMAINING*W); @@ -2079,7 +2079,7 @@ code = ''' if (err == LFS_ERR_NOSPC) { printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); return; } @@ -2136,7 +2136,7 @@ code = ''' printf("]\n"); printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); lfs_size_t total_weight = 0; @@ -2228,7 +2228,7 @@ code = ''' } printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); assert(btree.weight == n); @@ -2318,7 +2318,7 @@ code = ''' printf("]\n"); printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); assert(btree.weight == sim_size); @@ -2377,7 +2377,7 @@ code = ''' } printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); assert(btree.weight == n*W); @@ -2518,7 +2518,7 @@ code = ''' printf("]\n"); printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); lfs_size_t total_weight = 0; @@ -2621,7 +2621,7 @@ code = ''' printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); assert(btree.weight == 1); @@ -2687,7 +2687,7 @@ code = ''' printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); assert(btree.weight == 1); @@ -2748,7 +2748,7 @@ code = ''' printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); assert(btree.weight == 1); @@ -2818,7 +2818,7 @@ code = ''' printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); assert(btree.weight == 1); @@ -2932,7 +2932,7 @@ code = ''' printf("]\n"); printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); assert(btree.weight == sim_size); @@ -3074,7 +3074,7 @@ code = ''' printf("]\n"); printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); lfs_size_t total_weight = 0; @@ -3150,7 +3150,7 @@ code = ''' lfsr_btree_alloc(&lfs, &btree) => 0; printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); assert(btree.weight == 0); @@ -3188,7 +3188,7 @@ code = ''' LFSR_ATTR(0, DATA, 0, BUF("0", 1)))) => 0; printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); assert(btree.weight == 1); @@ -3244,7 +3244,7 @@ code = ''' LFSR_TAG_DATA, 1, LFSR_DATA_BUF("1", 1)) => 0; printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); assert(btree.weight == 2); @@ -3312,7 +3312,7 @@ code = ''' LFSR_TAG_DATA, 1, LFSR_DATA_BUF("2", 1)) => 0; printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); assert(btree.weight == 3); @@ -3388,7 +3388,7 @@ code = ''' LFSR_TAG_DATA, 1, LFSR_DATA_BUF("1", 1)) => 0; printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); assert(btree.weight == 3); @@ -3478,7 +3478,7 @@ code = ''' } printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); assert(btree.weight == n); @@ -3593,7 +3593,7 @@ code = ''' printf("]\n"); printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); assert(btree.weight == sim_size); @@ -3665,7 +3665,7 @@ code = ''' } printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); assert(btree.weight == n*W); @@ -3808,7 +3808,7 @@ code = ''' printf("]\n"); printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); lfs_size_t total_weight = 0; @@ -3991,7 +3991,7 @@ code = ''' printf("]\n"); printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); assert(btree.weight == sim_size); @@ -4193,7 +4193,7 @@ code = ''' printf("]\n"); printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); lfs_size_t total_weight = 0; @@ -4264,7 +4264,7 @@ code = ''' } printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); assert(btree.weight == n); @@ -4306,10 +4306,11 @@ code = ''' binfo.bid, binfo.tag, binfo.weight, - binfo.u.rbyd.block, binfo.u.rbyd.trunk); + binfo.u.rbyd.blocks[0], binfo.u.rbyd.trunk); // keep track of seen blocks - seen[binfo.u.rbyd.block / 8] |= 1 << (binfo.u.rbyd.block % 8); + seen[binfo.u.rbyd.blocks[0] / 8] + |= 1 << (binfo.u.rbyd.blocks[0] % 8); } else if (binfo.tag == LFSR_TAG_DATA) { printf("traversal: %d 0x%x w%d data %d\n", @@ -4417,7 +4418,7 @@ code = ''' printf("]\n"); printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); assert(btree.weight == sim_size); @@ -4458,10 +4459,11 @@ code = ''' binfo.bid, binfo.tag, binfo.weight, - binfo.u.rbyd.block, binfo.u.rbyd.trunk); + binfo.u.rbyd.blocks[0], binfo.u.rbyd.trunk); // keep track of seen blocks - seen[binfo.u.rbyd.block / 8] |= 1 << (binfo.u.rbyd.block % 8); + seen[binfo.u.rbyd.blocks[0] / 8] + |= 1 << (binfo.u.rbyd.blocks[0] % 8); } else if (binfo.tag == LFSR_TAG_DATA) { printf("traversal: %d 0x%x w%d data %d\n", @@ -4506,7 +4508,7 @@ code = ''' printf("]\n"); printf("btree: w%d 0x%x.%x\n", btree.weight, - btree.block, + btree.blocks[0], btree.trunk); assert(btree.weight == sim_size); diff --git a/tests/test_mtree.toml b/tests/test_mtree.toml index 01cd4bc1..b5356437 100644 --- a/tests/test_mtree.toml +++ b/tests/test_mtree.toml @@ -2741,14 +2741,10 @@ code = ''' // this test only works if these all fit in the mroot assert(lfsr_mtree_ismptr(&lfs)); - lfsr_openedmdir_t left_neighbor = {.mdir={ - .mid=0, - .blocks={lfs.mroot.blocks[0], lfs.mroot.blocks[1]}, - .rbyd=lfs.mroot.rbyd}}; - lfsr_openedmdir_t right_neighbor = {.mdir={ - .mid=1, - .blocks={lfs.mroot.blocks[0], lfs.mroot.blocks[1]}, - .rbyd=lfs.mroot.rbyd}}; + lfsr_openedmdir_t left_neighbor = { + .mdir={.mid=0, .rbyd=lfs.mroot.rbyd}}; + lfsr_openedmdir_t right_neighbor = { + .mdir={.mid=1, .rbyd=lfs.mroot.rbyd}}; lfsr_mdir_addopened(&lfs, LFS_TYPE_INTERNAL, &left_neighbor); lfsr_mdir_addopened(&lfs, LFS_TYPE_INTERNAL, &right_neighbor); @@ -2795,14 +2791,10 @@ code = ''' // this test only works if these all fit in the mroot assert(lfsr_mtree_ismptr(&lfs)); - lfsr_openedmdir_t left_neighbor = {.mdir={ - .mid=0, - .blocks={lfs.mroot.blocks[0], lfs.mroot.blocks[1]}, - .rbyd=lfs.mroot.rbyd}}; - lfsr_openedmdir_t right_neighbor = {.mdir={ - .mid=1, - .blocks={lfs.mroot.blocks[0], lfs.mroot.blocks[1]}, - .rbyd=lfs.mroot.rbyd}}; + lfsr_openedmdir_t left_neighbor = { + .mdir={.mid=0, .rbyd=lfs.mroot.rbyd}}; + lfsr_openedmdir_t right_neighbor = { + .mdir={.mid=1, .rbyd=lfs.mroot.rbyd}}; lfsr_mdir_addopened(&lfs, LFS_TYPE_INTERNAL, &left_neighbor); lfsr_mdir_addopened(&lfs, LFS_TYPE_INTERNAL, &right_neighbor); @@ -2842,14 +2834,10 @@ code = ''' // this test only works if these all fit in the mroot assert(lfsr_mtree_ismptr(&lfs)); - lfsr_openedmdir_t left_neighbor = {.mdir={ - .mid=0, - .blocks={lfs.mroot.blocks[0], lfs.mroot.blocks[1]}, - .rbyd=lfs.mroot.rbyd}}; - lfsr_openedmdir_t right_neighbor = {.mdir={ - .mid=1, - .blocks={lfs.mroot.blocks[0], lfs.mroot.blocks[1]}, - .rbyd=lfs.mroot.rbyd}}; + lfsr_openedmdir_t left_neighbor = { + .mdir={.mid=0, .rbyd=lfs.mroot.rbyd}}; + lfsr_openedmdir_t right_neighbor = { + .mdir={.mid=1, .rbyd=lfs.mroot.rbyd}}; lfsr_mdir_addopened(&lfs, LFS_TYPE_INTERNAL, &left_neighbor); lfsr_mdir_addopened(&lfs, LFS_TYPE_INTERNAL, &right_neighbor); @@ -2891,14 +2879,10 @@ code = ''' // this test only works if these all fit in the mroot assert(lfsr_mtree_ismptr(&lfs)); - lfsr_openedmdir_t left_neighbor = {.mdir={ - .mid=0, - .blocks={lfs.mroot.blocks[0], lfs.mroot.blocks[1]}, - .rbyd=lfs.mroot.rbyd}}; - lfsr_openedmdir_t right_neighbor = {.mdir={ - .mid=1, - .blocks={lfs.mroot.blocks[0], lfs.mroot.blocks[1]}, - .rbyd=lfs.mroot.rbyd}}; + lfsr_openedmdir_t left_neighbor = { + .mdir={.mid=0, .rbyd=lfs.mroot.rbyd}}; + lfsr_openedmdir_t right_neighbor = { + .mdir={.mid=1, .rbyd=lfs.mroot.rbyd}}; lfsr_mdir_addopened(&lfs, LFS_TYPE_INTERNAL, &left_neighbor); lfsr_mdir_addopened(&lfs, LFS_TYPE_INTERNAL, &right_neighbor); @@ -2975,14 +2959,10 @@ code = ''' // this test only works if these all fit in the mroot assert(lfsr_mtree_ismptr(&lfs)); - lfsr_openedmdir_t left_neighbor = {.mdir={ - .mid=0, - .blocks={lfs.mroot.blocks[0], lfs.mroot.blocks[1]}, - .rbyd=lfs.mroot.rbyd}}; - lfsr_openedmdir_t right_neighbor = {.mdir={ - .mid=1, - .blocks={lfs.mroot.blocks[0], lfs.mroot.blocks[1]}, - .rbyd=lfs.mroot.rbyd}}; + lfsr_openedmdir_t left_neighbor = { + .mdir={.mid=0, .rbyd=lfs.mroot.rbyd}}; + lfsr_openedmdir_t right_neighbor = { + .mdir={.mid=1, .rbyd=lfs.mroot.rbyd}}; lfsr_mdir_addopened(&lfs, LFS_TYPE_INTERNAL, &left_neighbor); lfsr_mdir_addopened(&lfs, LFS_TYPE_INTERNAL, &right_neighbor); @@ -3081,14 +3061,10 @@ code = ''' assert(lfsr_mtree_weight(&lfs) == 1*lfsr_mweight(&lfs)); assert(mdir.rbyd.weight == 3); - lfsr_openedmdir_t left_neighbor = {.mdir={ - .mid=mdir.mid+0, - .blocks={mdir.blocks[0], mdir.blocks[1]}, - .rbyd=mdir.rbyd}}; - lfsr_openedmdir_t right_neighbor = {.mdir={ - .mid=mdir.mid+2, - .blocks={mdir.blocks[0], mdir.blocks[1]}, - .rbyd=mdir.rbyd}}; + lfsr_openedmdir_t left_neighbor = { + .mdir={.mid=mdir.mid+0, .rbyd=mdir.rbyd}}; + lfsr_openedmdir_t right_neighbor = { + .mdir={.mid=mdir.mid+2, .rbyd=mdir.rbyd}}; lfsr_mdir_addopened(&lfs, LFS_TYPE_INTERNAL, &left_neighbor); lfsr_mdir_addopened(&lfs, LFS_TYPE_INTERNAL, &right_neighbor); @@ -3162,14 +3138,10 @@ code = ''' // this test only works if these all fit in the mroot assert(lfsr_mtree_ismptr(&lfs)); - lfsr_openedmdir_t left_neighbor = {.mdir={ - .mid=0, - .blocks={lfs.mroot.blocks[0], lfs.mroot.blocks[1]}, - .rbyd=lfs.mroot.rbyd}}; - lfsr_openedmdir_t right_neighbor = {.mdir={ - .mid=1, - .blocks={lfs.mroot.blocks[0], lfs.mroot.blocks[1]}, - .rbyd=lfs.mroot.rbyd}}; + lfsr_openedmdir_t left_neighbor = { + .mdir={.mid=0, .rbyd=lfs.mroot.rbyd}}; + lfsr_openedmdir_t right_neighbor = { + .mdir={.mid=1, .rbyd=lfs.mroot.rbyd}}; lfsr_mdir_addopened(&lfs, LFS_TYPE_INTERNAL, &left_neighbor); lfsr_mdir_addopened(&lfs, LFS_TYPE_INTERNAL, &right_neighbor); @@ -3259,14 +3231,10 @@ code = ''' assert(lfsr_mtree_weight(&lfs) == 1*lfsr_mweight(&lfs)); assert(mdir.rbyd.weight == 3); - lfsr_openedmdir_t left_neighbor = {.mdir={ - .mid=mdir.mid+0, - .blocks={mdir.blocks[0], mdir.blocks[1]}, - .rbyd=mdir.rbyd}}; - lfsr_openedmdir_t right_neighbor = {.mdir={ - .mid=mdir.mid+2, - .blocks={mdir.blocks[0], mdir.blocks[1]}, - .rbyd=mdir.rbyd}}; + lfsr_openedmdir_t left_neighbor = { + .mdir={.mid=mdir.mid+0, .rbyd=mdir.rbyd}}; + lfsr_openedmdir_t right_neighbor = { + .mdir={.mid=mdir.mid+2, .rbyd=mdir.rbyd}}; lfsr_mdir_addopened(&lfs, LFS_TYPE_INTERNAL, &left_neighbor); lfsr_mdir_addopened(&lfs, LFS_TYPE_INTERNAL, &right_neighbor); @@ -3542,22 +3510,23 @@ code = ''' if (tinfo.tag == LFSR_TAG_MDIR) { printf("traversal: 0x%x mdir 0x{%x,%x}\n", tinfo.tag, - tinfo.u.mdir.blocks[0], - tinfo.u.mdir.blocks[1]); + tinfo.u.mdir.rbyd.blocks[0], + tinfo.u.mdir.rbyd.blocks[1]); // keep track of seen blocks - seen[tinfo.u.mdir.blocks[1] / 8] - |= 1 << (tinfo.u.mdir.blocks[1] % 8); - seen[tinfo.u.mdir.blocks[0] / 8] - |= 1 << (tinfo.u.mdir.blocks[0] % 8); + seen[tinfo.u.mdir.rbyd.blocks[1] / 8] + |= 1 << (tinfo.u.mdir.rbyd.blocks[1] % 8); + seen[tinfo.u.mdir.rbyd.blocks[0] / 8] + |= 1 << (tinfo.u.mdir.rbyd.blocks[0] % 8); } else if (tinfo.tag == LFSR_TAG_BRANCH) { printf("traversal: 0x%x btree 0x%x.%x\n", tinfo.tag, - tinfo.u.rbyd.block, tinfo.u.rbyd.trunk); + tinfo.u.rbyd.blocks[0], tinfo.u.rbyd.trunk); // keep track of seen blocks - seen[tinfo.u.rbyd.block / 8] |= 1 << (tinfo.u.rbyd.block % 8); + seen[tinfo.u.rbyd.blocks[0] / 8] + |= 1 << (tinfo.u.rbyd.blocks[0] % 8); } else { // this shouldn't happen @@ -3657,22 +3626,23 @@ code = ''' if (tinfo.tag == LFSR_TAG_MDIR) { printf("traversal: 0x%x mdir 0x{%x,%x}\n", tinfo.tag, - tinfo.u.mdir.blocks[0], - tinfo.u.mdir.blocks[1]); + tinfo.u.mdir.rbyd.blocks[0], + tinfo.u.mdir.rbyd.blocks[1]); // keep track of seen blocks - seen[tinfo.u.mdir.blocks[1] / 8] - |= 1 << (tinfo.u.mdir.blocks[1] % 8); - seen[tinfo.u.mdir.blocks[0] / 8] - |= 1 << (tinfo.u.mdir.blocks[0] % 8); + seen[tinfo.u.mdir.rbyd.blocks[1] / 8] + |= 1 << (tinfo.u.mdir.rbyd.blocks[1] % 8); + seen[tinfo.u.mdir.rbyd.blocks[0] / 8] + |= 1 << (tinfo.u.mdir.rbyd.blocks[0] % 8); } else if (tinfo.tag == LFSR_TAG_BRANCH) { printf("traversal: 0x%x btree 0x%x.%x\n", tinfo.tag, - tinfo.u.rbyd.block, tinfo.u.rbyd.trunk); + tinfo.u.rbyd.blocks[0], tinfo.u.rbyd.trunk); // keep track of seen blocks - seen[tinfo.u.rbyd.block / 8] |= 1 << (tinfo.u.rbyd.block % 8); + seen[tinfo.u.rbyd.blocks[0] / 8] + |= 1 << (tinfo.u.rbyd.blocks[0] % 8); } else { // this shouldn't happen @@ -3784,22 +3754,23 @@ code = ''' if (tinfo.tag == LFSR_TAG_MDIR) { printf("traversal: 0x%x mdir 0x{%x,%x}\n", tinfo.tag, - tinfo.u.mdir.blocks[0], - tinfo.u.mdir.blocks[1]); + tinfo.u.mdir.rbyd.blocks[0], + tinfo.u.mdir.rbyd.blocks[1]); // keep track of seen blocks - seen[tinfo.u.mdir.blocks[1] / 8] - |= 1 << (tinfo.u.mdir.blocks[1] % 8); - seen[tinfo.u.mdir.blocks[0] / 8] - |= 1 << (tinfo.u.mdir.blocks[0] % 8); + seen[tinfo.u.mdir.rbyd.blocks[1] / 8] + |= 1 << (tinfo.u.mdir.rbyd.blocks[1] % 8); + seen[tinfo.u.mdir.rbyd.blocks[0] / 8] + |= 1 << (tinfo.u.mdir.rbyd.blocks[0] % 8); } else if (tinfo.tag == LFSR_TAG_BRANCH) { printf("traversal: 0x%x btree 0x%x.%x\n", tinfo.tag, - tinfo.u.rbyd.block, tinfo.u.rbyd.trunk); + tinfo.u.rbyd.blocks[0], tinfo.u.rbyd.trunk); // keep track of seen blocks - seen[tinfo.u.rbyd.block / 8] |= 1 << (tinfo.u.rbyd.block % 8); + seen[tinfo.u.rbyd.blocks[0] / 8] + |= 1 << (tinfo.u.rbyd.blocks[0] % 8); } else { // this shouldn't happen @@ -3903,22 +3874,23 @@ code = ''' if (tinfo.tag == LFSR_TAG_MDIR) { printf("traversal: 0x%x mdir 0x{%x,%x}\n", tinfo.tag, - tinfo.u.mdir.blocks[0], - tinfo.u.mdir.blocks[1]); + tinfo.u.mdir.rbyd.blocks[0], + tinfo.u.mdir.rbyd.blocks[1]); // keep track of seen blocks - seen[tinfo.u.mdir.blocks[1] / 8] - |= 1 << (tinfo.u.mdir.blocks[1] % 8); - seen[tinfo.u.mdir.blocks[0] / 8] - |= 1 << (tinfo.u.mdir.blocks[0] % 8); + seen[tinfo.u.mdir.rbyd.blocks[1] / 8] + |= 1 << (tinfo.u.mdir.rbyd.blocks[1] % 8); + seen[tinfo.u.mdir.rbyd.blocks[0] / 8] + |= 1 << (tinfo.u.mdir.rbyd.blocks[0] % 8); } else if (tinfo.tag == LFSR_TAG_BRANCH) { printf("traversal: 0x%x btree 0x%x.%x\n", tinfo.tag, - tinfo.u.rbyd.block, tinfo.u.rbyd.trunk); + tinfo.u.rbyd.blocks[0], tinfo.u.rbyd.trunk); // keep track of seen blocks - seen[tinfo.u.rbyd.block / 8] |= 1 << (tinfo.u.rbyd.block % 8); + seen[tinfo.u.rbyd.blocks[0] / 8] + |= 1 << (tinfo.u.rbyd.blocks[0] % 8); } else { // this shouldn't happen @@ -4033,22 +4005,23 @@ code = ''' if (tinfo.tag == LFSR_TAG_MDIR) { printf("traversal: 0x%x mdir 0x{%x,%x}\n", tinfo.tag, - tinfo.u.mdir.blocks[0], - tinfo.u.mdir.blocks[1]); + tinfo.u.mdir.rbyd.blocks[0], + tinfo.u.mdir.rbyd.blocks[1]); // keep track of seen blocks - seen[tinfo.u.mdir.blocks[1] / 8] - |= 1 << (tinfo.u.mdir.blocks[1] % 8); - seen[tinfo.u.mdir.blocks[0] / 8] - |= 1 << (tinfo.u.mdir.blocks[0] % 8); + seen[tinfo.u.mdir.rbyd.blocks[1] / 8] + |= 1 << (tinfo.u.mdir.rbyd.blocks[1] % 8); + seen[tinfo.u.mdir.rbyd.blocks[0] / 8] + |= 1 << (tinfo.u.mdir.rbyd.blocks[0] % 8); } else if (tinfo.tag == LFSR_TAG_BRANCH) { printf("traversal: 0x%x btree 0x%x.%x\n", tinfo.tag, - tinfo.u.rbyd.block, tinfo.u.rbyd.trunk); + tinfo.u.rbyd.blocks[0], tinfo.u.rbyd.trunk); // keep track of seen blocks - seen[tinfo.u.rbyd.block / 8] |= 1 << (tinfo.u.rbyd.block % 8); + seen[tinfo.u.rbyd.blocks[0] / 8] + |= 1 << (tinfo.u.rbyd.blocks[0] % 8); } else { // this shouldn't happen @@ -4192,22 +4165,23 @@ code = ''' if (tinfo.tag == LFSR_TAG_MDIR) { printf("traversal: 0x%x mdir 0x{%x,%x}\n", tinfo.tag, - tinfo.u.mdir.blocks[0], - tinfo.u.mdir.blocks[1]); + tinfo.u.mdir.rbyd.blocks[0], + tinfo.u.mdir.rbyd.blocks[1]); // keep track of seen blocks - seen[tinfo.u.mdir.blocks[1] / 8] - |= 1 << (tinfo.u.mdir.blocks[1] % 8); - seen[tinfo.u.mdir.blocks[0] / 8] - |= 1 << (tinfo.u.mdir.blocks[0] % 8); + seen[tinfo.u.mdir.rbyd.blocks[1] / 8] + |= 1 << (tinfo.u.mdir.rbyd.blocks[1] % 8); + seen[tinfo.u.mdir.rbyd.blocks[0] / 8] + |= 1 << (tinfo.u.mdir.rbyd.blocks[0] % 8); } else if (tinfo.tag == LFSR_TAG_BRANCH) { printf("traversal: 0x%x btree 0x%x.%x\n", tinfo.tag, - tinfo.u.rbyd.block, tinfo.u.rbyd.trunk); + tinfo.u.rbyd.blocks[0], tinfo.u.rbyd.trunk); // keep track of seen blocks - seen[tinfo.u.rbyd.block / 8] |= 1 << (tinfo.u.rbyd.block % 8); + seen[tinfo.u.rbyd.blocks[0] / 8] + |= 1 << (tinfo.u.rbyd.blocks[0] % 8); } else { // this shouldn't happen @@ -4289,13 +4263,13 @@ code = ''' if (tinfo.tag == LFSR_TAG_MDIR) { printf("traversal: 0x%x mdir 0x{%x,%x}\n", tinfo.tag, - tinfo.u.mdir.blocks[0], - tinfo.u.mdir.blocks[1]); + tinfo.u.mdir.rbyd.blocks[0], + tinfo.u.mdir.rbyd.blocks[1]); } else if (tinfo.tag == LFSR_TAG_BRANCH) { printf("traversal: 0x%x btree 0x%x.%x\n", tinfo.tag, - tinfo.u.rbyd.block, tinfo.u.rbyd.trunk); + tinfo.u.rbyd.blocks[0], tinfo.u.rbyd.trunk); } else { // this shouldn't happen diff --git a/tests/test_rbyd.toml b/tests/test_rbyd.toml index 8c3fa8a3..47b6c14a 100644 --- a/tests/test_rbyd.toml +++ b/tests/test_rbyd.toml @@ -36,7 +36,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -46,18 +46,18 @@ code = ''' // commit with one attribute rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)))) => 0; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; // commit with two attributes rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(-1, UATTR(2), 0, BUF("\xbb\xbb\xbb\xbb", 4)))) => 0; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; ''' [cases.test_rbyd_multi_commit] @@ -67,7 +67,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -77,19 +77,19 @@ code = ''' // commit with one attribute rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)))) => 0; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; // commit with two attributes rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(2), 0, BUF("\xbb\xbb\xbb\xbb", 4)))) => 0; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; ''' [cases.test_rbyd_commit_fetch_commit] @@ -99,7 +99,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -109,15 +109,15 @@ code = ''' // commit with one attribute rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)))) => 0; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; // commit with the second attribute lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(2), 0, BUF("\xbb\xbb\xbb\xbb", 4)))) => 0; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; ''' # [cases.test_rbyd_fetchmatch] @@ -132,7 +132,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -145,7 +145,7 @@ code = ''' // commit with one attribute rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)))) => 0; @@ -157,7 +157,7 @@ code = ''' lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(2), &rid_, &tag_, NULL, &data_) => LFS_ERR_NOENT; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(1), &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_UATTR(1)); @@ -168,7 +168,7 @@ code = ''' // commit with two attributes rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(-1, UATTR(2), 0, BUF("\xbb\xbb\xbb\xbb", 4)))) => 0; @@ -186,7 +186,7 @@ code = ''' lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(3), &rid_, &tag_, NULL, &data_) => LFS_ERR_NOENT; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(1), &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_UATTR(1)); @@ -202,7 +202,7 @@ code = ''' // commit with two attributes, in the other direction rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(2), 0, BUF("\xbb\xbb\xbb\xbb", 4)), LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)))) => 0; @@ -220,7 +220,7 @@ code = ''' lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(3), &rid_, &tag_, NULL, &data_) => LFS_ERR_NOENT; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(1), &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_UATTR(1)); @@ -242,7 +242,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -255,7 +255,7 @@ code = ''' // commit with one attribute rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)))) => 0; @@ -267,7 +267,7 @@ code = ''' lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(2), &rid_, &tag_, NULL, &data_) => LFS_ERR_NOENT; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(1), &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_UATTR(1)); @@ -278,7 +278,7 @@ code = ''' // commit with two attributes rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( @@ -297,7 +297,7 @@ code = ''' lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(3), &rid_, &tag_, NULL, &data_) => LFS_ERR_NOENT; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(1), &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_UATTR(1)); @@ -313,7 +313,7 @@ code = ''' // commit with two attributes, in the other direction rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(2), 0, BUF("\xbb\xbb\xbb\xbb", 4)))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( @@ -332,7 +332,7 @@ code = ''' lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(3), &rid_, &tag_, NULL, &data_) => LFS_ERR_NOENT; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(1), &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_UATTR(1)); @@ -354,7 +354,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -365,7 +365,7 @@ code = ''' // commit with one attribute rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)))) => 0; @@ -375,7 +375,7 @@ code = ''' lfsr_rbyd_get(&lfs, &rbyd, -1, LFSR_TAG_UATTR(2), buffer, 4) => LFS_ERR_NOENT; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_get(&lfs, &rbyd, -1, LFSR_TAG_UATTR(1), buffer, 4) => 4; assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0); @@ -384,7 +384,7 @@ code = ''' // commit with two attributes rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(-1, UATTR(2), 0, BUF("\xbb\xbb\xbb\xbb", 4)))) => 0; @@ -396,7 +396,7 @@ code = ''' lfsr_rbyd_get(&lfs, &rbyd, -1, LFSR_TAG_UATTR(3), buffer, 4) => LFS_ERR_NOENT; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_get(&lfs, &rbyd, -1, LFSR_TAG_UATTR(1), buffer, 4) => 4; lfsr_rbyd_get(&lfs, &rbyd, -1, LFSR_TAG_UATTR(2), buffer, 4) @@ -406,7 +406,7 @@ code = ''' // commit with two attributes, in the other direction rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(2), 0, BUF("\xbb\xbb\xbb\xbb", 4)), LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)))) => 0; @@ -417,7 +417,7 @@ code = ''' lfsr_rbyd_get(&lfs, &rbyd, -1, LFSR_TAG_UATTR(3), buffer, 4) => LFS_ERR_NOENT; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_get(&lfs, &rbyd, -1, LFSR_TAG_UATTR(1), buffer, 4) => 4; lfsr_rbyd_get(&lfs, &rbyd, -1, LFSR_TAG_UATTR(2), buffer, 4) @@ -433,7 +433,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -444,7 +444,7 @@ code = ''' // commit with one attribute rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)))) => 0; @@ -454,7 +454,7 @@ code = ''' lfsr_rbyd_get(&lfs, &rbyd, -1, LFSR_TAG_UATTR(2), buffer, 4) => LFS_ERR_NOENT; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_get(&lfs, &rbyd, -1, LFSR_TAG_UATTR(1), buffer, 4) => 4; assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0); @@ -463,7 +463,7 @@ code = ''' // commit with two attributes rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( @@ -476,7 +476,7 @@ code = ''' lfsr_rbyd_get(&lfs, &rbyd, -1, LFSR_TAG_UATTR(3), buffer, 4) => LFS_ERR_NOENT; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_get(&lfs, &rbyd, -1, LFSR_TAG_UATTR(1), buffer, 4) => 4; lfsr_rbyd_get(&lfs, &rbyd, -1, LFSR_TAG_UATTR(2), buffer, 4) @@ -486,7 +486,7 @@ code = ''' // commit with two attributes, in the other direction rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(2), 0, BUF("\xbb\xbb\xbb\xbb", 4)))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( @@ -498,7 +498,7 @@ code = ''' lfsr_rbyd_get(&lfs, &rbyd, -1, LFSR_TAG_UATTR(3), buffer, 4) => LFS_ERR_NOENT; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_get(&lfs, &rbyd, -1, LFSR_TAG_UATTR(1), buffer, 4) => 4; lfsr_rbyd_get(&lfs, &rbyd, -1, LFSR_TAG_UATTR(2), buffer, 4) @@ -514,7 +514,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -530,12 +530,12 @@ code = ''' // => .-'| // 1 1 2 rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(-1, UATTR(2), 0, BUF("\xbb\xbb\xbb\xbb", 4)))) => 0; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(1), &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_UATTR(1)); @@ -552,12 +552,12 @@ code = ''' // => .-'| // 2 2 1 rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(2), 0, BUF("\xbb\xbb\xbb\xbb", 4)), LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)))) => 0; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(1), &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_UATTR(1)); @@ -577,7 +577,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -593,13 +593,13 @@ code = ''' // .-'| => .----'| // 1 2 1 2 2 rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(-1, UATTR(2), 0, BUF("\xbb\xbb\xbb\xbb", 4)), LFSR_ATTR(-1, UATTR(2), 0, BUF("\xbb\xbb\xbb\xbb", 4)))) => 0; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(1), &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_UATTR(1)); @@ -616,13 +616,13 @@ code = ''' // .-'| => .-'| // 1 2 1 2 1 rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(-1, UATTR(2), 0, BUF("\xbb\xbb\xbb\xbb", 4)), LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)))) => 0; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(1), &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_UATTR(1)); @@ -642,7 +642,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -660,13 +660,13 @@ code = ''' // .-'| | .-'| // 1 2 1 2 3 rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(-1, UATTR(2), 0, BUF("\xbb\xbb\xbb\xbb", 4)), LFSR_ATTR(-1, UATTR(3), 0, BUF("\xcc\xcc\xcc\xcc", 4)))) => 0; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(1), &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_UATTR(1)); @@ -690,13 +690,13 @@ code = ''' // .-'| .--|-'| // 2 3 2 3 1 rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(2), 0, BUF("\xbb\xbb\xbb\xbb", 4)), LFSR_ATTR(-1, UATTR(3), 0, BUF("\xcc\xcc\xcc\xcc", 4)), LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)))) => 0; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(1), &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_UATTR(1)); @@ -721,7 +721,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -739,14 +739,14 @@ code = ''' // | .-'| | .----'| // 1 2 3 1 2 3 3 rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(-1, UATTR(2), 0, BUF("\xbb\xbb\xbb\xbb", 4)), LFSR_ATTR(-1, UATTR(3), 0, BUF("\xcc\xcc\xcc\xcc", 4)), LFSR_ATTR(-1, UATTR(3), 0, BUF("\xcc\xcc\xcc\xcc", 4)))) => 0; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(1), &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_UATTR(1)); @@ -770,14 +770,14 @@ code = ''' // | .-'| | .-'| // 1 2 3 1 2 3 2 rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(-1, UATTR(2), 0, BUF("\xbb\xbb\xbb\xbb", 4)), LFSR_ATTR(-1, UATTR(3), 0, BUF("\xcc\xcc\xcc\xcc", 4)), LFSR_ATTR(-1, UATTR(2), 0, BUF("\xbb\xbb\xbb\xbb", 4)))) => 0; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(1), &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_UATTR(1)); @@ -801,14 +801,14 @@ code = ''' // | .-'| .--|-'| // 1 2 3 1 2 3 1 rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(-1, UATTR(2), 0, BUF("\xbb\xbb\xbb\xbb", 4)), LFSR_ATTR(-1, UATTR(3), 0, BUF("\xcc\xcc\xcc\xcc", 4)), LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)))) => 0; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(1), &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_UATTR(1)); @@ -832,14 +832,14 @@ code = ''' // .--|-'| | .-'| // 3 1 2 3 1 2 1 rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(3), 0, BUF("\xcc\xcc\xcc\xcc", 4)), LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(-1, UATTR(2), 0, BUF("\xbb\xbb\xbb\xbb", 4)), LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)))) => 0; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(1), &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_UATTR(1)); @@ -864,7 +864,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -884,14 +884,14 @@ code = ''' // | .-'| | | .-'| // 1 2 3 1 2 3 4 rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(-1, UATTR(2), 0, BUF("\xbb\xbb\xbb\xbb", 4)), LFSR_ATTR(-1, UATTR(3), 0, BUF("\xcc\xcc\xcc\xcc", 4)), LFSR_ATTR(-1, UATTR(4), 0, BUF("\xdd\xdd\xdd\xdd", 4)))) => 0; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(1), &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_UATTR(1)); @@ -922,14 +922,14 @@ code = ''' // | .-'| | .--|-'| .--|--|-'| // 1 3 4 1 3 4 2 1 3 4 2 rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(-1, UATTR(3), 0, BUF("\xcc\xcc\xcc\xcc", 4)), LFSR_ATTR(-1, UATTR(4), 0, BUF("\xdd\xdd\xdd\xdd", 4)), LFSR_ATTR(-1, UATTR(2), 0, BUF("\xbb\xbb\xbb\xbb", 4)))) => 0; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(1), &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_UATTR(1)); @@ -960,14 +960,14 @@ code = ''' // | .-'| .--|--|-'| // 2 3 4 2 3 4 1 rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(2), 0, BUF("\xbb\xbb\xbb\xbb", 4)), LFSR_ATTR(-1, UATTR(3), 0, BUF("\xcc\xcc\xcc\xcc", 4)), LFSR_ATTR(-1, UATTR(4), 0, BUF("\xdd\xdd\xdd\xdd", 4)), LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)))) => 0; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(1), &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_UATTR(1)); @@ -998,14 +998,14 @@ code = ''' // .--|-'| | .--|-'| // 4 2 3 4 2 3 1 rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(4), 0, BUF("\xdd\xdd\xdd\xdd", 4)), LFSR_ATTR(-1, UATTR(2), 0, BUF("\xbb\xbb\xbb\xbb", 4)), LFSR_ATTR(-1, UATTR(3), 0, BUF("\xcc\xcc\xcc\xcc", 4)), LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)))) => 0; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(1), &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_UATTR(1)); @@ -1035,7 +1035,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -1055,14 +1055,14 @@ code = ''' // | .-'| | | .-'| // 1 2 3 1 2 3 4 rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(-1, UATTR(2), 0, BUF("\xbb\xbb\xbb\xbb", 4)), LFSR_ATTR(-1, UATTR(3), 0, BUF("\xcc\xcc\xcc\xcc", 4)), LFSR_ATTR(-1, UATTR(4), 0, BUF("\xdd\xdd\xdd\xdd", 4)))) => 0; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(1), &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_UATTR(1)); @@ -1093,14 +1093,14 @@ code = ''' // | .-'| | | .-'| // 1 2 4 1 2 4 3 rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(-1, UATTR(2), 0, BUF("\xbb\xbb\xbb\xbb", 4)), LFSR_ATTR(-1, UATTR(4), 0, BUF("\xdd\xdd\xdd\xdd", 4)), LFSR_ATTR(-1, UATTR(3), 0, BUF("\xcc\xcc\xcc\xcc", 4)))) => 0; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(1), &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_UATTR(1)); @@ -1131,14 +1131,14 @@ code = ''' // | .-'| | | .-'| | .--|-'| // 1 4 2 1 4 2 3 1 4 2 3 rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(-1, UATTR(4), 0, BUF("\xdd\xdd\xdd\xdd", 4)), LFSR_ATTR(-1, UATTR(2), 0, BUF("\xbb\xbb\xbb\xbb", 4)), LFSR_ATTR(-1, UATTR(3), 0, BUF("\xcc\xcc\xcc\xcc", 4)))) => 0; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(1), &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_UATTR(1)); @@ -1169,14 +1169,14 @@ code = ''' // | .-'| | | .-'| .--|--|-'| // 4 1 2 4 1 2 3 4 1 2 3 rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(-1, UATTR(4), 0, BUF("\xdd\xdd\xdd\xdd", 4)), LFSR_ATTR(-1, UATTR(2), 0, BUF("\xbb\xbb\xbb\xbb", 4)), LFSR_ATTR(-1, UATTR(3), 0, BUF("\xcc\xcc\xcc\xcc", 4)))) => 0; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(1), &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_UATTR(1)); @@ -1206,7 +1206,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -1228,7 +1228,7 @@ code = ''' // | | .-'| | | .----'| // 1 2 3 4 1 2 3 4 4 rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(-1, UATTR(2), 0, BUF("\xbb\xbb\xbb\xbb", 4)), @@ -1236,7 +1236,7 @@ code = ''' LFSR_ATTR(-1, UATTR(4), 0, BUF("\xdd\xdd\xdd\xdd", 4)), LFSR_ATTR(-1, UATTR(4), 0, BUF("\xdd\xdd\xdd\xdd", 4)))) => 0; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(1), &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_UATTR(1)); @@ -1269,7 +1269,7 @@ code = ''' // | | .-'| | | .-'| // 1 2 3 4 1 2 3 4 3 rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(-1, UATTR(2), 0, BUF("\xbb\xbb\xbb\xbb", 4)), @@ -1277,7 +1277,7 @@ code = ''' LFSR_ATTR(-1, UATTR(4), 0, BUF("\xdd\xdd\xdd\xdd", 4)), LFSR_ATTR(-1, UATTR(3), 0, BUF("\xcc\xcc\xcc\xcc", 4)))) => 0; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(1), &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_UATTR(1)); @@ -1308,7 +1308,7 @@ code = ''' // | | .-'| | .-'| | // 1 2 3 4 1 2 3 4 2 rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(-1, UATTR(2), 0, BUF("\xbb\xbb\xbb\xbb", 4)), @@ -1316,7 +1316,7 @@ code = ''' LFSR_ATTR(-1, UATTR(4), 0, BUF("\xdd\xdd\xdd\xdd", 4)), LFSR_ATTR(-1, UATTR(2), 0, BUF("\xbb\xbb\xbb\xbb", 4)))) => 0; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(1), &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_UATTR(1)); @@ -1347,7 +1347,7 @@ code = ''' // | | .-'| | .-'| | // 1 2 3 4 1 2 3 4 1 rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(-1, UATTR(2), 0, BUF("\xbb\xbb\xbb\xbb", 4)), @@ -1355,7 +1355,7 @@ code = ''' LFSR_ATTR(-1, UATTR(4), 0, BUF("\xdd\xdd\xdd\xdd", 4)), LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)))) => 0; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(1), &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_UATTR(1)); @@ -1385,7 +1385,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -1409,7 +1409,7 @@ code = ''' // | | .-'| | | | .-'| // 1 2 3 4 1 2 3 4 5 rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(-1, UATTR(2), 0, BUF("\xbb\xbb\xbb\xbb", 4)), @@ -1417,7 +1417,7 @@ code = ''' LFSR_ATTR(-1, UATTR(4), 0, BUF("\xdd\xdd\xdd\xdd", 4)), LFSR_ATTR(-1, UATTR(5), 0, BUF("\xee\xee\xee\xee", 4)))) => 0; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(1), &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_UATTR(1)); @@ -1457,7 +1457,7 @@ code = ''' // | | .-'| | | .--|-'| // 1 2 4 5 1 2 4 5 3 rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(-1, UATTR(2), 0, BUF("\xbb\xbb\xbb\xbb", 4)), @@ -1465,7 +1465,7 @@ code = ''' LFSR_ATTR(-1, UATTR(5), 0, BUF("\xee\xee\xee\xee", 4)), LFSR_ATTR(-1, UATTR(3), 0, BUF("\xcc\xcc\xcc\xcc", 4)))) => 0; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(1), &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_UATTR(1)); @@ -1503,7 +1503,7 @@ code = ''' // | | .-'| | | .-'| | // 1 3 4 5 1 3 4 5 2 rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(-1, UATTR(3), 0, BUF("\xcc\xcc\xcc\xcc", 4)), @@ -1511,7 +1511,7 @@ code = ''' LFSR_ATTR(-1, UATTR(5), 0, BUF("\xee\xee\xee\xee", 4)), LFSR_ATTR(-1, UATTR(2), 0, BUF("\xbb\xbb\xbb\xbb", 4)))) => 0; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(1), &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_UATTR(1)); @@ -1549,7 +1549,7 @@ code = ''' // | | .-'| | | .-'| | // 2 3 4 5 2 3 4 5 1 rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(2), 0, BUF("\xbb\xbb\xbb\xbb", 4)), LFSR_ATTR(-1, UATTR(3), 0, BUF("\xcc\xcc\xcc\xcc", 4)), @@ -1557,7 +1557,7 @@ code = ''' LFSR_ATTR(-1, UATTR(5), 0, BUF("\xee\xee\xee\xee", 4)), LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)))) => 0; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(1), &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_UATTR(1)); @@ -1592,7 +1592,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -1616,7 +1616,7 @@ code = ''' // | | | .-'| | | | .----'| // 1 2 3 4 5 1 2 3 4 5 5 rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(-1, UATTR(2), 0, BUF("\xbb\xbb\xbb\xbb", 4)), @@ -1625,7 +1625,7 @@ code = ''' LFSR_ATTR(-1, UATTR(5), 0, BUF("\xee\xee\xee\xee", 4)), LFSR_ATTR(-1, UATTR(5), 0, BUF("\xee\xee\xee\xee", 4)))) => 0; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(1), &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_UATTR(1)); @@ -1665,7 +1665,7 @@ code = ''' // | | | .-'| | | .-'| | // 1 2 3 4 5 1 2 3 4 5 2 rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(-1, UATTR(2), 0, BUF("\xbb\xbb\xbb\xbb", 4)), @@ -1674,7 +1674,7 @@ code = ''' LFSR_ATTR(-1, UATTR(5), 0, BUF("\xee\xee\xee\xee", 4)), LFSR_ATTR(-1, UATTR(2), 0, BUF("\xbb\xbb\xbb\xbb", 4)))) => 0; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(1), &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_UATTR(1)); @@ -1714,7 +1714,7 @@ code = ''' // | | | .-'| | | .-'| | // 1 2 3 4 5 1 2 3 4 5 1 rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(-1, UATTR(2), 0, BUF("\xbb\xbb\xbb\xbb", 4)), @@ -1723,7 +1723,7 @@ code = ''' LFSR_ATTR(-1, UATTR(5), 0, BUF("\xee\xee\xee\xee", 4)), LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)))) => 0; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(1), &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_UATTR(1)); @@ -1758,7 +1758,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -1784,7 +1784,7 @@ code = ''' // | | | .-'| | | | | .-'| // 1 2 3 4 5 1 2 3 4 5 6 rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(-1, UATTR(2), 0, BUF("\xbb\xbb\xbb\xbb", 4)), @@ -1793,7 +1793,7 @@ code = ''' LFSR_ATTR(-1, UATTR(5), 0, BUF("\xee\xee\xee\xee", 4)), LFSR_ATTR(-1, UATTR(6), 0, BUF("\xff\xff\xff\xff", 4)))) => 0; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(1), &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_UATTR(1)); @@ -1838,7 +1838,7 @@ code = ''' // | | | .-'| | | | .-'| | // 1 3 4 5 6 1 3 4 5 6 2 rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(-1, UATTR(3), 0, BUF("\xcc\xcc\xcc\xcc", 4)), @@ -1847,7 +1847,7 @@ code = ''' LFSR_ATTR(-1, UATTR(6), 0, BUF("\xff\xff\xff\xff", 4)), LFSR_ATTR(-1, UATTR(2), 0, BUF("\xbb\xbb\xbb\xbb", 4)))) => 0; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(1), &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_UATTR(1)); @@ -1892,7 +1892,7 @@ code = ''' // | | | .-'| | | | .-'| | // 2 3 4 5 6 2 3 4 5 6 1 rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(2), 0, BUF("\xbb\xbb\xbb\xbb", 4)), LFSR_ATTR(-1, UATTR(3), 0, BUF("\xcc\xcc\xcc\xcc", 4)), @@ -1901,7 +1901,7 @@ code = ''' LFSR_ATTR(-1, UATTR(6), 0, BUF("\xff\xff\xff\xff", 4)), LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)))) => 0; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(1), &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_UATTR(1)); @@ -1945,7 +1945,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -1988,10 +1988,10 @@ code = ''' // test the given permutation rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, attrs, N) => 0; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; for (unsigned j = 0; j < N; j++) { lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(j+1), &rid_, &tag_, NULL, &data_) => 0; @@ -2035,7 +2035,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -2071,14 +2071,14 @@ code = ''' // test the given permutation with multiple commits rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; for (unsigned j = 0; j < N; j++) { lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(perm[j]+1), 0, BUF("\xaa\xaa\xaa\xaa", 4)))) => 0; } - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; for (unsigned j = 0; j < N; j++) { lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(j+1), &rid_, &tag_, NULL, &data_) => 0; @@ -2116,7 +2116,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -2131,7 +2131,7 @@ code = ''' // so that lookups return strictly the tag greater than or equal to // the tag requested rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(-1, UATTR(2), 0, BUF("\xbb\xbb\xbb\xbb", 4)))) => 0; @@ -2149,7 +2149,7 @@ code = ''' lfsr_rbyd_lookupnext(&lfs, &rbyd, rid_, tag_+1, &rid_, &tag_, NULL, &data_) => LFS_ERR_NOENT; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, 0, &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_UATTR(1)); @@ -2165,7 +2165,7 @@ code = ''' // also try the other direction rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(2), 0, BUF("\xbb\xbb\xbb\xbb", 4)), LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)))) => 0; @@ -2183,7 +2183,7 @@ code = ''' lfsr_rbyd_lookupnext(&lfs, &rbyd, rid_, tag_+1, &rid_, &tag_, NULL, &data_) => LFS_ERR_NOENT; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, 0, &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_UATTR(1)); @@ -2205,7 +2205,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -2220,7 +2220,7 @@ code = ''' // so that lookups return strictly the tag greater than or equal to // the tag requested rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( @@ -2239,7 +2239,7 @@ code = ''' lfsr_rbyd_lookupnext(&lfs, &rbyd, rid_, tag_+1, &rid_, &tag_, NULL, &data_) => LFS_ERR_NOENT; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, 0, &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_UATTR(1)); @@ -2255,7 +2255,7 @@ code = ''' // also try the other direction rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(2), 0, BUF("\xbb\xbb\xbb\xbb", 4)))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( @@ -2274,7 +2274,7 @@ code = ''' lfsr_rbyd_lookupnext(&lfs, &rbyd, rid_, tag_+1, &rid_, &tag_, NULL, &data_) => LFS_ERR_NOENT; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, 0, &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_UATTR(1)); @@ -2300,7 +2300,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -2339,10 +2339,10 @@ code = ''' // test the given permutation rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, attrs, N) => 0; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; // try traversing all tags tag_ = 0; rid_ = -1; @@ -2371,7 +2371,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -2404,14 +2404,14 @@ code = ''' // test the given permutation rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; for (unsigned j = 0; j < N; j++) { lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(perm[j]+1), 0, BUF("\xaa\xaa\xaa\xaa", 4)))) => 0; } - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; // try traversing all tags tag_ = 0; rid_ = -1; @@ -2442,7 +2442,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -2459,7 +2459,7 @@ code = ''' // create one consistent block rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; for (unsigned j = 0; j < N; j++) { lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( @@ -2470,7 +2470,7 @@ code = ''' lfsr_rbyd_t backup_rbyd = rbyd; uint8_t *backup_block = malloc(rbyd.eoff); lfs_bd_read(&lfs, NULL, &lfs.rcache, rbyd.eoff, - rbyd.block, 0, backup_block, rbyd.eoff) => 0; + rbyd.blocks[0], 0, backup_block, rbyd.eoff) => 0; // test all permutations of a given size size_t perm_count = TEST_FACTORIAL(N); @@ -2493,9 +2493,9 @@ code = ''' // restore backup rbyd = backup_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfs_bd_prog(&lfs, &lfs.pcache, &lfs.rcache, false, - rbyd.block, 0, backup_block, rbyd.eoff) => 0; + rbyd.blocks[0], 0, backup_block, rbyd.eoff) => 0; lfs_bd_flush(&lfs, &lfs.pcache, &lfs.rcache, false) => 0; // update each tag in permutation order @@ -2506,7 +2506,7 @@ code = ''' } // check that all tags have been updated - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; for (unsigned j = 0; j < N; j++) { lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(j+1), &rid_, &tag_, NULL, &data_) => 0; @@ -2552,7 +2552,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -2565,7 +2565,7 @@ code = ''' // create the rbyd tree rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; // keep appending tags until we run out of space // @@ -2590,7 +2590,7 @@ code = ''' // check that we can still lookup all the tags prng = 42; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; for (lfs_size_t i = 0; i < count; i++) { lfs_size_t x = (ORDER == 0) ? i @@ -2614,7 +2614,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -2627,7 +2627,7 @@ code = ''' // add and remove one attribute rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( @@ -2638,7 +2638,7 @@ code = ''' lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(2), &rid_, &tag_, NULL, &data_) => LFS_ERR_NOENT; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(1), &rid_, &tag_, NULL, &data_) => LFS_ERR_NOENT; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(2), @@ -2646,7 +2646,7 @@ code = ''' // commit with two attributes, remove the first one rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(-1, UATTR(2), 0, BUF("\xbb\xbb\xbb\xbb", 4)))) => 0; @@ -2666,7 +2666,7 @@ code = ''' lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(3), &rid_, &tag_, NULL, &data_) => LFS_ERR_NOENT; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(1), &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_UATTR(2)); @@ -2682,7 +2682,7 @@ code = ''' // commit with two attributes, remove the second one rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(-1, UATTR(2), 0, BUF("\xbb\xbb\xbb\xbb", 4)))) => 0; @@ -2699,7 +2699,7 @@ code = ''' lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(3), &rid_, &tag_, NULL, &data_) => LFS_ERR_NOENT; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(1), &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_UATTR(1)); @@ -2726,7 +2726,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -2762,7 +2762,7 @@ code = ''' // create given permutation with multiple commits rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; for (unsigned j = 0; j < N; j++) { lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(perm[j]+1), 0, @@ -2773,7 +2773,7 @@ code = ''' lfsr_rbyd_t backup_rbyd = rbyd; uint8_t *backup_block = malloc(rbyd.eoff); lfs_bd_read(&lfs, NULL, &lfs.rcache, rbyd.eoff, - rbyd.block, 0, backup_block, rbyd.eoff) => 0; + rbyd.blocks[0], 0, backup_block, rbyd.eoff) => 0; // try removing each tag for (unsigned j = 0; j < N; j++) { @@ -2781,16 +2781,16 @@ code = ''' printf("--- remove: %d ---\n", j); rbyd = backup_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfs_bd_prog(&lfs, &lfs.pcache, &lfs.rcache, false, - rbyd.block, 0, backup_block, rbyd.eoff) => 0; + rbyd.blocks[0], 0, backup_block, rbyd.eoff) => 0; lfs_bd_flush(&lfs, &lfs.pcache, &lfs.rcache, false) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, RM(UATTR(j+1)), 0, NULL()))) => 0; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, CFG->block_size) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], CFG->block_size) => 0; for (unsigned k = 0; k < N; k++) { int err = lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(k+1), @@ -2818,7 +2818,7 @@ code = ''' LFSR_ATTR(-1, UATTR(j+1), 0, BUF("\xaa\xaa\xaa\xaa\xaa\xaa", 6)))) => 0; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, CFG->block_size) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], CFG->block_size) => 0; for (unsigned k = 0; k < N; k++) { lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(k+1), @@ -2875,7 +2875,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -2907,7 +2907,7 @@ code = ''' // create given permutation with multiple commits rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; for (unsigned j = 0; j < N; j++) { lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(perm[j]+1), 0, @@ -2918,7 +2918,7 @@ code = ''' lfsr_rbyd_t backup_rbyd = rbyd; uint8_t *backup_block = malloc(rbyd.eoff); lfs_bd_read(&lfs, NULL, &lfs.rcache, rbyd.eoff, - rbyd.block, 0, backup_block, rbyd.eoff) => 0; + rbyd.blocks[0], 0, backup_block, rbyd.eoff) => 0; // try removing each tag for (unsigned j = 0; j < N; j++) { @@ -2926,16 +2926,16 @@ code = ''' printf("--- remove: %d ---\n", j); rbyd = backup_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfs_bd_prog(&lfs, &lfs.pcache, &lfs.rcache, false, - rbyd.block, 0, backup_block, rbyd.eoff) => 0; + rbyd.blocks[0], 0, backup_block, rbyd.eoff) => 0; lfs_bd_flush(&lfs, &lfs.pcache, &lfs.rcache, false) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, RM(UATTR(j+1)), 0, NULL()))) => 0; // try traversing over the tags - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, CFG->block_size) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], CFG->block_size) => 0; tag_ = 0; rid_ = -1; @@ -2969,7 +2969,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -2982,7 +2982,7 @@ code = ''' // create a tree two attributes rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(2), 0, BUF("\xbb\xbb\xbb\xbb", 4)), LFSR_ATTR(-1, UATTR(4), 0, BUF("\xdd\xdd\xdd\xdd", 4)))) => 0; @@ -3086,7 +3086,7 @@ code = ''' &rid_, &tag_, NULL, &data_) => LFS_ERR_NOENT; // one last fetch to make sure nothing was broken - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(1), &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_UATTR(2)); @@ -3118,7 +3118,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -3131,7 +3131,7 @@ code = ''' // create a tree rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(-1, UATTR(2), 0, BUF("\xbb\xbb\xbb\xbb", 4)), @@ -3321,7 +3321,7 @@ code = ''' &rid_, &tag_, NULL, &data_) => LFS_ERR_NOENT; // one last fetch to make sure nothing was broken - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(1), &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_UATTR(2)); @@ -3353,7 +3353,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -3366,7 +3366,7 @@ code = ''' // commit with one attribute, remove it rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( @@ -3377,7 +3377,7 @@ code = ''' lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(2), &rid_, &tag_, NULL, &data_) => LFS_ERR_NOENT; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(1), &rid_, &tag_, NULL, &data_) => LFS_ERR_NOENT; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(2), @@ -3385,7 +3385,7 @@ code = ''' // commit with two attributes, remove both rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(-1, UATTR(2), 0, BUF("\xbb\xbb\xbb\xbb", 4)))) => 0; @@ -3398,7 +3398,7 @@ code = ''' lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(2), &rid_, &tag_, NULL, &data_) => LFS_ERR_NOENT; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(1), &rid_, &tag_, NULL, &data_) => LFS_ERR_NOENT; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(2), @@ -3406,7 +3406,7 @@ code = ''' // commit with two attributes, remove both in the other order rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(-1, UATTR(2), 0, BUF("\xbb\xbb\xbb\xbb", 4)))) => 0; @@ -3419,7 +3419,7 @@ code = ''' lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(2), &rid_, &tag_, NULL, &data_) => LFS_ERR_NOENT; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(1), &rid_, &tag_, NULL, &data_) => LFS_ERR_NOENT; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(2), @@ -3441,7 +3441,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -3458,7 +3458,7 @@ code = ''' // create one consistent block rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; for (unsigned j = 0; j < N; j++) { lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( @@ -3469,7 +3469,7 @@ code = ''' lfsr_rbyd_t backup_rbyd = rbyd; uint8_t *backup_block = malloc(rbyd.eoff); lfs_bd_read(&lfs, NULL, &lfs.rcache, rbyd.eoff, - rbyd.block, 0, backup_block, rbyd.eoff) => 0; + rbyd.blocks[0], 0, backup_block, rbyd.eoff) => 0; // test all permutations of a given size size_t perm_count = TEST_FACTORIAL(N); @@ -3492,9 +3492,9 @@ code = ''' // restore backup rbyd = backup_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfs_bd_prog(&lfs, &lfs.pcache, &lfs.rcache, false, - rbyd.block, 0, backup_block, rbyd.eoff) => 0; + rbyd.blocks[0], 0, backup_block, rbyd.eoff) => 0; lfs_bd_flush(&lfs, &lfs.pcache, &lfs.rcache, false) => 0; // remove each tag in permutation order @@ -3504,7 +3504,7 @@ code = ''' } // check that all tags are now removed - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; for (unsigned j = 0; j < N; j++) { lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(j+1), &rid_, &tag_, NULL, &data_) => LFS_ERR_NOENT; @@ -3515,7 +3515,7 @@ code = ''' LFSR_ATTR(-1, UATTR(1), 0, BUF("\xaa\xaa\xaa\xaa\xaa\xaa", 6)))) => 0; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(1), &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_UATTR(1)); @@ -3564,7 +3564,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -3597,7 +3597,7 @@ code = ''' // set up rbyd block rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; prng = SEED; for (unsigned i = 0; i < N; i++) { @@ -3673,7 +3673,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -3684,7 +3684,7 @@ code = ''' // try to create one rid rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(0, REG, +1, BUF("\xaa\xaa\xaa\xaa", 4)))) => 0; @@ -3692,14 +3692,14 @@ code = ''' lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_REG, buffer, 4) => 4; assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0); - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == 1); lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_REG, buffer, 4) => 4; assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0); // try to create two ids rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(0, REG, +1, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(1, REG, +1, BUF("\xbb\xbb\xbb\xbb", 4)))) => 0; @@ -3710,7 +3710,7 @@ code = ''' lfsr_rbyd_get(&lfs, &rbyd, 1, LFSR_TAG_REG, buffer, 4) => 4; assert(memcmp(buffer, "\xbb\xbb\xbb\xbb", 4) == 0); - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == 2); lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_REG, buffer, 4) => 4; assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0); @@ -3719,7 +3719,7 @@ code = ''' // try to create two in the other direction rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(0, REG, +1, BUF("\xbb\xbb\xbb\xbb", 4)), LFSR_ATTR(0, REG, +1, BUF("\xaa\xaa\xaa\xaa", 4)))) => 0; @@ -3730,7 +3730,7 @@ code = ''' lfsr_rbyd_get(&lfs, &rbyd, 1, LFSR_TAG_REG, buffer, 4) => 4; assert(memcmp(buffer, "\xbb\xbb\xbb\xbb", 4) == 0); - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == 2); lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_REG, buffer, 4) => 4; assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0); @@ -3739,7 +3739,7 @@ code = ''' // create a third to the right rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(0, REG, +1, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(1, REG, +1, BUF("\xbb\xbb\xbb\xbb", 4)), @@ -3753,7 +3753,7 @@ code = ''' lfsr_rbyd_get(&lfs, &rbyd, 2, LFSR_TAG_REG, buffer, 4) => 4; assert(memcmp(buffer, "\xcc\xcc\xcc\xcc", 4) == 0); - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == 3); lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_REG, buffer, 4) => 4; assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0); @@ -3764,7 +3764,7 @@ code = ''' // create a third to the left rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(0, REG, +1, BUF("\xbb\xbb\xbb\xbb", 4)), LFSR_ATTR(1, REG, +1, BUF("\xcc\xcc\xcc\xcc", 4)), @@ -3778,7 +3778,7 @@ code = ''' lfsr_rbyd_get(&lfs, &rbyd, 2, LFSR_TAG_REG, buffer, 4) => 4; assert(memcmp(buffer, "\xcc\xcc\xcc\xcc", 4) == 0); - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == 3); lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_REG, buffer, 4) => 4; assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0); @@ -3789,7 +3789,7 @@ code = ''' // create a third in the middle rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(0, REG, +1, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(1, REG, +1, BUF("\xcc\xcc\xcc\xcc", 4)), @@ -3803,7 +3803,7 @@ code = ''' lfsr_rbyd_get(&lfs, &rbyd, 2, LFSR_TAG_REG, buffer, 4) => 4; assert(memcmp(buffer, "\xcc\xcc\xcc\xcc", 4) == 0); - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == 3); lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_REG, buffer, 4) => 4; assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0); @@ -3820,7 +3820,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -3831,7 +3831,7 @@ code = ''' // try to create one rid rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(0, REG, +1, BUF("\xaa\xaa\xaa\xaa", 4)))) => 0; @@ -3840,7 +3840,7 @@ code = ''' => 4; assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0); - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == 1); lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_REG, buffer, 4) => 4; @@ -3848,7 +3848,7 @@ code = ''' // try to create two ids rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(0, REG, +1, BUF("\xaa\xaa\xaa\xaa", 4)))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( @@ -3860,7 +3860,7 @@ code = ''' lfsr_rbyd_get(&lfs, &rbyd, 1, LFSR_TAG_REG, buffer, 4) => 4; assert(memcmp(buffer, "\xbb\xbb\xbb\xbb", 4) == 0); - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == 2); lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_REG, buffer, 4) => 4; assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0); @@ -3869,7 +3869,7 @@ code = ''' // try to create two in the other direction rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(0, REG, +1, BUF("\xbb\xbb\xbb\xbb", 4)))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( @@ -3881,7 +3881,7 @@ code = ''' lfsr_rbyd_get(&lfs, &rbyd, 1, LFSR_TAG_REG, buffer, 4) => 4; assert(memcmp(buffer, "\xbb\xbb\xbb\xbb", 4) == 0); - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == 2); lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_REG, buffer, 4) => 4; assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0); @@ -3890,7 +3890,7 @@ code = ''' // create a third to the right rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(0, REG, +1, BUF("\xaa\xaa\xaa\xaa", 4)))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( @@ -3906,7 +3906,7 @@ code = ''' lfsr_rbyd_get(&lfs, &rbyd, 2, LFSR_TAG_REG, buffer, 4) => 4; assert(memcmp(buffer, "\xcc\xcc\xcc\xcc", 4) == 0); - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == 3); lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_REG, buffer, 4) => 4; assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0); @@ -3917,7 +3917,7 @@ code = ''' // create a third to the left rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(0, REG, +1, BUF("\xbb\xbb\xbb\xbb", 4)))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( @@ -3933,7 +3933,7 @@ code = ''' lfsr_rbyd_get(&lfs, &rbyd, 2, LFSR_TAG_REG, buffer, 4) => 4; assert(memcmp(buffer, "\xcc\xcc\xcc\xcc", 4) == 0); - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == 3); lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_REG, buffer, 4) => 4; assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0); @@ -3944,7 +3944,7 @@ code = ''' // create a third in the middle rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(0, REG, +1, BUF("\xaa\xaa\xaa\xaa", 4)))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( @@ -3960,7 +3960,7 @@ code = ''' lfsr_rbyd_get(&lfs, &rbyd, 2, LFSR_TAG_REG, buffer, 4) => 4; assert(memcmp(buffer, "\xcc\xcc\xcc\xcc", 4) == 0); - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == 3); lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_REG, buffer, 4) => 4; assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0); @@ -3981,7 +3981,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -4037,10 +4037,10 @@ code = ''' // test the given permutation rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, attrs, N) => 0; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == N); for (unsigned j = 0; j < N; j++) { lfsr_rbyd_get(&lfs, &rbyd, j, LFSR_TAG_REG, buffer, 4) => 4; @@ -4082,7 +4082,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -4124,7 +4124,7 @@ code = ''' // test the given permutation with multiple commits rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; for (unsigned j = 0; j < N; j++) { // adjust rid based on future insertions uint16_t rid = perm[j]; @@ -4138,7 +4138,7 @@ code = ''' LFSR_ATTR(rid, REG, +1, BUF(names[perm[j] % 6], 4)))) => 0; } - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == N); for (unsigned j = 0; j < N; j++) { lfsr_rbyd_get(&lfs, &rbyd, @@ -4175,7 +4175,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -4191,7 +4191,7 @@ code = ''' // so that lookups return strictly the tag greater than or equal to // the tag requested rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(0, REG, +1, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(1, REG, +1, BUF("\xbb\xbb\xbb\xbb", 4)))) => 0; @@ -4213,7 +4213,7 @@ code = ''' lfsr_rbyd_lookupnext(&lfs, &rbyd, rid_, tag_+1, &rid_, &tag_, NULL, &data_) => LFS_ERR_NOENT; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, 0, &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_REG); @@ -4233,7 +4233,7 @@ code = ''' // also try the other direction rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(0, REG, +1, BUF("\xbb\xbb\xbb\xbb", 4)), LFSR_ATTR(0, REG, +1, BUF("\xaa\xaa\xaa\xaa", 4)))) => 0; @@ -4255,7 +4255,7 @@ code = ''' lfsr_rbyd_lookupnext(&lfs, &rbyd, rid_, tag_+1, &rid_, &tag_, NULL, &data_) => LFS_ERR_NOENT; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, 0, &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_REG); @@ -4281,7 +4281,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -4297,7 +4297,7 @@ code = ''' // so that lookups return strictly the tag greater than or equal to // the tag requested rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(0, REG, +1, BUF("\xaa\xaa\xaa\xaa", 4)))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( @@ -4320,7 +4320,7 @@ code = ''' lfsr_rbyd_lookupnext(&lfs, &rbyd, rid_, tag_+1, &rid_, &tag_, NULL, &data_) => LFS_ERR_NOENT; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, 0, &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_REG); @@ -4340,7 +4340,7 @@ code = ''' // also try the other direction rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(0, REG, +1, BUF("\xbb\xbb\xbb\xbb", 4)))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( @@ -4363,7 +4363,7 @@ code = ''' lfsr_rbyd_lookupnext(&lfs, &rbyd, rid_, tag_+1, &rid_, &tag_, NULL, &data_) => LFS_ERR_NOENT; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, 0, &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_REG); @@ -4393,7 +4393,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -4448,10 +4448,10 @@ code = ''' // test the given permutation rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, attrs, N) => 0; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == N); // try traversing all tags tag_ = 0; @@ -4484,7 +4484,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -4525,7 +4525,7 @@ code = ''' // test the given permutation with multiple commits rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; for (unsigned j = 0; j < N; j++) { // adjust rid based on future insertions uint16_t rid = perm[j]; @@ -4539,7 +4539,7 @@ code = ''' LFSR_ATTR(rid, REG, +1, BUF(names[perm[j] % 6], 4)))) => 0; } - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == N); // try traversing all tags tag_ = 0; @@ -4571,7 +4571,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -4589,7 +4589,7 @@ code = ''' // create the rbyd tree rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; // keep inserting tags until we run out of space // @@ -4619,7 +4619,7 @@ code = ''' lfsr_tag_t tag_; lfs_ssize_t rid_; lfsr_data_t data_; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; for (uint16_t x = 0; x < rbyd.weight; x++) { lfsr_rbyd_lookupnext(&lfs, &rbyd, x, LFSR_TAG_REG, &rid_, &tag_, NULL, &data_) => 0; @@ -4639,7 +4639,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -4650,7 +4650,7 @@ code = ''' // try to create one rid rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(0, REG, +1, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(0, UATTR(1), 0, BUF( "\xaa\xaa", 2)))) => 0; @@ -4661,7 +4661,7 @@ code = ''' lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_UATTR(1), buffer, 4) => 2; assert(memcmp(buffer, "\xaa\xaa", 2) == 0); - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == 1); lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_REG, buffer, 4) => 4; assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0); @@ -4670,7 +4670,7 @@ code = ''' // try to create two ids rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(0, REG, +1, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(0, UATTR(1), 0, BUF( "\xaa\xaa", 2)), @@ -4687,7 +4687,7 @@ code = ''' lfsr_rbyd_get(&lfs, &rbyd, 1, LFSR_TAG_UATTR(1), buffer, 4) => 2; assert(memcmp(buffer, "\xbb\xbb", 2) == 0); - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == 2); lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_REG, buffer, 4) => 4; assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0); @@ -4700,7 +4700,7 @@ code = ''' // try to create two in the other direction rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(0, REG, +1, BUF("\xbb\xbb\xbb\xbb", 4)), LFSR_ATTR(0, UATTR(1), 0, BUF( "\xbb\xbb", 2)), @@ -4717,7 +4717,7 @@ code = ''' lfsr_rbyd_get(&lfs, &rbyd, 1, LFSR_TAG_UATTR(1), buffer, 4) => 2; assert(memcmp(buffer, "\xbb\xbb", 2) == 0); - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == 2); lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_REG, buffer, 4) => 4; assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0); @@ -4730,7 +4730,7 @@ code = ''' // create a third to the right rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(0, REG, +1, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(0, UATTR(1), 0, BUF( "\xaa\xaa", 2)), @@ -4747,7 +4747,7 @@ code = ''' lfsr_rbyd_get(&lfs, &rbyd, 2, LFSR_TAG_REG, buffer, 4) => 4; assert(memcmp(buffer, "\xcc\xcc\xcc\xcc", 4) == 0); - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == 3); lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_REG, buffer, 4) => 4; assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0); @@ -4770,7 +4770,7 @@ code = ''' lfsr_rbyd_get(&lfs, &rbyd, 2, LFSR_TAG_UATTR(1), buffer, 4) => 2; assert(memcmp(buffer, "\xcc\xcc", 2) == 0); - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == 3); lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_REG, buffer, 4) => 4; assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0); @@ -4787,7 +4787,7 @@ code = ''' // create a third to the left rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(0, REG, +1, BUF("\xbb\xbb\xbb\xbb", 4)), LFSR_ATTR(0, UATTR(1), 0, BUF( "\xbb\xbb", 2)), @@ -4810,7 +4810,7 @@ code = ''' lfsr_rbyd_get(&lfs, &rbyd, 2, LFSR_TAG_UATTR(1), buffer, 4) => 2; assert(memcmp(buffer, "\xcc\xcc", 2) == 0); - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == 3); lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_REG, buffer, 4) => 4; assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0); @@ -4827,7 +4827,7 @@ code = ''' // create a third in the middle rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(0, REG, +1, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(0, UATTR(1), 0, BUF( "\xaa\xaa", 2)), @@ -4850,7 +4850,7 @@ code = ''' lfsr_rbyd_get(&lfs, &rbyd, 2, LFSR_TAG_UATTR(1), buffer, 4) => 2; assert(memcmp(buffer, "\xcc\xcc", 2) == 0); - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == 3); lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_REG, buffer, 4) => 4; assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0); @@ -4873,7 +4873,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -4884,7 +4884,7 @@ code = ''' // try to create one rid rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(0, REG, +1, BUF("\xaa\xaa\xaa\xaa", 4)))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( @@ -4896,7 +4896,7 @@ code = ''' lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_UATTR(1), buffer, 4) => 2; assert(memcmp(buffer, "\xaa\xaa", 2) == 0); - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == 1); lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_REG, buffer, 4) => 4; assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0); @@ -4905,7 +4905,7 @@ code = ''' // try to create two ids rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(0, REG, +1, BUF("\xaa\xaa\xaa\xaa", 4)))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( @@ -4925,7 +4925,7 @@ code = ''' lfsr_rbyd_get(&lfs, &rbyd, 1, LFSR_TAG_UATTR(1), buffer, 4) => 2; assert(memcmp(buffer, "\xbb\xbb", 2) == 0); - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == 2); lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_REG, buffer, 4) => 4; assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0); @@ -4938,7 +4938,7 @@ code = ''' // try to create two in the other direction rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(0, REG, +1, BUF("\xbb\xbb\xbb\xbb", 4)))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( @@ -4958,7 +4958,7 @@ code = ''' lfsr_rbyd_get(&lfs, &rbyd, 1, LFSR_TAG_UATTR(1), buffer, 4) => 2; assert(memcmp(buffer, "\xbb\xbb", 2) == 0); - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == 2); lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_REG, buffer, 4) => 4; assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0); @@ -4971,7 +4971,7 @@ code = ''' // create a third to the right rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(0, REG, +1, BUF("\xaa\xaa\xaa\xaa", 4)))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( @@ -4993,7 +4993,7 @@ code = ''' lfsr_rbyd_get(&lfs, &rbyd, 2, LFSR_TAG_REG, buffer, 4) => 4; assert(memcmp(buffer, "\xcc\xcc\xcc\xcc", 4) == 0); - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == 3); lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_REG, buffer, 4) => 4; assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0); @@ -5016,7 +5016,7 @@ code = ''' lfsr_rbyd_get(&lfs, &rbyd, 2, LFSR_TAG_UATTR(1), buffer, 4) => 2; assert(memcmp(buffer, "\xcc\xcc", 2) == 0); - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == 3); lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_REG, buffer, 4) => 4; assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0); @@ -5033,7 +5033,7 @@ code = ''' // create a third to the left rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(0, REG, +1, BUF("\xbb\xbb\xbb\xbb", 4)))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( @@ -5061,7 +5061,7 @@ code = ''' lfsr_rbyd_get(&lfs, &rbyd, 2, LFSR_TAG_UATTR(1), buffer, 4) => 2; assert(memcmp(buffer, "\xcc\xcc", 2) == 0); - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == 3); lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_REG, buffer, 4) => 4; assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0); @@ -5078,7 +5078,7 @@ code = ''' // create a third in the middle rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(0, REG, +1, BUF("\xaa\xaa\xaa\xaa", 4)))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( @@ -5106,7 +5106,7 @@ code = ''' lfsr_rbyd_get(&lfs, &rbyd, 2, LFSR_TAG_UATTR(1), buffer, 4) => 2; assert(memcmp(buffer, "\xcc\xcc", 2) == 0); - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == 3); lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_REG, buffer, 4) => 4; assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0); @@ -5134,7 +5134,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -5196,10 +5196,10 @@ code = ''' // test the given permutation rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, attrs, (1+M)*N) => 0; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == N); for (unsigned j = 0; j < N; j++) { lfsr_rbyd_get(&lfs, &rbyd, j, LFSR_TAG_REG, buffer, 4) => 4; @@ -5248,7 +5248,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -5290,7 +5290,7 @@ code = ''' // test the given permutation rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; for (unsigned j = 0; j < N; j++) { // adjust rid based on future insertions uint16_t rid = perm[j]; @@ -5310,7 +5310,7 @@ code = ''' } } - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == N); for (unsigned j = 0; j < N; j++) { lfsr_rbyd_get(&lfs, &rbyd, j, LFSR_TAG_REG, buffer, 4) => 4; @@ -5352,7 +5352,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -5368,7 +5368,7 @@ code = ''' // so that lookups return strictly the tag greater than or equal to // the tag requested rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(0, REG, +1, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(0, UATTR(1), 0, BUF( "\xaa\xaa", 2)), @@ -5406,7 +5406,7 @@ code = ''' lfsr_rbyd_lookupnext(&lfs, &rbyd, rid_, tag_+1, &rid_, &tag_, NULL, &data_) => LFS_ERR_NOENT; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, 0, &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_REG); @@ -5440,7 +5440,7 @@ code = ''' // also try the other direction rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(0, REG, +1, BUF("\xbb\xbb\xbb\xbb", 4)), LFSR_ATTR(0, UATTR(1), 0, BUF( "\xbb\xbb", 2)), @@ -5478,7 +5478,7 @@ code = ''' lfsr_rbyd_lookupnext(&lfs, &rbyd, rid_, tag_+1, &rid_, &tag_, NULL, &data_) => LFS_ERR_NOENT; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, 0, &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_REG); @@ -5518,7 +5518,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -5534,7 +5534,7 @@ code = ''' // so that lookups return strictly the tag greater than or equal to // the tag requested rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(0, REG, +1, BUF("\xaa\xaa\xaa\xaa", 4)))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( @@ -5575,7 +5575,7 @@ code = ''' lfsr_rbyd_lookupnext(&lfs, &rbyd, rid_, tag_+1, &rid_, &tag_, NULL, &data_) => LFS_ERR_NOENT; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, 0, &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_REG); @@ -5609,7 +5609,7 @@ code = ''' // also try the other direction rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(0, REG, +1, BUF("\xbb\xbb\xbb\xbb", 4)))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( @@ -5650,7 +5650,7 @@ code = ''' lfsr_rbyd_lookupnext(&lfs, &rbyd, rid_, tag_+1, &rid_, &tag_, NULL, &data_) => LFS_ERR_NOENT; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, 0, &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_REG); @@ -5695,7 +5695,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -5756,10 +5756,10 @@ code = ''' // test the given permutation rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, attrs, (1+M)*N) => 0; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == N); // try traversing all tags @@ -5805,7 +5805,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -5846,7 +5846,7 @@ code = ''' // test the given permutation rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; for (unsigned j = 0; j < N; j++) { // adjust rid based on future insertions uint16_t rid = perm[j]; @@ -5866,7 +5866,7 @@ code = ''' } } - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == N); // try traversing all tags @@ -5914,7 +5914,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -5937,7 +5937,7 @@ code = ''' // create one consistent block rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; for (unsigned j = 0; j < N; j++) { lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( @@ -5953,7 +5953,7 @@ code = ''' lfsr_rbyd_t backup_rbyd = rbyd; uint8_t *backup_block = malloc(rbyd.eoff); lfs_bd_read(&lfs, NULL, &lfs.rcache, rbyd.eoff, - rbyd.block, 0, backup_block, rbyd.eoff) => 0; + rbyd.blocks[0], 0, backup_block, rbyd.eoff) => 0; // test all permutations of a given size size_t perm_count = TEST_FACTORIAL(N*M); @@ -5976,9 +5976,9 @@ code = ''' // restore backup rbyd = backup_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfs_bd_prog(&lfs, &lfs.pcache, &lfs.rcache, false, - rbyd.block, 0, backup_block, rbyd.eoff) => 0; + rbyd.blocks[0], 0, backup_block, rbyd.eoff) => 0; lfs_bd_flush(&lfs, &lfs.pcache, &lfs.rcache, false) => 0; // update each tag in permutation order @@ -5989,7 +5989,7 @@ code = ''' } // check that all tags have been updated - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; for (unsigned j = 0; j < N; j++) { lfsr_rbyd_get(&lfs, &rbyd, j, LFSR_TAG_REG, buffer, 4) => 4; assert(memcmp(buffer, names[j % 6], 4) == 0); @@ -6042,7 +6042,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -6087,7 +6087,7 @@ code = ''' // create given permutation rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; for (unsigned j = 0; j < N; j++) { // adjust rid based on future insertions uint16_t rid = perm[j]; @@ -6111,7 +6111,7 @@ code = ''' lfsr_rbyd_t backup_rbyd = rbyd; uint8_t *backup_block = malloc(rbyd.eoff); lfs_bd_read(&lfs, NULL, &lfs.rcache, rbyd.eoff, - rbyd.block, 0, backup_block, rbyd.eoff) => 0; + rbyd.blocks[0], 0, backup_block, rbyd.eoff) => 0; // try removing each tag for (unsigned j = 0; j < N*M; j++) { @@ -6119,15 +6119,15 @@ code = ''' printf("--- remove: rid%jd, %jd ---\n", j/M, (j%M)+1); rbyd = backup_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfs_bd_prog(&lfs, &lfs.pcache, &lfs.rcache, false, - rbyd.block, 0, backup_block, rbyd.eoff) => 0; + rbyd.blocks[0], 0, backup_block, rbyd.eoff) => 0; lfs_bd_flush(&lfs, &lfs.pcache, &lfs.rcache, false) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(j/M, RM(UATTR((j%M)+1)), 0, NULL()))) => 0; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, CFG->block_size) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], CFG->block_size) => 0; for (unsigned k = 0; k < N; k++) { lfsr_rbyd_get(&lfs, &rbyd, k, LFSR_TAG_REG, buffer, 4) => 4; assert(memcmp(buffer, names[k % 6], 4) == 0); @@ -6168,7 +6168,7 @@ code = ''' LFSR_ATTR(j/M, UATTR((j%M)+1), 0, BUF(names[(j/M)%6], 3)))) => 0; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, CFG->block_size) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], CFG->block_size) => 0; for (unsigned k = 0; k < N; k++) { lfsr_rbyd_get(&lfs, &rbyd, k, LFSR_TAG_REG, buffer, 4) => 4; assert(memcmp(buffer, names[k % 6], 4) == 0); @@ -6237,7 +6237,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -6260,7 +6260,7 @@ code = ''' // create one consistent block rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; for (unsigned j = 0; j < N; j++) { lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( @@ -6276,7 +6276,7 @@ code = ''' lfsr_rbyd_t backup_rbyd = rbyd; uint8_t *backup_block = malloc(rbyd.eoff); lfs_bd_read(&lfs, NULL, &lfs.rcache, rbyd.eoff, - rbyd.block, 0, backup_block, rbyd.eoff) => 0; + rbyd.blocks[0], 0, backup_block, rbyd.eoff) => 0; // test all permutations of a given size size_t perm_count = TEST_FACTORIAL(N*M); @@ -6299,9 +6299,9 @@ code = ''' // restore backup rbyd = backup_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfs_bd_prog(&lfs, &lfs.pcache, &lfs.rcache, false, - rbyd.block, 0, backup_block, rbyd.eoff) => 0; + rbyd.blocks[0], 0, backup_block, rbyd.eoff) => 0; lfs_bd_flush(&lfs, &lfs.pcache, &lfs.rcache, false) => 0; // remove each tag in permutation order @@ -6312,7 +6312,7 @@ code = ''' } // check that all tags have been removed - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; for (unsigned j = 0; j < N; j++) { lfsr_rbyd_get(&lfs, &rbyd, j, LFSR_TAG_REG, buffer, 4) => 4; assert(memcmp(buffer, names[j % 6], 4) == 0); @@ -6361,7 +6361,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -6379,7 +6379,7 @@ code = ''' // create the rbyd tree rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; // keep inserting tags until we run out of space // @@ -6416,7 +6416,7 @@ code = ''' lfsr_tag_t tag_; lfs_ssize_t rid_; lfsr_data_t data_; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; for (uint16_t x = 0; x < rbyd.weight; x++) { lfsr_rbyd_lookupnext(&lfs, &rbyd, x, LFSR_TAG_REG, &rid_, &tag_, NULL, &data_) => 0; @@ -6450,7 +6450,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -6492,7 +6492,7 @@ code = ''' // test the given permutation with multiple commits rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; for (unsigned j = 0; j < N; j++) { // adjust rid based on future insertions uint16_t rid = perm[j]; @@ -6513,7 +6513,7 @@ code = ''' } // try looking up each tag - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == N); for (unsigned j = 0; j < N; j++) { lfsr_rbyd_get(&lfs, &rbyd, @@ -6589,7 +6589,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -6631,7 +6631,7 @@ code = ''' // test the given permutation rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; for (unsigned j = 0; j < N; j++) { // adjust rid based on future insertions uint16_t rid = perm[j]; @@ -6657,7 +6657,7 @@ code = ''' } // try looking up each tag - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == N); for (unsigned j = 0; j < N; j++) { lfsr_rbyd_get(&lfs, &rbyd, @@ -6745,7 +6745,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -6756,7 +6756,7 @@ code = ''' // try to delete one rid rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(0, REG, +1, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(1, REG, +1, BUF("\xbb\xbb\xbb\xbb", 4)))) => 0; @@ -6768,7 +6768,7 @@ code = ''' assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0); lfsr_rbyd_get(&lfs, &rbyd, 1, LFSR_TAG_REG, buffer, 4) => LFS_ERR_NOENT; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == 1); lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_REG, buffer, 4) => 4; assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0); @@ -6776,7 +6776,7 @@ code = ''' // try to delete the other rid rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(0, REG, +1, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(1, REG, +1, BUF("\xbb\xbb\xbb\xbb", 4)))) => 0; @@ -6788,7 +6788,7 @@ code = ''' assert(memcmp(buffer, "\xbb\xbb\xbb\xbb", 4) == 0); lfsr_rbyd_get(&lfs, &rbyd, 1, LFSR_TAG_REG, buffer, 4) => LFS_ERR_NOENT; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == 1); lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_REG, buffer, 4) => 4; assert(memcmp(buffer, "\xbb\xbb\xbb\xbb", 4) == 0); @@ -6796,7 +6796,7 @@ code = ''' // try to delete the largest of three rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(0, REG, +1, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(1, REG, +1, BUF("\xbb\xbb\xbb\xbb", 4)), @@ -6819,7 +6819,7 @@ code = ''' // try to delete the smallest of three rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(0, REG, +1, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(1, REG, +1, BUF("\xbb\xbb\xbb\xbb", 4)), @@ -6842,7 +6842,7 @@ code = ''' // try to delete the middle rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(0, REG, +1, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(1, REG, +1, BUF("\xbb\xbb\xbb\xbb", 4)), @@ -6871,7 +6871,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -6882,7 +6882,7 @@ code = ''' // try to delete one rid rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(0, REG, +1, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(0, UATTR(1), 0, BUF( "\xaa\xaa", 2)), @@ -6903,7 +6903,7 @@ code = ''' lfsr_rbyd_get(&lfs, &rbyd, 1, LFSR_TAG_UATTR(1), buffer, 4) => LFS_ERR_NOENT; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == 1); lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_REG, buffer, 4) => 4; @@ -6918,7 +6918,7 @@ code = ''' // try to delete the other rid rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(0, REG, +1, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(0, UATTR(1), 0, BUF( "\xaa\xaa", 2)), @@ -6939,7 +6939,7 @@ code = ''' lfsr_rbyd_get(&lfs, &rbyd, 1, LFSR_TAG_UATTR(1), buffer, 4) => LFS_ERR_NOENT; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == 1); lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_REG, buffer, 4) => 4; @@ -6954,7 +6954,7 @@ code = ''' // try to delete the largest of three rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(0, REG, +1, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(0, UATTR(1), 0, BUF( "\xaa\xaa", 2)), @@ -6982,7 +6982,7 @@ code = ''' lfsr_rbyd_get(&lfs, &rbyd, 2, LFSR_TAG_UATTR(1), buffer, 4) => LFS_ERR_NOENT; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == 2); lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_REG, buffer, 4) => 4; @@ -7003,7 +7003,7 @@ code = ''' // try to delete the smallest of three rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(0, REG, +1, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(0, UATTR(1), 0, BUF( "\xaa\xaa", 2)), @@ -7032,7 +7032,7 @@ code = ''' lfsr_rbyd_get(&lfs, &rbyd, 2, LFSR_TAG_UATTR(1), buffer, 4) => LFS_ERR_NOENT; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == 2); lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_REG, buffer, 4) => 4; @@ -7053,7 +7053,7 @@ code = ''' // try to delete the middle rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(0, REG, +1, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(0, UATTR(1), 0, BUF( "\xaa\xaa", 2)), @@ -7082,7 +7082,7 @@ code = ''' lfsr_rbyd_get(&lfs, &rbyd, 2, LFSR_TAG_UATTR(1), buffer, 4) => LFS_ERR_NOENT; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == 2); lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_REG, buffer, 4) => 4; @@ -7117,7 +7117,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -7159,7 +7159,7 @@ code = ''' // create given permutation with multiple commits rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; for (unsigned j = 0; j < N; j++) { // adjust rid based on future insertions @@ -7179,7 +7179,7 @@ code = ''' lfsr_rbyd_t backup_rbyd = rbyd; uint8_t *backup_block = malloc(rbyd.eoff); lfs_bd_read(&lfs, NULL, &lfs.rcache, rbyd.eoff, - rbyd.block, 0, backup_block, rbyd.eoff) => 0; + rbyd.blocks[0], 0, backup_block, rbyd.eoff) => 0; // try deleting each rid for (unsigned j = 0; j < N; j++) { @@ -7187,16 +7187,16 @@ code = ''' printf("--- delete: %d ---\n", j); rbyd = backup_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfs_bd_prog(&lfs, &lfs.pcache, &lfs.rcache, false, - rbyd.block, 0, backup_block, rbyd.eoff) => 0; + rbyd.blocks[0], 0, backup_block, rbyd.eoff) => 0; lfs_bd_flush(&lfs, &lfs.pcache, &lfs.rcache, false) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(j, RM, -1, NULL()))) => 0; assert(rbyd.weight == N-1); - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, CFG->block_size) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], CFG->block_size) => 0; assert(rbyd.weight == N-1); for (unsigned k = 0; k < N-1; k++) { lfsr_rbyd_get(&lfs, &rbyd, k, LFSR_TAG_REG, buffer, 4) => 4; @@ -7215,7 +7215,7 @@ code = ''' LFSR_ATTR(j, REG, +1, BUF(names[j % 6], 6)))) => 0; assert(rbyd.weight == N); - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, CFG->block_size) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], CFG->block_size) => 0; assert(rbyd.weight == N); for (unsigned k = 0; k < N; k++) { if (k == j) { @@ -7271,7 +7271,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -7313,7 +7313,7 @@ code = ''' // create given permutation with multiple commits rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; for (unsigned j = 0; j < N; j++) { // adjust rid based on future insertions @@ -7339,7 +7339,7 @@ code = ''' lfsr_rbyd_t backup_rbyd = rbyd; uint8_t *backup_block = malloc(rbyd.eoff); lfs_bd_read(&lfs, NULL, &lfs.rcache, rbyd.eoff, - rbyd.block, 0, backup_block, rbyd.eoff) => 0; + rbyd.blocks[0], 0, backup_block, rbyd.eoff) => 0; // try deleting each rid for (unsigned j = 0; j < N; j++) { @@ -7347,16 +7347,16 @@ code = ''' printf("--- delete: %d ---\n", j); rbyd = backup_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfs_bd_prog(&lfs, &lfs.pcache, &lfs.rcache, false, - rbyd.block, 0, backup_block, rbyd.eoff) => 0; + rbyd.blocks[0], 0, backup_block, rbyd.eoff) => 0; lfs_bd_flush(&lfs, &lfs.pcache, &lfs.rcache, false) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(j, RM, -1, NULL()))) => 0; assert(rbyd.weight == N-1); - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, CFG->block_size) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], CFG->block_size) => 0; assert(rbyd.weight == N-1); for (unsigned k = 0; k < N-1; k++) { lfsr_rbyd_get(&lfs, &rbyd, k, LFSR_TAG_REG, buffer, 4) => 4; @@ -7392,7 +7392,7 @@ code = ''' } assert(rbyd.weight == N); - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, CFG->block_size) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], CFG->block_size) => 0; assert(rbyd.weight == N); for (unsigned k = 0; k < N; k++) { if (k == j) { @@ -7461,7 +7461,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -7502,7 +7502,7 @@ code = ''' // create given permutation with multiple commits rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; for (unsigned j = 0; j < N; j++) { // adjust rid based on future insertions @@ -7522,7 +7522,7 @@ code = ''' lfsr_rbyd_t backup_rbyd = rbyd; uint8_t *backup_block = malloc(rbyd.eoff); lfs_bd_read(&lfs, NULL, &lfs.rcache, rbyd.eoff, - rbyd.block, 0, backup_block, rbyd.eoff) => 0; + rbyd.blocks[0], 0, backup_block, rbyd.eoff) => 0; // try deleting each rid for (unsigned j = 0; j < N; j++) { @@ -7530,9 +7530,9 @@ code = ''' printf("--- delete: %d ---\n", j); rbyd = backup_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfs_bd_prog(&lfs, &lfs.pcache, &lfs.rcache, false, - rbyd.block, 0, backup_block, rbyd.eoff) => 0; + rbyd.blocks[0], 0, backup_block, rbyd.eoff) => 0; lfs_bd_flush(&lfs, &lfs.pcache, &lfs.rcache, false) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( @@ -7540,7 +7540,7 @@ code = ''' assert(rbyd.weight == N-1); // try traversing over the tags - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, CFG->block_size) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], CFG->block_size) => 0; assert(rbyd.weight == N-1); tag_ = 0; @@ -7585,7 +7585,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -7626,7 +7626,7 @@ code = ''' // create given permutation with multiple commits rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; for (unsigned j = 0; j < N; j++) { // adjust rid based on future insertions @@ -7652,7 +7652,7 @@ code = ''' lfsr_rbyd_t backup_rbyd = rbyd; uint8_t *backup_block = malloc(rbyd.eoff); lfs_bd_read(&lfs, NULL, &lfs.rcache, rbyd.eoff, - rbyd.block, 0, backup_block, rbyd.eoff) => 0; + rbyd.blocks[0], 0, backup_block, rbyd.eoff) => 0; // try deleting each rid for (unsigned j = 0; j < N; j++) { @@ -7660,9 +7660,9 @@ code = ''' printf("--- delete: %d ---\n", j); rbyd = backup_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfs_bd_prog(&lfs, &lfs.pcache, &lfs.rcache, false, - rbyd.block, 0, backup_block, rbyd.eoff) => 0; + rbyd.blocks[0], 0, backup_block, rbyd.eoff) => 0; lfs_bd_flush(&lfs, &lfs.pcache, &lfs.rcache, false) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( @@ -7670,7 +7670,7 @@ code = ''' assert(rbyd.weight == N-1); // try traversing over the tags - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, CFG->block_size) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], CFG->block_size) => 0; assert(rbyd.weight == N-1); tag_ = 0; @@ -7723,7 +7723,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -7734,7 +7734,7 @@ code = ''' // create and delete one rid rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(0, REG, +1, BUF("\xaa\xaa\xaa\xaa", 4)))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( @@ -7744,14 +7744,14 @@ code = ''' lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_REG, buffer, 4) => LFS_ERR_NOENT; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == 0); lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_REG, buffer, 4) => LFS_ERR_NOENT; // create and delete two ids rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(0, REG, +1, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(1, REG, +1, BUF("\xbb\xbb\xbb\xbb", 4)))) => 0; @@ -7763,14 +7763,14 @@ code = ''' lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_REG, buffer, 4) => LFS_ERR_NOENT; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == 0); lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_REG, buffer, 4) => LFS_ERR_NOENT; // create and delete two ids in the other order rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(0, REG, +1, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(1, REG, +1, BUF("\xbb\xbb\xbb\xbb", 4)))) => 0; @@ -7782,14 +7782,14 @@ code = ''' lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_REG, buffer, 4) => LFS_ERR_NOENT; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == 0); lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_REG, buffer, 4) => LFS_ERR_NOENT; // create and delete three ids rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(0, REG, +1, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(1, REG, +1, BUF("\xbb\xbb\xbb\xbb", 4)), @@ -7803,14 +7803,14 @@ code = ''' lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_REG, buffer, 4) => LFS_ERR_NOENT; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == 0); lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_REG, buffer, 4) => LFS_ERR_NOENT; // create and delete three ids in the other order rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(0, REG, +1, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(1, REG, +1, BUF("\xbb\xbb\xbb\xbb", 4)), @@ -7824,7 +7824,7 @@ code = ''' lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_REG, buffer, 4) => LFS_ERR_NOENT; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == 0); lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_REG, buffer, 4) => LFS_ERR_NOENT; @@ -7837,7 +7837,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -7848,7 +7848,7 @@ code = ''' // create and delete one rid rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(0, REG, +1, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(0, UATTR(1), 0, BUF( "\xaa\xaa", 2)))) => 0; @@ -7859,14 +7859,14 @@ code = ''' lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_REG, buffer, 4) => LFS_ERR_NOENT; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == 0); lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_REG, buffer, 4) => LFS_ERR_NOENT; // create and delete two ids rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(0, REG, +1, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(0, UATTR(1), 0, BUF( "\xaa\xaa", 2)), @@ -7880,14 +7880,14 @@ code = ''' lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_REG, buffer, 4) => LFS_ERR_NOENT; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == 0); lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_REG, buffer, 4) => LFS_ERR_NOENT; // create and delete two ids in the other order rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(0, REG, +1, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(0, UATTR(1), 0, BUF( "\xaa\xaa", 2)), @@ -7901,14 +7901,14 @@ code = ''' lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_REG, buffer, 4) => LFS_ERR_NOENT; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == 0); lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_REG, buffer, 4) => LFS_ERR_NOENT; // create and delete three ids rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(0, REG, +1, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(0, UATTR(1), 0, BUF( "\xaa\xaa", 2)), @@ -7925,14 +7925,14 @@ code = ''' lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_REG, buffer, 4) => LFS_ERR_NOENT; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == 0); lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_REG, buffer, 4) => LFS_ERR_NOENT; // create and delete three ids in the other order rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(0, REG, +1, BUF("\xaa\xaa\xaa\xaa", 4)), LFSR_ATTR(0, UATTR(1), 0, BUF( "\xaa\xaa", 2)), @@ -7949,7 +7949,7 @@ code = ''' lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_REG, buffer, 4) => LFS_ERR_NOENT; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == 0); lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_REG, buffer, 4) => LFS_ERR_NOENT; @@ -7970,7 +7970,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -7993,7 +7993,7 @@ code = ''' // create one consistent block rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; for (unsigned j = 0; j < N; j++) { lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( @@ -8005,7 +8005,7 @@ code = ''' lfsr_rbyd_t backup_rbyd = rbyd; uint8_t *backup_block = malloc(rbyd.eoff); lfs_bd_read(&lfs, NULL, &lfs.rcache, rbyd.eoff, - rbyd.block, 0, backup_block, rbyd.eoff) => 0; + rbyd.blocks[0], 0, backup_block, rbyd.eoff) => 0; // test all permutations of a given size size_t perm_count = TEST_FACTORIAL(N); @@ -8028,9 +8028,9 @@ code = ''' // restore backup rbyd = backup_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfs_bd_prog(&lfs, &lfs.pcache, &lfs.rcache, false, - rbyd.block, 0, backup_block, rbyd.eoff) => 0; + rbyd.blocks[0], 0, backup_block, rbyd.eoff) => 0; lfs_bd_flush(&lfs, &lfs.pcache, &lfs.rcache, false) => 0; // delete each rid in permutation order @@ -8050,7 +8050,7 @@ code = ''' } // check that all tags are now removed - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == 0); lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG_REG, 0, buffer, 4) @@ -8062,7 +8062,7 @@ code = ''' BUF("\xaa\xaa\xaa\xaa\xaa\xaa", 6)))) => 0; assert(rbyd.weight == 1); - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == 1); lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_REG, buffer, 6) @@ -8113,7 +8113,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -8136,7 +8136,7 @@ code = ''' // create one consistent block rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; for (unsigned j = 0; j < N; j++) { lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( @@ -8153,7 +8153,7 @@ code = ''' lfsr_rbyd_t backup_rbyd = rbyd; uint8_t *backup_block = malloc(rbyd.eoff); lfs_bd_read(&lfs, NULL, &lfs.rcache, rbyd.eoff, - rbyd.block, 0, backup_block, rbyd.eoff) => 0; + rbyd.blocks[0], 0, backup_block, rbyd.eoff) => 0; // test all permutations of a given size size_t perm_count = TEST_FACTORIAL(N); @@ -8176,9 +8176,9 @@ code = ''' // restore backup rbyd = backup_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfs_bd_prog(&lfs, &lfs.pcache, &lfs.rcache, false, - rbyd.block, 0, backup_block, rbyd.eoff) => 0; + rbyd.blocks[0], 0, backup_block, rbyd.eoff) => 0; lfs_bd_flush(&lfs, &lfs.pcache, &lfs.rcache, false) => 0; // delete each rid in permutation order @@ -8198,7 +8198,7 @@ code = ''' } // check that all tags are now removed - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == 0); lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_REG, buffer, 4) @@ -8214,7 +8214,7 @@ code = ''' } assert(rbyd.weight == 1); - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == 1); lfsr_rbyd_get(&lfs, &rbyd, 0, LFSR_TAG_REG, buffer, 6) @@ -8271,7 +8271,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -8308,7 +8308,7 @@ code = ''' // set up rbyd block rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; prng = SEED; count = 0; @@ -8377,7 +8377,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -8391,7 +8391,7 @@ code = ''' // make id0 with weight w1 rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(0, REG, +1, BUF("\xaa\xaa\xaa\xaa", 4)))) => 0; @@ -8402,7 +8402,7 @@ code = ''' assert(weight_ == 1); assert(lfsr_data_size(&data_) == 4); - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, 0, LFSR_TAG_REG, &rid_, &tag_, &weight_, &data_) => 0; assert(tag_ == LFSR_TAG_REG); @@ -8427,7 +8427,7 @@ code = ''' assert(weight_ == 2); assert(lfsr_data_size(&data_) == 4); - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, 0, LFSR_TAG_REG, &rid_, &tag_, &weight_, &data_) => 0; assert(tag_ == LFSR_TAG_REG); @@ -8464,7 +8464,7 @@ code = ''' assert(weight_ == 3); assert(lfsr_data_size(&data_) == 4); - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, 0, LFSR_TAG_REG, &rid_, &tag_, &weight_, &data_) => 0; assert(tag_ == LFSR_TAG_REG); @@ -8513,7 +8513,7 @@ code = ''' assert(weight_ == 4); assert(lfsr_data_size(&data_) == 4); - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, 0, LFSR_TAG_REG, &rid_, &tag_, &weight_, &data_) => 0; assert(tag_ == LFSR_TAG_REG); @@ -8574,7 +8574,7 @@ code = ''' assert(weight_ == 5); assert(lfsr_data_size(&data_) == 4); - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, 0, LFSR_TAG_REG, &rid_, &tag_, &weight_, &data_) => 0; assert(tag_ == LFSR_TAG_REG); @@ -8614,7 +8614,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -8627,7 +8627,7 @@ code = ''' lfsr_data_t data_; rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( // make id0 with weight w1 LFSR_ATTR(0, REG, +1, BUF("\xaa\xaa\xaa\xaa", 4)), @@ -8674,7 +8674,7 @@ code = ''' lfsr_rbyd_lookupnext(&lfs, &rbyd, rid_, tag_+1, &rid_, &tag_, &weight_, &data_) => LFS_ERR_NOENT; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, 0, &rid_, &tag_, &weight_, &data_) => 0; assert(tag_ == LFSR_TAG_REG); @@ -8723,7 +8723,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -8765,7 +8765,7 @@ code = ''' // test the given permutation with multiple commits rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; for (unsigned j = 0; j < N; j++) { // adjust rid based on future insertions uint16_t rid = perm[j]; @@ -8780,7 +8780,7 @@ code = ''' BUF(names[perm[j] % 6], 4)))) => 0; } - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == N*W); for (unsigned j = 0; j < N; j++) { lfsr_rbyd_lookupnext(&lfs, &rbyd, j*W+W-1, LFSR_TAG_REG, @@ -8810,7 +8810,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -8852,7 +8852,7 @@ code = ''' // test the given permutation with multiple commits rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; for (unsigned j = 0; j < N; j++) { // adjust rid based on future insertions uint16_t rid = perm[j]; @@ -8867,7 +8867,7 @@ code = ''' BUF(names[perm[j] % 6], 4)))) => 0; } - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == N*W); // try traversing all tags tag_ = 0; @@ -8896,7 +8896,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -8910,7 +8910,7 @@ code = ''' // make id0 with weight w1 rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(3), 0, BUF("unrelated", 9)), LFSR_ATTR(0, REG, +1, BUF("\xaa\xaa\xaa\xaa", 4)), @@ -8942,7 +8942,7 @@ code = ''' assert(weight_ == 0); assert(lfsr_data_size(&data_) == 2); - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(3), &rid_, &tag_, &weight_, &data_) => 0; assert(tag_ == LFSR_TAG_UATTR(3)); @@ -9018,7 +9018,7 @@ code = ''' assert(weight_ == 0); assert(lfsr_data_size(&data_) == 2); - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(3), &rid_, &tag_, &weight_, &data_) => 0; assert(tag_ == LFSR_TAG_UATTR(3)); @@ -9130,7 +9130,7 @@ code = ''' assert(weight_ == 0); assert(lfsr_data_size(&data_) == 2); - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(3), &rid_, &tag_, &weight_, &data_) => 0; assert(tag_ == LFSR_TAG_UATTR(3)); @@ -9278,7 +9278,7 @@ code = ''' assert(weight_ == 0); assert(lfsr_data_size(&data_) == 2); - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(3), &rid_, &tag_, &weight_, &data_) => 0; assert(tag_ == LFSR_TAG_UATTR(3)); @@ -9462,7 +9462,7 @@ code = ''' assert(weight_ == 0); assert(lfsr_data_size(&data_) == 2); - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(3), &rid_, &tag_, &weight_, &data_) => 0; assert(tag_ == LFSR_TAG_UATTR(3)); @@ -9568,7 +9568,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -9581,7 +9581,7 @@ code = ''' lfsr_data_t data_; rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(3), 0, BUF("unrelated", 9)), // make id0 with weight w1 @@ -9709,7 +9709,7 @@ code = ''' lfsr_rbyd_lookupnext(&lfs, &rbyd, rid_, tag_+1, &rid_, &tag_, &weight_, &data_) => LFS_ERR_NOENT; - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, 0, &rid_, &tag_, &weight_, &data_) => 0; assert(tag_ == LFSR_TAG_UATTR(3)); @@ -9824,7 +9824,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -9866,7 +9866,7 @@ code = ''' // test the given permutation with multiple commits rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(3), 0, BUF("unrelated", 9)))) => 0; @@ -9887,7 +9887,7 @@ code = ''' BUF(names[perm[j] % 6], 2)))) => 0; } - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == N*W); lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_UATTR(3), &rid_, &tag_, &weight_, &data_) => 0; @@ -9935,7 +9935,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -9977,7 +9977,7 @@ code = ''' // test the given permutation with multiple commits rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(-1, UATTR(3), 0, BUF("unrelated", 9)))) => 0; @@ -9998,7 +9998,7 @@ code = ''' BUF(names[perm[j] % 6], 2)))) => 0; } - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == N*W); // try traversing all tags tag_ = 0; @@ -10056,7 +10056,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -10098,7 +10098,7 @@ code = ''' // create given permutation with multiple commits rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; for (unsigned j = 0; j < N; j++) { // adjust rid based on future insertions uint16_t rid = perm[j]; @@ -10118,7 +10118,7 @@ code = ''' lfsr_rbyd_t backup_rbyd = rbyd; uint8_t *backup_block = malloc(rbyd.eoff); lfs_bd_read(&lfs, NULL, &lfs.rcache, rbyd.eoff, - rbyd.block, 0, backup_block, rbyd.eoff) => 0; + rbyd.blocks[0], 0, backup_block, rbyd.eoff) => 0; // try growing each rid for (unsigned j = 0; j < N; j++) { @@ -10126,16 +10126,16 @@ code = ''' printf("--- growing: %d ---\n", j); rbyd = backup_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfs_bd_prog(&lfs, &lfs.pcache, &lfs.rcache, false, - rbyd.block, 0, backup_block, rbyd.eoff) => 0; + rbyd.blocks[0], 0, backup_block, rbyd.eoff) => 0; lfs_bd_flush(&lfs, &lfs.pcache, &lfs.rcache, false) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(j*W+W-1, RM, +D, NULL()))) => 0; assert(rbyd.weight == N*W+D); - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, CFG->block_size) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], CFG->block_size) => 0; assert(rbyd.weight == N*W+D); for (unsigned k = 0; k < N; k++) { if (k == j) { @@ -10183,7 +10183,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -10225,7 +10225,7 @@ code = ''' // create given permutation with multiple commits rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; for (unsigned j = 0; j < N; j++) { // adjust rid based on future insertions uint16_t rid = perm[j]; @@ -10245,7 +10245,7 @@ code = ''' lfsr_rbyd_t backup_rbyd = rbyd; uint8_t *backup_block = malloc(rbyd.eoff); lfs_bd_read(&lfs, NULL, &lfs.rcache, rbyd.eoff, - rbyd.block, 0, backup_block, rbyd.eoff) => 0; + rbyd.blocks[0], 0, backup_block, rbyd.eoff) => 0; // try growing each rid for (unsigned j = 0; j < N; j++) { @@ -10253,9 +10253,9 @@ code = ''' printf("--- growing: %d ---\n", j); rbyd = backup_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfs_bd_prog(&lfs, &lfs.pcache, &lfs.rcache, false, - rbyd.block, 0, backup_block, rbyd.eoff) => 0; + rbyd.blocks[0], 0, backup_block, rbyd.eoff) => 0; lfs_bd_flush(&lfs, &lfs.pcache, &lfs.rcache, false) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( @@ -10263,7 +10263,7 @@ code = ''' BUF(names[j % 6], 6)))) => 0; assert(rbyd.weight == N*W+D); - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, CFG->block_size) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], CFG->block_size) => 0; assert(rbyd.weight == N*W+D); for (unsigned k = 0; k < N; k++) { if (k == j) { @@ -10319,7 +10319,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -10361,7 +10361,7 @@ code = ''' // create given permutation with multiple commits rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; for (unsigned j = 0; j < N; j++) { // adjust rid based on future insertions uint16_t rid = perm[j]; @@ -10381,7 +10381,7 @@ code = ''' lfsr_rbyd_t backup_rbyd = rbyd; uint8_t *backup_block = malloc(rbyd.eoff); lfs_bd_read(&lfs, NULL, &lfs.rcache, rbyd.eoff, - rbyd.block, 0, backup_block, rbyd.eoff) => 0; + rbyd.blocks[0], 0, backup_block, rbyd.eoff) => 0; // try growing each rid for (unsigned j = 0; j < N; j++) { @@ -10389,9 +10389,9 @@ code = ''' printf("--- growing: %d ---\n", j); rbyd = backup_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfs_bd_prog(&lfs, &lfs.pcache, &lfs.rcache, false, - rbyd.block, 0, backup_block, rbyd.eoff) => 0; + rbyd.blocks[0], 0, backup_block, rbyd.eoff) => 0; lfs_bd_flush(&lfs, &lfs.pcache, &lfs.rcache, false) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( @@ -10399,7 +10399,7 @@ code = ''' BUF(names[j % 6], 6)))) => 0; assert(rbyd.weight == N*W+D); - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, CFG->block_size) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], CFG->block_size) => 0; assert(rbyd.weight == N*W+D); for (unsigned k = 0; k < N; k++) { if (k == j) { @@ -10467,7 +10467,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -10509,7 +10509,7 @@ code = ''' // create given permutation with multiple commits rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; for (unsigned j = 0; j < N; j++) { // adjust rid based on future insertions uint16_t rid = perm[j]; @@ -10529,7 +10529,7 @@ code = ''' lfsr_rbyd_t backup_rbyd = rbyd; uint8_t *backup_block = malloc(rbyd.eoff); lfs_bd_read(&lfs, NULL, &lfs.rcache, rbyd.eoff, - rbyd.block, 0, backup_block, rbyd.eoff) => 0; + rbyd.blocks[0], 0, backup_block, rbyd.eoff) => 0; // try shrinking each rid for (unsigned j = 0; j < N; j++) { @@ -10537,16 +10537,16 @@ code = ''' printf("--- shrinking: %d ---\n", j); rbyd = backup_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfs_bd_prog(&lfs, &lfs.pcache, &lfs.rcache, false, - rbyd.block, 0, backup_block, rbyd.eoff) => 0; + rbyd.blocks[0], 0, backup_block, rbyd.eoff) => 0; lfs_bd_flush(&lfs, &lfs.pcache, &lfs.rcache, false) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(j*W+W-1, GROW, -D, NULL()))) => 0; assert(rbyd.weight == N*W-D); - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, CFG->block_size) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], CFG->block_size) => 0; assert(rbyd.weight == N*W-D); for (unsigned k = 0; k < N; k++) { if (k == j) { @@ -10594,7 +10594,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -10636,7 +10636,7 @@ code = ''' // create given permutation with multiple commits rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; for (unsigned j = 0; j < N; j++) { // adjust rid based on future insertions uint16_t rid = perm[j]; @@ -10656,7 +10656,7 @@ code = ''' lfsr_rbyd_t backup_rbyd = rbyd; uint8_t *backup_block = malloc(rbyd.eoff); lfs_bd_read(&lfs, NULL, &lfs.rcache, rbyd.eoff, - rbyd.block, 0, backup_block, rbyd.eoff) => 0; + rbyd.blocks[0], 0, backup_block, rbyd.eoff) => 0; // try shrinking each rid for (unsigned j = 0; j < N; j++) { @@ -10664,9 +10664,9 @@ code = ''' printf("--- shrinking: %d ---\n", j); rbyd = backup_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfs_bd_prog(&lfs, &lfs.pcache, &lfs.rcache, false, - rbyd.block, 0, backup_block, rbyd.eoff) => 0; + rbyd.blocks[0], 0, backup_block, rbyd.eoff) => 0; lfs_bd_flush(&lfs, &lfs.pcache, &lfs.rcache, false) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( @@ -10674,7 +10674,7 @@ code = ''' BUF(names[j % 6], 6)))) => 0; assert(rbyd.weight == N*W-D); - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, CFG->block_size) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], CFG->block_size) => 0; assert(rbyd.weight == N*W-D); for (unsigned k = 0; k < N; k++) { if (k == j) { @@ -10730,7 +10730,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -10772,7 +10772,7 @@ code = ''' // create given permutation with multiple commits rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; for (unsigned j = 0; j < N; j++) { // adjust rid based on future insertions uint16_t rid = perm[j]; @@ -10792,7 +10792,7 @@ code = ''' lfsr_rbyd_t backup_rbyd = rbyd; uint8_t *backup_block = malloc(rbyd.eoff); lfs_bd_read(&lfs, NULL, &lfs.rcache, rbyd.eoff, - rbyd.block, 0, backup_block, rbyd.eoff) => 0; + rbyd.blocks[0], 0, backup_block, rbyd.eoff) => 0; // try shrinking each rid for (unsigned j = 0; j < N; j++) { @@ -10800,9 +10800,9 @@ code = ''' printf("--- shrinking: %d ---\n", j); rbyd = backup_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfs_bd_prog(&lfs, &lfs.pcache, &lfs.rcache, false, - rbyd.block, 0, backup_block, rbyd.eoff) => 0; + rbyd.blocks[0], 0, backup_block, rbyd.eoff) => 0; lfs_bd_flush(&lfs, &lfs.pcache, &lfs.rcache, false) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( @@ -10810,7 +10810,7 @@ code = ''' BUF(names[j % 6], 6)))) => 0; assert(rbyd.weight == N*W-D); - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, CFG->block_size) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], CFG->block_size) => 0; assert(rbyd.weight == N*W-D); for (unsigned k = 0; k < N; k++) { if (k == j) { @@ -10877,7 +10877,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -10919,7 +10919,7 @@ code = ''' // create given permutation with multiple commits rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; for (unsigned j = 0; j < N; j++) { // adjust rid based on future insertions uint16_t rid = perm[j]; @@ -10939,7 +10939,7 @@ code = ''' lfsr_rbyd_t backup_rbyd = rbyd; uint8_t *backup_block = malloc(rbyd.eoff); lfs_bd_read(&lfs, NULL, &lfs.rcache, rbyd.eoff, - rbyd.block, 0, backup_block, rbyd.eoff) => 0; + rbyd.blocks[0], 0, backup_block, rbyd.eoff) => 0; // try deleting each rid for (unsigned j = 0; j < N; j++) { @@ -10947,16 +10947,16 @@ code = ''' printf("--- deleting: %d ---\n", j); rbyd = backup_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfs_bd_prog(&lfs, &lfs.pcache, &lfs.rcache, false, - rbyd.block, 0, backup_block, rbyd.eoff) => 0; + rbyd.blocks[0], 0, backup_block, rbyd.eoff) => 0; lfs_bd_flush(&lfs, &lfs.pcache, &lfs.rcache, false) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( LFSR_ATTR(j*W+W-1, RM, -W, NULL()))) => 0; assert(rbyd.weight == (N-1)*W); - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, CFG->block_size) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], CFG->block_size) => 0; assert(rbyd.weight == (N-1)*W); for (unsigned k = 0; k < N-1; k++) { if (k >= j) { @@ -10988,7 +10988,7 @@ code = ''' LFSR_ATTR(j*W, REG, +W, BUF(names[j % 6], 6)))) => 0; assert(rbyd.weight == N*W); - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, CFG->block_size) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], CFG->block_size) => 0; assert(rbyd.weight == N*W); for (unsigned k = 0; k < N; k++) { if (k == j) { @@ -11031,7 +11031,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -11073,7 +11073,7 @@ code = ''' // create given permutation with multiple commits rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; for (unsigned j = 0; j < N; j++) { // adjust rid based on future insertions uint16_t rid = perm[j]; @@ -11093,7 +11093,7 @@ code = ''' lfsr_rbyd_t backup_rbyd = rbyd; uint8_t *backup_block = malloc(rbyd.eoff); lfs_bd_read(&lfs, NULL, &lfs.rcache, rbyd.eoff, - rbyd.block, 0, backup_block, rbyd.eoff) => 0; + rbyd.blocks[0], 0, backup_block, rbyd.eoff) => 0; // try appending an attr to each rid, this should not affect // weights at all! @@ -11102,9 +11102,9 @@ code = ''' printf("--- appending: %d ---\n", j); rbyd = backup_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfs_bd_prog(&lfs, &lfs.pcache, &lfs.rcache, false, - rbyd.block, 0, backup_block, rbyd.eoff) => 0; + rbyd.blocks[0], 0, backup_block, rbyd.eoff) => 0; lfs_bd_flush(&lfs, &lfs.pcache, &lfs.rcache, false) => 0; lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS( @@ -11112,7 +11112,7 @@ code = ''' BUF(names[j % 6], 2)))) => 0; assert(rbyd.weight == N*W); - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, CFG->block_size) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], CFG->block_size) => 0; assert(rbyd.weight == N*W); for (unsigned k = 0; k < N; k++) { lfsr_rbyd_lookupnext(&lfs, &rbyd, k*W+W-1, LFSR_TAG_REG, @@ -11142,7 +11142,7 @@ code = ''' LFSR_ATTR(j*W+W-1, RM(UATTR(1)), 0, NULL()))) => 0; assert(rbyd.weight == N*W); - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, CFG->block_size) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], CFG->block_size) => 0; assert(rbyd.weight == N*W); for (unsigned k = 0; k < N; k++) { lfsr_rbyd_lookupnext(&lfs, &rbyd, k*W+W-1, LFSR_TAG_REG, @@ -11168,7 +11168,7 @@ code = ''' BUF(names[j % 6], 2)))) => 0; assert(rbyd.weight == N*W); - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, CFG->block_size) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], CFG->block_size) => 0; assert(rbyd.weight == N*W); for (unsigned k = 0; k < N; k++) { lfsr_rbyd_lookupnext(&lfs, &rbyd, k*W+W-1, LFSR_TAG_REG, @@ -11210,7 +11210,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -11255,7 +11255,7 @@ code = ''' // set up rbyd block rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; prng = SEED; count = 0; @@ -11361,7 +11361,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -11412,7 +11412,7 @@ code = ''' // set up rbyd block rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; prng = SEED; count = 0; @@ -11556,7 +11556,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -11593,7 +11593,7 @@ code = ''' // build the attribute list for the current permutation rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; for (unsigned j = 0; j < N; j++) { // adjust rid based on future insertions uint16_t rid = perm[j]; @@ -11612,7 +11612,7 @@ code = ''' assert(rbyd.weight == N); // test that we can lookup each attr with a wide lookup - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == N); for (unsigned j = 0; j < N; j++) { @@ -11643,7 +11643,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -11680,7 +11680,7 @@ code = ''' // create given permutation with multiple commits rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; for (unsigned j = 0; j < N; j++) { // adjust rid based on future insertions uint16_t rid = perm[j]; @@ -11702,7 +11702,7 @@ code = ''' lfsr_rbyd_t backup_rbyd = rbyd; uint8_t *backup_block = malloc(rbyd.eoff); lfs_bd_read(&lfs, NULL, &lfs.rcache, rbyd.eoff, - rbyd.block, 0, backup_block, rbyd.eoff) => 0; + rbyd.blocks[0], 0, backup_block, rbyd.eoff) => 0; // try removing each tag for (unsigned j = 0; j < N; j++) { @@ -11710,9 +11710,9 @@ code = ''' printf("--- remove: %d ---\n", j); rbyd = backup_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfs_bd_prog(&lfs, &lfs.pcache, &lfs.rcache, false, - rbyd.block, 0, backup_block, rbyd.eoff) => 0; + rbyd.blocks[0], 0, backup_block, rbyd.eoff) => 0; lfs_bd_flush(&lfs, &lfs.pcache, &lfs.rcache, false) => 0; // remove with a wide tag @@ -11720,7 +11720,7 @@ code = ''' LFSR_ATTR(j, RM(WIDE(UATTR)), 0, NULL()))) => 0; // try traversing over the tags - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, CFG->block_size) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], CFG->block_size) => 0; lfsr_tag_t tag_ = 0; lfs_ssize_t rid_ = -1; lfs_size_t weight_; @@ -11780,7 +11780,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -11817,7 +11817,7 @@ code = ''' // create given permutation with multiple commits rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; for (unsigned j = 0; j < N; j++) { // adjust rid based on future insertions uint16_t rid = perm[j]; @@ -11839,7 +11839,7 @@ code = ''' lfsr_rbyd_t backup_rbyd = rbyd; uint8_t *backup_block = malloc(rbyd.eoff); lfs_bd_read(&lfs, NULL, &lfs.rcache, rbyd.eoff, - rbyd.block, 0, backup_block, rbyd.eoff) => 0; + rbyd.blocks[0], 0, backup_block, rbyd.eoff) => 0; // try replacing each tag for (unsigned j = 0; j < N; j++) { @@ -11847,9 +11847,9 @@ code = ''' printf("--- replace: %d ---\n", j); rbyd = backup_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfs_bd_prog(&lfs, &lfs.pcache, &lfs.rcache, false, - rbyd.block, 0, backup_block, rbyd.eoff) => 0; + rbyd.blocks[0], 0, backup_block, rbyd.eoff) => 0; lfs_bd_flush(&lfs, &lfs.pcache, &lfs.rcache, false) => 0; // replace with bitwise inverse @@ -11858,7 +11858,7 @@ code = ''' BUF(names[j % 6], 3)))) => 0; // try traversing over the tags - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, CFG->block_size) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], CFG->block_size) => 0; lfsr_tag_t tag_ = 0; lfs_ssize_t rid_ = -1; lfs_size_t weight_; @@ -11919,7 +11919,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -11956,7 +11956,7 @@ code = ''' // build the attribute list for the current permutation rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; for (unsigned j = 0; j < N; j++) { // adjust rid based on future insertions uint16_t rid = perm[j]; @@ -11977,7 +11977,7 @@ code = ''' assert(rbyd.weight == N); // test that we can lookup each attr with a wide lookup - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == N); for (unsigned j = 0; j < N; j++) { @@ -12008,7 +12008,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -12045,7 +12045,7 @@ code = ''' // create given permutation with multiple commits rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; for (unsigned j = 0; j < N; j++) { // adjust rid based on future insertions uint16_t rid = perm[j]; @@ -12069,7 +12069,7 @@ code = ''' lfsr_rbyd_t backup_rbyd = rbyd; uint8_t *backup_block = malloc(rbyd.eoff); lfs_bd_read(&lfs, NULL, &lfs.rcache, rbyd.eoff, - rbyd.block, 0, backup_block, rbyd.eoff) => 0; + rbyd.blocks[0], 0, backup_block, rbyd.eoff) => 0; // try removing each tag for (unsigned j = 0; j < N; j++) { @@ -12077,9 +12077,9 @@ code = ''' printf("--- remove: %d ---\n", j); rbyd = backup_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfs_bd_prog(&lfs, &lfs.pcache, &lfs.rcache, false, - rbyd.block, 0, backup_block, rbyd.eoff) => 0; + rbyd.blocks[0], 0, backup_block, rbyd.eoff) => 0; lfs_bd_flush(&lfs, &lfs.pcache, &lfs.rcache, false) => 0; // remove with a wide tag @@ -12087,7 +12087,7 @@ code = ''' LFSR_ATTR(j, RM(WIDE(UATTR)), 0, NULL()))) => 0; // try traversing over the tags - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, CFG->block_size) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], CFG->block_size) => 0; lfsr_tag_t tag_ = 0; lfs_ssize_t rid_ = -1; lfs_size_t weight_; @@ -12154,7 +12154,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -12191,7 +12191,7 @@ code = ''' // create given permutation with multiple commits rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; for (unsigned j = 0; j < N; j++) { // adjust rid based on future insertions uint16_t rid = perm[j]; @@ -12215,7 +12215,7 @@ code = ''' lfsr_rbyd_t backup_rbyd = rbyd; uint8_t *backup_block = malloc(rbyd.eoff); lfs_bd_read(&lfs, NULL, &lfs.rcache, rbyd.eoff, - rbyd.block, 0, backup_block, rbyd.eoff) => 0; + rbyd.blocks[0], 0, backup_block, rbyd.eoff) => 0; // try replacing each tag for (unsigned j = 0; j < N; j++) { @@ -12223,9 +12223,9 @@ code = ''' printf("--- replace: %d ---\n", j); rbyd = backup_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfs_bd_prog(&lfs, &lfs.pcache, &lfs.rcache, false, - rbyd.block, 0, backup_block, rbyd.eoff) => 0; + rbyd.blocks[0], 0, backup_block, rbyd.eoff) => 0; lfs_bd_flush(&lfs, &lfs.pcache, &lfs.rcache, false) => 0; // replace with bitwise inverse @@ -12234,7 +12234,7 @@ code = ''' BUF(names[j % 6], 3)))) => 0; // try traversing over the tags - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, CFG->block_size) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], CFG->block_size) => 0; lfsr_tag_t tag_ = 0; lfs_ssize_t rid_ = -1; lfs_size_t weight_; @@ -12302,7 +12302,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -12339,7 +12339,7 @@ code = ''' // build the attribute list for the current permutation rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; for (unsigned j = 0; j < N; j++) { // adjust rid based on future insertions uint16_t rid = perm[j]; @@ -12357,7 +12357,7 @@ code = ''' assert(rbyd.weight == N); // test that we can lookup each attr with a wide lookup - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, 0) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], 0) => 0; assert(rbyd.weight == N); for (unsigned j = 0; j < N; j++) { @@ -12388,7 +12388,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -12425,7 +12425,7 @@ code = ''' // create given permutation with multiple commits rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; for (unsigned j = 0; j < N; j++) { // adjust rid based on future insertions uint16_t rid = perm[j]; @@ -12446,7 +12446,7 @@ code = ''' lfsr_rbyd_t backup_rbyd = rbyd; uint8_t *backup_block = malloc(rbyd.eoff); lfs_bd_read(&lfs, NULL, &lfs.rcache, rbyd.eoff, - rbyd.block, 0, backup_block, rbyd.eoff) => 0; + rbyd.blocks[0], 0, backup_block, rbyd.eoff) => 0; // try removing each tag for (unsigned j = 0; j < N; j++) { @@ -12454,9 +12454,9 @@ code = ''' printf("--- remove: %d ---\n", j); rbyd = backup_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfs_bd_prog(&lfs, &lfs.pcache, &lfs.rcache, false, - rbyd.block, 0, backup_block, rbyd.eoff) => 0; + rbyd.blocks[0], 0, backup_block, rbyd.eoff) => 0; lfs_bd_flush(&lfs, &lfs.pcache, &lfs.rcache, false) => 0; // remove with a wide tag @@ -12464,7 +12464,7 @@ code = ''' LFSR_ATTR(j, RM(WIDE(UATTR)), 0, NULL()))) => 0; // try traversing over the tags - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, CFG->block_size) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], CFG->block_size) => 0; lfsr_tag_t tag_ = 0; lfs_ssize_t rid_ = -1; lfs_size_t weight_; @@ -12527,7 +12527,7 @@ code = ''' lfs_init(&lfs, CFG) => 0; lfsr_rbyd_t init_rbyd = { - .block = 0, + .blocks[0] = 0, .eoff = 0, .cksum = 0, .trunk = 0, @@ -12564,7 +12564,7 @@ code = ''' // create given permutation with multiple commits rbyd = init_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; for (unsigned j = 0; j < N; j++) { // adjust rid based on future insertions uint16_t rid = perm[j]; @@ -12585,7 +12585,7 @@ code = ''' lfsr_rbyd_t backup_rbyd = rbyd; uint8_t *backup_block = malloc(rbyd.eoff); lfs_bd_read(&lfs, NULL, &lfs.rcache, rbyd.eoff, - rbyd.block, 0, backup_block, rbyd.eoff) => 0; + rbyd.blocks[0], 0, backup_block, rbyd.eoff) => 0; // try replacing each tag for (unsigned j = 0; j < N; j++) { @@ -12593,9 +12593,9 @@ code = ''' printf("--- replace: %d ---\n", j); rbyd = backup_rbyd; - lfs_bd_erase(&lfs, rbyd.block) => 0; + lfs_bd_erase(&lfs, rbyd.blocks[0]) => 0; lfs_bd_prog(&lfs, &lfs.pcache, &lfs.rcache, false, - rbyd.block, 0, backup_block, rbyd.eoff) => 0; + rbyd.blocks[0], 0, backup_block, rbyd.eoff) => 0; lfs_bd_flush(&lfs, &lfs.pcache, &lfs.rcache, false) => 0; // replace with bitwise inverse @@ -12604,7 +12604,7 @@ code = ''' BUF(names[j % 6], 6)))) => 0; // try traversing over the tags - lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, CFG->block_size) => 0; + lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], CFG->block_size) => 0; lfsr_tag_t tag_ = 0; lfs_ssize_t rid_ = -1; lfs_size_t weight_;