From 91341a4c48fe732b103367336ceab94daea21fb3 Mon Sep 17 00:00:00 2001 From: Christopher Haster Date: Wed, 12 Feb 2025 13:49:38 -0600 Subject: [PATCH] Replaced rattr.u.etc with rattr relevant types This does a couple things: - Makes attr-lists a bit more self-documenting. - Adds a bit more type-safety. The LFSR_RATTR_* macros should be able to reject types that don't match the expected encoding. - Makes it easier to adjust dsize estimates at one location. Specifically, this makes it harder to forget bptr's LFSR_BPTR_DSIZE. --- Surprisingly this did have a small impact on code size. I'm not entirely sure why, but considering how much of the codebase this touches I'm just going to chalk this up to compiler noise: code stack ctx before: 35488 2440 636 after: 35536 (+0.1%) 2440 (+0.0%) 636 (+0.0%) lfsr_file_carve seems the hardest hit: function (0 added, 0 removed) osize nsize dsize lfsr_file_open 16 20 +4 (+25.0%) lfsr_file_carve 1316 1356 +40 (+3.0%) lfsr_remove 408 412 +4 (+1.0%) TOTAL 35488 35536 +48 (+0.1%) --- lfs.c | 260 ++++++++++++++++++++++++++---------------- tests/test_btree.toml | 52 ++++----- tests/test_files.toml | 25 ++-- tests/test_mount.toml | 11 +- tests/test_mtree.toml | 26 ++--- tests/test_rbyd.toml | 256 +++++++++++++++++------------------------ 6 files changed, 317 insertions(+), 313 deletions(-) diff --git a/lfs.c b/lfs.c index 5489c380..e0b9c503 100644 --- a/lfs.c +++ b/lfs.c @@ -2084,12 +2084,12 @@ static inline lfsr_data_t lfsr_data_fromlleb128(uint32_t word, #define LFSR_GEOMETRY_DSIZE (4+5) - - // operations on attribute lists +// our core attribute type typedef struct lfsr_rattr { lfsr_tag_t tag; + // ignoring lazy/special tags // sign(data_count)=0 => in-RAM buffer or estimate for lazy tags // sign(data_count)=1 => multiple concatenated datas int16_t data_count; @@ -2104,12 +2104,21 @@ typedef struct lfsr_rattr { } u; } lfsr_rattr_t; -#define LFSR_RATTR(_tag, _weight, _etc, _data_count) \ +// low-level attr macro +#define LFSR_RATTR_(_tag, _weight, _datas, _data_count) \ ((lfsr_rattr_t){ \ .tag=_tag, \ - .data_count=(uint16_t){_data_count}, \ + .data_count=_data_count, \ .weight=_weight, \ - .u.etc=_etc}) + .u.etc=_datas}) + +// high-level attr macros +#define LFSR_RATTR(_tag, _weight) \ + ((lfsr_rattr_t){ \ + .tag=_tag, \ + .data_count=0, \ + .weight=_weight, \ + .u.datas=NULL}) #define LFSR_RATTR_BUF(_tag, _weight, _buffer, _size) \ ((lfsr_rattr_t){ \ @@ -2144,8 +2153,11 @@ typedef struct lfsr_rattr { .tag=LFSR_TAG_NULL, \ .data_count=0, \ .weight=0, \ - .u.etc=NULL}) + .u.buffer=NULL}) +// as convenience we lazily encode single le32/leb128/lleb128 attrs +// +// this also avoids needing a stack allocation for these attrs #define LFSR_RATTR_LE32(_tag, _weight, _le32) \ ((lfsr_rattr_t){ \ .tag=_tag, \ @@ -2185,11 +2197,85 @@ typedef struct lfsr_name { LFSR_RATTR_NAME_( \ _tag, \ _weight, \ - (&(lfsr_name_t){ \ + (&(const lfsr_name_t){ \ .did=_did, \ .name=_name, \ .name_len=_name_len})) +// macros for other lazily encoded attrs +#define LFSR_RATTR_GEOMETRY(_tag, _weight, _geometry) \ + ((lfsr_rattr_t){ \ + .tag=_tag, \ + .data_count=0, \ + .weight=_weight, \ + .u.etc=(const lfsr_geometry_t*){_geometry}}) + +// note the LFSR_BPTR_DSIZE hint so shrub estimates work +#define LFSR_RATTR_BPTR(_tag, _weight, _bptr) \ + ((lfsr_rattr_t){ \ + .tag=_tag, \ + .data_count=LFSR_BPTR_DSIZE, \ + .weight=_weight, \ + .u.etc=(const lfsr_bptr_t*){_bptr}}) + +#define LFSR_RATTR_SHRUB(_tag, _weight, _shrub) \ + ((lfsr_rattr_t){ \ + .tag=_tag, \ + .data_count=0, \ + .weight=_weight, \ + .u.etc=(const lfsr_shrub_t*){_shrub}}) + +#define LFSR_RATTR_BTREE(_tag, _weight, _btree) \ + ((lfsr_rattr_t){ \ + .tag=_tag, \ + .data_count=0, \ + .weight=_weight, \ + .u.etc=(const lfsr_btree_t*){_btree}}) + +#define LFSR_RATTR_MPTR(_tag, _weight, _mptr) \ + ((lfsr_rattr_t){ \ + .tag=_tag, \ + .data_count=0, \ + .weight=_weight, \ + .u.etc=(const lfs_block_t*){_mptr}}) + +#define LFSR_RATTR_ECKSUM(_tag, _weight, _ecksum) \ + ((lfsr_rattr_t){ \ + .tag=_tag, \ + .data_count=0, \ + .weight=_weight, \ + .u.etc=(const lfsr_ecksum_t*){_ecksum}}) + +// these are special attrs that trigger unique behavior in +// lfsr_mdir_commit__ +#define LFSR_RATTR_RATTRS(_rattrs, _rattr_count) \ + ((lfsr_rattr_t){ \ + .tag=LFSR_TAG_RATTRS, \ + .data_count=(uint16_t){_rattr_count}, \ + .weight=0, \ + .u.etc=(const lfsr_rattr_t*){_rattrs}}) + +#define LFSR_RATTR_SHRUBCOMMIT(_shrubcommit) \ + ((lfsr_rattr_t){ \ + .tag=LFSR_TAG_SHRUBCOMMIT, \ + .data_count=0, \ + .weight=0, \ + .u.etc=(const lfsr_shrubcommit_t*){_shrubcommit}}) + +#define LFSR_RATTR_MOVE(_move) \ + ((lfsr_rattr_t){ \ + .tag=LFSR_TAG_MOVE, \ + .data_count=0, \ + .weight=0, \ + .u.etc=(const lfsr_mdir_t*){_move}}) + +#define LFSR_RATTR_ATTRS(_attrs, _attr_count) \ + ((lfsr_rattr_t){ \ + .tag=LFSR_TAG_ATTRS, \ + .data_count=(uint16_t){_attr_count}, \ + .weight=0, \ + .u.etc=(const struct lfs_attr*){_attrs}}) + // create an attribute list #define LFSR_RATTRS(...) \ (const lfsr_rattr_t[]){__VA_ARGS__}, \ @@ -4198,8 +4284,7 @@ trunk:; err = lfsr_rbyd_appendrattr_(lfs, rbyd, LFSR_RATTR( (lfsr_rbyd_isshrub(rbyd) ? LFSR_TAG_SHRUB : 0) | LFSR_TAG_NULL, - 0, - NULL, 0)); + 0)); if (err) { return err; } @@ -4310,7 +4395,7 @@ leaf:; // // note we always need a non-alt to terminate the trunk, otherwise we // can't find trunks during fetch - err = lfsr_rbyd_appendrattr_(lfs, rbyd, LFSR_RATTR( + err = lfsr_rbyd_appendrattr_(lfs, rbyd, LFSR_RATTR_( // mark as shrub if we are a shrub (lfsr_rbyd_isshrub(rbyd) ? LFSR_TAG_SHRUB : 0) // rm => null, otherwise strip off control bits @@ -4387,11 +4472,11 @@ static int lfsr_rbyd_appendcksum_(lfs_t *lfs, lfsr_rbyd_t *rbyd, return err; } - err = lfsr_rbyd_appendrattr_(lfs, rbyd, LFSR_RATTR( + err = lfsr_rbyd_appendrattr_(lfs, rbyd, LFSR_RATTR_ECKSUM( LFSR_TAG_ECKSUM, 0, (&(lfsr_ecksum_t){ .cksize=lfs->cfg->prog_size, - .cksum=ecksum}), 0)); + .cksum=ecksum}))); if (err) { return err; } @@ -4638,7 +4723,7 @@ static int lfsr_rbyd_appendcompactrattr(lfs_t *lfs, lfsr_rbyd_t *rbyd, } // write the tag - err = lfsr_rbyd_appendrattr_(lfs, rbyd, LFSR_RATTR( + err = lfsr_rbyd_appendrattr_(lfs, rbyd, LFSR_RATTR_( (lfsr_rbyd_isshrub(rbyd) ? LFSR_TAG_SHRUB : 0) | rattr.tag, rattr.weight, rattr.u.datas, rattr.data_count)); @@ -5754,8 +5839,7 @@ static int lfsr_btree_commit__(lfs_t *lfs, lfsr_btree_t *btree, branch_l.u.buffer, lfsr_data_size(branch_l)); if (rbyd__.weight != rbyd_.weight) { bctx->rattrs[rattr_count_++] = LFSR_RATTR( - LFSR_TAG_GROW, -rbyd_.weight + rbyd__.weight, - NULL, 0); + LFSR_TAG_GROW, -rbyd_.weight + rbyd__.weight); } lfsr_data_t branch_r = lfsr_data_frombranch( &sibling, &bctx->buf[1*LFSR_BRANCH_DSIZE]); @@ -5842,7 +5926,7 @@ static int lfsr_btree_commit__(lfs_t *lfs, lfsr_btree_t *btree, // build attr list bid_ -= pid - (rbyd_.weight-1); bctx->rattrs[rattr_count_++] = LFSR_RATTR( - LFSR_TAG_RM, -sibling.weight, NULL, 0); + LFSR_TAG_RM, -sibling.weight); lfsr_data_t branch = lfsr_data_frombranch( &rbyd__, &bctx->buf[0*LFSR_BRANCH_DSIZE]); bctx->rattrs[rattr_count_++] = LFSR_RATTR_BUF( @@ -5850,8 +5934,7 @@ static int lfsr_btree_commit__(lfs_t *lfs, lfsr_btree_t *btree, branch.u.buffer, lfsr_data_size(branch)); if (rbyd__.weight != rbyd_.weight) { bctx->rattrs[rattr_count_++] = LFSR_RATTR( - LFSR_TAG_GROW, -rbyd_.weight + rbyd__.weight, - NULL, 0); + LFSR_TAG_GROW, -rbyd_.weight + rbyd__.weight); } rattrs_ = bctx->rattrs; @@ -5883,7 +5966,7 @@ static int lfsr_btree_commit__(lfs_t *lfs, lfsr_btree_t *btree, bid_ -= pid - (rbyd_.weight-1); if (rbyd__.weight == 0) { bctx->rattrs[rattr_count_++] = LFSR_RATTR( - LFSR_TAG_RM, -rbyd_.weight, NULL, 0); + LFSR_TAG_RM, -rbyd_.weight); } else { lfsr_data_t branch = lfsr_data_frombranch( &rbyd__, &bctx->buf[0*LFSR_BRANCH_DSIZE]); @@ -5892,8 +5975,7 @@ static int lfsr_btree_commit__(lfs_t *lfs, lfsr_btree_t *btree, branch.u.buffer, lfsr_data_size(branch)); if (rbyd__.weight != rbyd_.weight) { bctx->rattrs[rattr_count_++] = LFSR_RATTR( - LFSR_TAG_GROW, -rbyd_.weight + rbyd__.weight, - NULL, 0); + LFSR_TAG_GROW, -rbyd_.weight + rbyd__.weight); } } rattrs_ = bctx->rattrs; @@ -6499,13 +6581,12 @@ static int lfsr_bshrub_commit_(lfs_t *lfs, lfsr_bshrub_t *bshrub, // commit to shrub int err = lfsr_mdir_commit(lfs, &bshrub->o.mdir, LFSR_RATTRS( - LFSR_RATTR( - LFSR_TAG_SHRUBCOMMIT, 0, + LFSR_RATTR_SHRUBCOMMIT( (&(lfsr_shrubcommit_t){ .bshrub=bshrub, .rid=bid, .rattrs=rattrs, - .rattr_count=rattr_count}), 0))); + .rattr_count=rattr_count})))); if (err) { return err; } @@ -7522,8 +7603,6 @@ static int lfsr_mdir_commit__(lfs_t *lfs, lfsr_mdir_t *mdir, if (rattrs[i].tag == LFSR_TAG_RATTRS) { // must be the last tag LFS_ASSERT(i == rattr_count-1); - // how would weight make sense here? - LFS_ASSERT(rattrs[i].weight == 0); const lfsr_rattr_t *rattrs_ = rattrs[i].u.etc; lfs_size_t rattr_count_ = rattrs[i].data_count; @@ -7562,8 +7641,6 @@ static int lfsr_mdir_commit__(lfs_t *lfs, lfsr_mdir_t *mdir, // TODO can this be deduplicated with lfsr_mdir_compact__ more? // it _really_ wants to be deduplicated } else if (rattrs[i].tag == LFSR_TAG_MOVE) { - // weighted moves are not supported - LFS_ASSERT(rattrs[i].weight == 0); const lfsr_mdir_t *mdir__ = rattrs[i].u.etc; // skip the name tag, this is always replaced by upper layers @@ -7599,7 +7676,7 @@ static int lfsr_mdir_commit__(lfs_t *lfs, lfsr_mdir_t *mdir, // write our new shrub tag err = lfsr_rbyd_appendrattr(lfs, &mdir->rbyd, rid - lfs_smax(start_rid, 0), - LFSR_RATTR(LFSR_TAG_BSHRUB, 0, &shrub, 0)); + LFSR_RATTR_SHRUB(LFSR_TAG_BSHRUB, 0, &shrub)); if (err) { return err; } @@ -7675,8 +7752,7 @@ static int lfsr_mdir_commit__(lfs_t *lfs, lfsr_mdir_t *mdir, (lfsr_attr_isnoattr(&attrs_[j])) ? LFSR_RATTR( LFSR_TAG_RM - | LFSR_TAG_ATTR(attrs_[j].type), 0, - NULL, 0) + | LFSR_TAG_ATTR(attrs_[j].type), 0) : LFSR_RATTR_BUF( LFSR_TAG_ATTR(attrs_[j].type), 0, attrs_[j].buffer, @@ -7934,7 +8010,7 @@ static int lfsr_mdir_compact__(lfs_t *lfs, lfsr_mdir_t *mdir_, // write the new shrub tag err = lfsr_rbyd_appendcompactrattr(lfs, &mdir_->rbyd, - LFSR_RATTR(tag, weight, &shrub, 0)); + LFSR_RATTR_SHRUB(tag, weight, &shrub)); if (err) { LFS_ASSERT(err != LFS_ERR_RANGE); return err; @@ -8378,15 +8454,15 @@ static int lfsr_mdir_commit(lfs_t *lfs, lfsr_mdir_t *mdir, err = lfsr_btree_commit(lfs, &mtree_, 0, LFSR_RATTRS( - LFSR_RATTR( + LFSR_RATTR_MPTR( LFSR_TAG_MDIR, +(1 << lfs->mdir_bits), - mdir_[0].rbyd.blocks, 0), + mdir_[0].rbyd.blocks), LFSR_RATTR_DATA( LFSR_TAG_NAME, +(1 << lfs->mdir_bits), &split_name), - LFSR_RATTR( + LFSR_RATTR_MPTR( LFSR_TAG_MDIR, 0, - mdir_[1].rbyd.blocks, 0))); + mdir_[1].rbyd.blocks))); if (err) { goto failed; } @@ -8398,15 +8474,15 @@ static int lfsr_mdir_commit(lfs_t *lfs, lfsr_mdir_t *mdir, err = lfsr_btree_commit(lfs, &mtree_, lfsr_mid_bid(lfs, mdir->mid), LFSR_RATTRS( - LFSR_RATTR( + LFSR_RATTR_MPTR( LFSR_TAG_MDIR, 0, - mdir_[0].rbyd.blocks, 0), + mdir_[0].rbyd.blocks), LFSR_RATTR_DATA( LFSR_TAG_NAME, +(1 << lfs->mdir_bits), &split_name), - LFSR_RATTR( + LFSR_RATTR_MPTR( LFSR_TAG_MDIR, 0, - mdir_[1].rbyd.blocks, 0))); + mdir_[1].rbyd.blocks))); if (err) { goto failed; } @@ -8439,8 +8515,7 @@ static int lfsr_mdir_commit(lfs_t *lfs, lfsr_mdir_t *mdir, err = lfsr_btree_commit(lfs, &mtree_, lfsr_mid_bid(lfs, mdir->mid), LFSR_RATTRS( LFSR_RATTR( - LFSR_TAG_RM, -(1 << lfs->mdir_bits), - NULL, 0))); + LFSR_TAG_RM, -(1 << lfs->mdir_bits)))); if (err) { goto failed; } @@ -8461,9 +8536,9 @@ static int lfsr_mdir_commit(lfs_t *lfs, lfsr_mdir_t *mdir, err = lfsr_btree_commit(lfs, &mtree_, 0, LFSR_RATTRS( - LFSR_RATTR( + LFSR_RATTR_MPTR( LFSR_TAG_MDIR, +(1 << lfs->mdir_bits), - mdir_[0].rbyd.blocks, 0))); + mdir_[0].rbyd.blocks))); if (err) { goto failed; } @@ -8475,9 +8550,9 @@ static int lfsr_mdir_commit(lfs_t *lfs, lfsr_mdir_t *mdir, err = lfsr_btree_commit(lfs, &mtree_, lfsr_mid_bid(lfs, mdir->mid), LFSR_RATTRS( - LFSR_RATTR( + LFSR_RATTR_MPTR( LFSR_TAG_MDIR, 0, - mdir_[0].rbyd.blocks, 0))); + mdir_[0].rbyd.blocks))); if (err) { goto failed; } @@ -8530,14 +8605,12 @@ static int lfsr_mdir_commit(lfs_t *lfs, lfsr_mdir_t *mdir, // in our mroot err = lfsr_mdir_commit_(lfs, &mroot_, -2, 0, NULL, -1, LFSR_RATTRS( - LFSR_RATTR( + LFSR_RATTR_BTREE( LFSR_TAG_SUB | LFSR_TAG_MTREE, 0, - &mtree_, 0), + &mtree_), // were we committing to the mroot? include any -1 rattrs (mdir->mid == -1) - ? LFSR_RATTR( - LFSR_TAG_RATTRS, 0, - rattrs, rattr_count) + ? LFSR_RATTR_RATTRS(rattrs, rattr_count) : LFSR_RATTR_NOOP())); if (err) { LFS_ASSERT(err != LFS_ERR_RANGE); @@ -8581,9 +8654,9 @@ static int lfsr_mdir_commit(lfs_t *lfs, lfsr_mdir_t *mdir, // commit mrootchild err = lfsr_mdir_commit_(lfs, &mrootparent_, -2, -1, NULL, -1, LFSR_RATTRS( - LFSR_RATTR( + LFSR_RATTR_MPTR( LFSR_TAG_MROOT, 0, - mrootchild_.rbyd.blocks, 0))); + mrootchild_.rbyd.blocks))); if (err) { LFS_ASSERT(err != LFS_ERR_RANGE); LFS_ASSERT(err != LFS_ERR_NOENT); @@ -8629,9 +8702,9 @@ static int lfsr_mdir_commit(lfs_t *lfs, lfsr_mdir_t *mdir, LFSR_RATTR_BUF( LFSR_TAG_MAGIC, 0, "littlefs", 8), - LFSR_RATTR( + LFSR_RATTR_MPTR( LFSR_TAG_MROOT, 0, - mrootchild_.rbyd.blocks, 0))); + mrootchild_.rbyd.blocks))); if (err) { LFS_ASSERT(err != LFS_ERR_RANGE); LFS_ASSERT(err != LFS_ERR_NOENT); @@ -10141,7 +10214,7 @@ int lfsr_remove(lfs_t *lfs, const char *path) { LFSR_TAG_SUP | LFSR_TAG_STICKYNOTE, 0, did, path, lfsr_path_namelen(path)) : LFSR_RATTR( - LFSR_TAG_RM, -1, NULL, 0))); + LFSR_TAG_RM, -1))); if (err) { return err; } @@ -10307,7 +10380,7 @@ int lfsr_rename(lfs_t *lfs, const char *old_path, const char *new_path) { LFSR_RATTR_NAME( LFSR_TAG_SUP | old_tag, (!exists) ? +1 : 0, new_did, new_path, new_name_len), - LFSR_RATTR(LFSR_TAG_MOVE, 0, &old_mdir, 0))); + LFSR_RATTR_MOVE(&old_mdir))); if (err) { return err; } @@ -10801,8 +10874,7 @@ int lfsr_removeattr(lfs_t *lfs, const char *path, uint8_t type) { lfs_alloc_ckpoint(lfs); err = lfsr_mdir_commit(lfs, &mdir, LFSR_RATTRS( LFSR_RATTR( - LFSR_TAG_RM | LFSR_TAG_ATTR(type), 0, - NULL, 0))); + LFSR_TAG_RM | LFSR_TAG_ATTR(type), 0))); if (err) { return err; } @@ -11412,15 +11484,13 @@ static int lfsr_file_carve(lfs_t *lfs, lfsr_file_t *file, if (file->b.shrub.weight > 0) { bid = lfs_min(bid, file->b.shrub.weight-1); rattrs[rattr_count++] = LFSR_RATTR( - LFSR_TAG_GROW, +(pos - file->b.shrub.weight), - NULL, 0); + LFSR_TAG_GROW, +(pos - file->b.shrub.weight)); // new hole } else { bid = lfs_min(bid, file->b.shrub.weight); rattrs[rattr_count++] = LFSR_RATTR( - LFSR_TAG_DATA, +(pos - file->b.shrub.weight), - NULL, 0); + LFSR_TAG_DATA, +(pos - file->b.shrub.weight)); } } @@ -11472,10 +11542,10 @@ static int lfsr_file_carve(lfs_t *lfs, lfsr_file_t *file, -(weight_ - lfs->cfg->fragment_size), &LFSR_DATA_TRUNCATE(l.data, lfs->cfg->fragment_size)), - LFSR_RATTR( + LFSR_RATTR_BPTR( LFSR_TAG_BLOCK, +(weight_ - lfs->cfg->fragment_size), - &bptr_, LFSR_BPTR_DSIZE))); + &bptr_))); if (err) { return err; } @@ -11496,10 +11566,10 @@ static int lfsr_file_carve(lfs_t *lfs, lfsr_file_t *file, lfsr_data_size(bptr_.data) - lfs->cfg->fragment_size); err = lfsr_file_commit(lfs, file, bid, LFSR_RATTRS( - LFSR_RATTR( + LFSR_RATTR_BPTR( LFSR_TAG_GROW | LFSR_TAG_SUB | LFSR_TAG_BLOCK, -(weight_ - lfsr_data_size(bptr_.data)), - &bptr_, LFSR_BPTR_DSIZE), + &bptr_), LFSR_RATTR_DATA( LFSR_TAG_DATA, +(weight_ - lfsr_data_size(bptr_.data)), @@ -11521,7 +11591,7 @@ static int lfsr_file_carve(lfs_t *lfs, lfsr_file_t *file, // can we get away with a grow attribute? if (lfsr_data_size(bptr_.data) == lfsr_data_size(l.data)) { rattrs[rattr_count++] = LFSR_RATTR( - LFSR_TAG_GROW, -(bid+1 - pos), NULL, 0); + LFSR_TAG_GROW, -(bid+1 - pos)); // carve fragment? } else if (!lfsr_bptr_isbptr(&bptr_)) { @@ -11532,16 +11602,16 @@ static int lfsr_file_carve(lfs_t *lfs, lfsr_file_t *file, // carve bptr? } else { - rattrs[rattr_count++] = LFSR_RATTR( + rattrs[rattr_count++] = LFSR_RATTR_BPTR( LFSR_TAG_GROW | LFSR_TAG_SUB | LFSR_TAG_BLOCK, -(bid+1 - pos), - &l, LFSR_BPTR_DSIZE); + &l); } // completely overwriting this entry? } else { rattrs[rattr_count++] = LFSR_RATTR( - LFSR_TAG_RM, -weight_, NULL, 0); + LFSR_TAG_RM, -weight_); } // spans more than one entry? we can't do everything in one commit, @@ -11576,9 +11646,9 @@ static int lfsr_file_carve(lfs_t *lfs, lfsr_file_t *file, // carve bptr? } else { - r_rattr_ = LFSR_RATTR( + r_rattr_ = LFSR_RATTR_BPTR( LFSR_TAG_BLOCK, bid+1 - (pos+weight), - &r, LFSR_BPTR_DSIZE); + &r); } } @@ -11593,20 +11663,18 @@ static int lfsr_file_carve(lfs_t *lfs, lfsr_file_t *file, if (lfsr_rattr_dsize(rattr) == 0 && pos > 0) { bid = lfs_min(bid, file->b.shrub.weight-1); rattrs[rattr_count++] = LFSR_RATTR( - LFSR_TAG_GROW, +(weight + rattr.weight), - NULL, 0); + LFSR_TAG_GROW, +(weight + rattr.weight)); // need a new hole? } else if (lfsr_rattr_dsize(rattr) == 0) { bid = lfs_min(bid, file->b.shrub.weight); rattrs[rattr_count++] = LFSR_RATTR( - LFSR_TAG_DATA, +(weight + rattr.weight), - NULL, 0); + LFSR_TAG_DATA, +(weight + rattr.weight)); // append new fragment/bptr? } else { bid = lfs_min(bid, file->b.shrub.weight); - rattrs[rattr_count++] = LFSR_RATTR( + rattrs[rattr_count++] = LFSR_RATTR_( rattr.tag, +(weight + rattr.weight), rattr.u.datas, rattr.data_count); } @@ -11998,9 +12066,9 @@ static int lfsr_file_flush_(lfs_t *lfs, lfsr_file_t *file, // and write it into our tree err = lfsr_file_carve(lfs, file, block_start, block_end - block_start, - LFSR_RATTR( + LFSR_RATTR_BPTR( LFSR_TAG_BLOCK, 0, - &bptr, LFSR_BPTR_DSIZE)); + &bptr)); if (err) { return err; } @@ -12392,19 +12460,18 @@ int lfsr_file_sync(lfs_t *lfs, lfsr_file_t *file) { // no bshrub/btree? if (lfsr_bshrub_isbnull(&file->b)) { rattrs[rattr_count++] = LFSR_RATTR( - LFSR_TAG_RM | LFSR_TAG_SUB | LFSR_TAG_STRUCT, 0, - NULL, 0); + LFSR_TAG_RM | LFSR_TAG_SUB | LFSR_TAG_STRUCT, 0); // bshrub? } else if (lfsr_bshrub_isbshrub(&file->b)) { - rattrs[rattr_count++] = LFSR_RATTR( + rattrs[rattr_count++] = LFSR_RATTR_SHRUB( LFSR_TAG_SUB | LFSR_TAG_BSHRUB, 0, // note we use the staged trunk here - &file->b.shrub_, 0); + &file->b.shrub_); // btree? } else if (lfsr_bshrub_isbtree(&file->b)) { - rattrs[rattr_count++] = LFSR_RATTR( + rattrs[rattr_count++] = LFSR_RATTR_BTREE( LFSR_TAG_SUB | LFSR_TAG_BTREE, 0, - &file->b.shrub, 0); + &file->b.shrub); } else { LFS_UNREACHABLE(); } @@ -12449,8 +12516,7 @@ int lfsr_file_sync(lfs_t *lfs, lfsr_file_t *file) { } if (attrs) { // need to append custom attributes - rattrs[rattr_count++] = LFSR_RATTR( - LFSR_TAG_ATTRS, 0, + rattrs[rattr_count++] = LFSR_RATTR_ATTRS( file->cfg->attrs, file->cfg->attr_count); } @@ -12661,8 +12727,7 @@ int lfsr_file_truncate(lfs_t *lfs, lfsr_file_t *file, lfs_off_t size_) { err = lfsr_file_carve(lfs, file, lfs_min(size, size_), size - lfs_min(size, size_), LFSR_RATTR( - LFSR_TAG_DATA, +size_ - size, - NULL, 0)); + LFSR_TAG_DATA, +size_ - size)); if (err) { goto failed; } @@ -12718,8 +12783,7 @@ int lfsr_file_fruncate(lfs_t *lfs, lfsr_file_t *file, lfs_off_t size_) { err = lfsr_file_carve(lfs, file, 0, lfs_smax(size - size_, 0), LFSR_RATTR( - LFSR_TAG_DATA, +size_ - size, - NULL, 0)); + LFSR_TAG_DATA, +size_ - size)); if (err) { goto failed; } @@ -13823,11 +13887,11 @@ static int lfsr_formatinited(lfs_t *lfs) { LFSR_RATTR_LE32( LFSR_TAG_WCOMPAT, 0, LFSR_WCOMPAT_COMPAT), - LFSR_RATTR( + LFSR_RATTR_GEOMETRY( LFSR_TAG_GEOMETRY, 0, (&(lfsr_geometry_t){ lfs->cfg->block_size, - lfs->cfg->block_count}), 0), + lfs->cfg->block_count})), LFSR_RATTR_LLEB128( LFSR_TAG_NAMELIMIT, 0, lfs->name_limit), @@ -14035,7 +14099,7 @@ static int lfsr_fs_fixgrm(lfs_t *lfs) { lfs_alloc_ckpoint(lfs); // remove the rid while atomically updating our grm err = lfsr_mdir_commit(lfs, &mdir, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))); + LFSR_RATTR(LFSR_TAG_RM, -1))); if (err) { // revert grm manually lfs->grm = grm_p; @@ -14078,7 +14142,7 @@ static int lfsr_mdir_mkconsistent(lfs_t *lfs, lfsr_mdir_t *mdir) { lfs_alloc_ckpoint(lfs); err = lfsr_mdir_commit(lfs, mdir, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))); + LFSR_RATTR(LFSR_TAG_RM, -1))); if (err) { goto failed; } @@ -14354,11 +14418,11 @@ int lfsr_fs_grow(lfs_t *lfs, lfs_size_t block_count_) { // update our on-disk config lfs_alloc_ckpoint(lfs); int err = lfsr_mdir_commit(lfs, &lfs->mroot, LFSR_RATTRS( - LFSR_RATTR( + LFSR_RATTR_GEOMETRY( LFSR_TAG_GEOMETRY, 0, (&(lfsr_geometry_t){ lfs->cfg->block_size, - block_count_}), 0))); + block_count_})))); if (err) { goto failed; } diff --git a/tests/test_btree.toml b/tests/test_btree.toml index 2c57625f..b340f865 100644 --- a/tests/test_btree.toml +++ b/tests/test_btree.toml @@ -1145,8 +1145,7 @@ code = ''' LFSR_TAG_SUB | LFSR_TAG_DATA, 0, &(uint8_t){'A'+(i % 26)}, 1), LFSR_RATTR( - LFSR_TAG_GROW, +weight-sim_weights[bid], - NULL, 0))) => 0; + LFSR_TAG_GROW, +weight-sim_weights[bid]))) => 0; // update sim sim[bid] = 'A'+(i % 26); @@ -1255,7 +1254,7 @@ code = ''' LFSR_RATTR_BUF(LFSR_TAG_DATA, +1, "a", 1))) => 0; // pop! lfsr_btree_commit(&lfs, &btree, 0, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; printf("btree: w%d 0x%x.%x\n", btree.weight, btree.blocks[0], @@ -1314,7 +1313,7 @@ code = ''' LFSR_RATTR_BUF(LFSR_TAG_DATA, +1, "b", 1))) => 0; // pop! lfsr_btree_commit(&lfs, &btree, 1, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; printf("btree: w%d 0x%x.%x\n", btree.weight, btree.blocks[0], @@ -1387,7 +1386,7 @@ code = ''' LFSR_RATTR_BUF(LFSR_TAG_DATA, +1, "b", 1))) => 0; // pop! lfsr_btree_commit(&lfs, &btree, 0, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; printf("btree: w%d 0x%x.%x\n", btree.weight, btree.blocks[0], @@ -1462,7 +1461,7 @@ code = ''' LFSR_RATTR_BUF(LFSR_TAG_DATA, +1, "c", 1))) => 0; // pop! lfsr_btree_commit(&lfs, &btree, 2, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; printf("btree: w%d 0x%x.%x\n", btree.weight, btree.blocks[0], @@ -1555,7 +1554,7 @@ code = ''' // drain the tree for (lfs_size_t i = 0; i < N-REMAINING; i++) { lfsr_btree_commit(&lfs, &btree, N-1-i, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; } printf("btree: w%d 0x%x.%x\n", @@ -1635,7 +1634,7 @@ code = ''' // drain the tree for (lfs_size_t i = 0; i < N-REMAINING; i++) { lfsr_btree_commit(&lfs, &btree, 0, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; } printf("btree: w%d 0x%x.%x\n", btree.weight, @@ -1733,7 +1732,7 @@ code = ''' // remove from btree lfsr_btree_commit(&lfs, &btree, bid, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; // remove from sim memmove(&sim[bid], &sim[bid+1], sim_size-(bid+1)); @@ -1807,7 +1806,7 @@ code = ''' // drain the tree for (lfs_size_t i = 0; i < N-REMAINING; i++) { lfsr_btree_commit(&lfs, &btree, (N-1-i)*W+W-1, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -W, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -W))) => 0; } printf("btree: w%d 0x%x.%x\n", btree.weight, @@ -1950,8 +1949,7 @@ code = ''' lfsr_btree_commit(&lfs, &btree, weighted_bid+sim_weights[bid]-1, LFSR_RATTRS( LFSR_RATTR( - LFSR_TAG_RM, -sim_weights[bid], - NULL, 0))) => 0; + LFSR_TAG_RM, -sim_weights[bid]))) => 0; // remove from sim memmove(&sim[bid], &sim[bid+1], sim_size-(bid+1)); @@ -2300,8 +2298,7 @@ code = ''' lfsr_btree_commit(&lfs, &btree, weighted_bid+sim_weights[bid]-1, LFSR_RATTRS( LFSR_RATTR( - LFSR_TAG_GROW, +weight1-sim_weights[bid], - NULL, 0), + LFSR_TAG_GROW, +weight1-sim_weights[bid]), LFSR_RATTR_BUF( LFSR_TAG_DATA, 0, &(uint8_t){'a'+(i % 26)}, 1), @@ -2469,7 +2466,7 @@ code = ''' // now remove one entry, since this brings the rbyd down to zero, // this should force one of the blocks to drop lfsr_btree_commit(&lfs, &btree, SIBLING, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; printf("btree: w%d 0x%x.%x\n", btree.weight, @@ -2540,7 +2537,7 @@ code = ''' // do this while forcing a compaction btree.eoff = -1; lfsr_btree_commit(&lfs, &btree, SIBLING, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; printf("btree: w%d 0x%x.%x\n", btree.weight, @@ -2604,7 +2601,7 @@ code = ''' // btree.eoff = -1; lfsr_btree_commit(&lfs, &btree, SIBLING, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; printf("btree: w%d 0x%x.%x\n", btree.weight, @@ -2683,7 +2680,7 @@ code = ''' // down to zero while also triggering a merge btree.eoff = -1; lfsr_btree_commit(&lfs, &btree, SIBLING, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; printf("btree: w%d 0x%x.%x\n", btree.weight, @@ -2769,7 +2766,7 @@ code = ''' } else { // pop from btree lfsr_btree_commit(&lfs, &btree, bid, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; // pop from sim memmove(&sim[bid], &sim[bid+1], sim_size-(bid+1)); @@ -2884,8 +2881,7 @@ code = ''' LFSR_TAG_SUB | LFSR_TAG_DATA, 0, &(uint8_t){'a'+(i % 26)}, 1), LFSR_RATTR( - LFSR_TAG_GROW, +weight-sim_weights[bid], - NULL, 0))) => 0; + LFSR_TAG_GROW, +weight-sim_weights[bid]))) => 0; // update sim sim[bid] = 'a'+(i % 26); @@ -2896,8 +2892,7 @@ code = ''' lfsr_btree_commit(&lfs, &btree, weighted_bid+sim_weights[bid]-1, LFSR_RATTRS( LFSR_RATTR( - LFSR_TAG_RM, -sim_weights[bid], - NULL, 0))) => 0; + LFSR_TAG_RM, -sim_weights[bid]))) => 0; // remove from sim memmove(&sim[bid], &sim[bid+1], sim_size-(bid+1)); @@ -3635,8 +3630,7 @@ code = ''' lfsr_btree_commit(&lfs, &btree, weighted_bid+sim_weights[bid]-1, LFSR_RATTRS( LFSR_RATTR( - LFSR_TAG_GROW, +weight1-sim_weights[bid], - NULL, 0), + LFSR_TAG_GROW, +weight1-sim_weights[bid]), LFSR_RATTR_BUF( LFSR_TAG_DATA, 0, &(uint8_t){'0'+(i % 10)}, 1), @@ -3831,7 +3825,7 @@ code = ''' } else { // pop from btree lfsr_btree_commit(&lfs, &btree, bid, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; // pop from sim memmove(&sim[bid], &sim[bid+1], sim_size-(bid+1)); @@ -3998,8 +3992,7 @@ code = ''' LFSR_TAG_SUB | LFSR_TAG_DATA, 0, &(uint8_t){'0'+(i % 10)}, 1), LFSR_RATTR( - LFSR_TAG_GROW, +weight-sim_weights[bid], - NULL, 0))) => 0; + LFSR_TAG_GROW, +weight-sim_weights[bid]))) => 0; // update sim sim[bid] = '0'+(i % 10); @@ -4010,8 +4003,7 @@ code = ''' lfsr_btree_commit(&lfs, &btree, weighted_bid+sim_weights[bid]-1, LFSR_RATTRS( LFSR_RATTR( - LFSR_TAG_RM, -sim_weights[bid], - NULL, 0))) => 0; + LFSR_TAG_RM, -sim_weights[bid]))) => 0; // pop from sim memmove(&sim[bid], &sim[bid+1], sim_size-(bid+1)); diff --git a/tests/test_files.toml b/tests/test_files.toml index a97ee856..5159bb31 100644 --- a/tests/test_files.toml +++ b/tests/test_files.toml @@ -979,8 +979,7 @@ code = ''' // delete any bshrub/btree lfsr_mdir_commit(&lfs, &file.b.o.mdir, LFSR_RATTRS( LFSR_RATTR( - LFSR_TAG_RM | LFSR_TAG_SUB | LFSR_TAG_STRUCT, 0, - NULL, 0))) => 0; + LFSR_TAG_RM | LFSR_TAG_SUB | LFSR_TAG_STRUCT, 0))) => 0; lfsr_file_close(&lfs, &file) => 0; @@ -1095,27 +1094,25 @@ code = ''' // create an empty bshrub lfsr_mdir_commit(&lfs, &file.b.o.mdir, LFSR_RATTRS( - LFSR_RATTR( - LFSR_TAG_SHRUBCOMMIT, 0, + LFSR_RATTR_SHRUBCOMMIT( (&(lfsr_shrubcommit_t){ .bshrub=&file.b, .rid=0, .rattrs=((lfsr_rattr_t[]){ LFSR_RATTR_BUF(LFSR_TAG_DATA, +1, "?", 1)}), - .rattr_count=1}), 0))) => 0; + .rattr_count=1})))) => 0; lfsr_mdir_commit(&lfs, &file.b.o.mdir, LFSR_RATTRS( - LFSR_RATTR( - LFSR_TAG_SHRUBCOMMIT, 0, + LFSR_RATTR_SHRUBCOMMIT( (&(lfsr_shrubcommit_t){ .bshrub=&file.b, .rid=0, .rattrs=((lfsr_rattr_t[]){ - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0)}), - .rattr_count=1}), 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1)}), + .rattr_count=1})))) => 0; lfsr_mdir_commit(&lfs, &file.b.o.mdir, LFSR_RATTRS( - LFSR_RATTR( + LFSR_RATTR_SHRUB( LFSR_TAG_SUB | LFSR_TAG_BSHRUB, 0, - &file.b.shrub_, LFSR_SHRUB_DSIZE))) => 0; + &file.b.shrub_))) => 0; lfsr_file_close(&lfs, &file) => 0; @@ -1234,11 +1231,11 @@ code = ''' lfsr_rbyd_commit(&lfs, &file.b.shrub, 0, LFSR_RATTRS( LFSR_RATTR_BUF(LFSR_TAG_DATA, +1, "?", 1))) => 0; lfsr_rbyd_commit(&lfs, &file.b.shrub, 0, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; lfsr_mdir_commit(&lfs, &file.b.o.mdir, LFSR_RATTRS( - LFSR_RATTR( + LFSR_RATTR_BTREE( LFSR_TAG_SUB | LFSR_TAG_BTREE, 0, - &file.b.shrub, LFSR_BTREE_DSIZE))) => 0; + &file.b.shrub))) => 0; lfsr_file_close(&lfs, &file) => 0; diff --git a/tests/test_mount.toml b/tests/test_mount.toml index 4b8a7884..ba9aada6 100644 --- a/tests/test_mount.toml +++ b/tests/test_mount.toml @@ -546,8 +546,7 @@ code = ''' lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0; lfsr_mdir_commit(&lfs, &lfs.mroot, LFSR_RATTRS( LFSR_RATTR( - LFSR_TAG_RM | LFSR_TAG_MAGIC, 0, - NULL, 0))) => 0; + LFSR_TAG_RM | LFSR_TAG_MAGIC, 0))) => 0; lfsr_unmount(&lfs) => 0; // mount should now fail @@ -981,11 +980,11 @@ code = ''' // is not a user API lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0; lfsr_mdir_commit(&lfs, &lfs.mroot, LFSR_RATTRS( - LFSR_RATTR( + LFSR_RATTR_GEOMETRY( LFSR_TAG_GEOMETRY, 0, (&(lfsr_geometry_t){ INC_BLOCK_SIZE, - BLOCK_COUNT}), LFSR_GEOMETRY_DSIZE))) => 0; + BLOCK_COUNT})))) => 0; lfsr_unmount(&lfs) => 0; // mount should now fail @@ -1008,11 +1007,11 @@ code = ''' // is not a user API lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0; lfsr_mdir_commit(&lfs, &lfs.mroot, LFSR_RATTRS( - LFSR_RATTR( + LFSR_RATTR_GEOMETRY( LFSR_TAG_GEOMETRY, 0, (&(lfsr_geometry_t){ BLOCK_SIZE, - INC_BLOCK_COUNT}), LFSR_GEOMETRY_DSIZE))) => 0; + INC_BLOCK_COUNT})))) => 0; lfsr_unmount(&lfs) => 0; // mount should now fail diff --git a/tests/test_mtree.toml b/tests/test_mtree.toml index 37c7b09c..b7670a67 100644 --- a/tests/test_mtree.toml +++ b/tests/test_mtree.toml @@ -687,7 +687,7 @@ code = ''' lfsr_mtree_namelookup(&lfs, 0, (const char*)buffer+1, SIZE-1, &mdir, NULL, NULL) => 0; lfsr_mdir_commit(&lfs, &mdir, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; assert(mdir.rbyd.weight == 0); // assert mdir was dropped @@ -779,7 +779,7 @@ code = ''' // force mdir to compact while we're removing mdir.rbyd.eoff = -1; lfsr_mdir_commit(&lfs, &mdir, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; assert(mdir.rbyd.weight == 0); // assert mdir was dropped @@ -862,7 +862,7 @@ code = ''' lfs.mroot.rbyd.eoff = -1; mdir.rbyd.eoff = -1; lfsr_mdir_commit(&lfs, &mdir, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; assert(mdir.rbyd.weight == 2); // assert split/drop worked out @@ -956,7 +956,7 @@ code = ''' // force mdir to compact while we're removing mdir.rbyd.eoff = -1; lfsr_mdir_commit(&lfs, &mdir, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; assert(mdir.rbyd.weight == 1); // assert split/drop worked out @@ -1070,7 +1070,7 @@ code = ''' // force mdir to compact while we're removing mdir.rbyd.eoff = -1; lfsr_mdir_commit(&lfs, &mdir, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; assert(mdir.rbyd.weight == 1); // assert split/drop worked out @@ -1198,7 +1198,7 @@ code = ''' mdir.rbyd.eoff = -1; } lfsr_mdir_commit(&lfs, &mdir, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; } } @@ -2276,7 +2276,7 @@ code = ''' // force mdir to compact while we're removing mdir.rbyd.eoff = -1; lfsr_mdir_commit(&lfs, &mdir, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; assert(mdir.rbyd.weight == 0); // assert mroot relocated assert(lfsr_mdir_cmp(&old_mroot, &lfs.mroot) != 0); @@ -2609,7 +2609,7 @@ code = ''' mdir.rbyd.eoff = -1; } lfsr_mdir_commit(&lfs, &mdir, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; } } @@ -2755,7 +2755,7 @@ code = ''' lfsr_mtree_namelookup(&lfs, 0, "a", 1, &mdir, NULL, NULL) => 0; lfsr_mdir_commit(&lfs, &mdir, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; assert(mdir.rbyd.weight == 2); // assert neighbor was removed @@ -2805,7 +2805,7 @@ code = ''' lfsr_mtree_namelookup(&lfs, 0, "b", 1, &mdir, NULL, NULL) => 0; lfsr_mdir_commit(&lfs, &mdir, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; assert(mdir.rbyd.weight == 2); // assert neighbor was removed @@ -3427,7 +3427,7 @@ code = ''' // now remove the middle entry, forcing a drop lfsr_mdir_commit(&lfs, &mdir, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; assert(mdir.rbyd.weight == 0); // assert mdir was dropped correctly @@ -4458,9 +4458,9 @@ code = ''' lfs_alloc_ckpoint(&lfs); lfsr_mdir_commit(&lfs, &lfs.mroot, LFSR_RATTRS( - LFSR_RATTR( + LFSR_RATTR_MPTR( LFSR_TAG_MROOT, 0, - LFSR_MPTR_MROOTANCHOR(), LFSR_MPTR_DSIZE))) => 0; + LFSR_MPTR_MROOTANCHOR()))) => 0; // technically, cycle detection only needs to work when we're validating lfsr_traversal_t t; diff --git a/tests/test_rbyd.toml b/tests/test_rbyd.toml index 6f23e701..1c4ccb83 100644 --- a/tests/test_rbyd.toml +++ b/tests/test_rbyd.toml @@ -2985,8 +2985,7 @@ code = ''' "\xaa\xaa\xaa\xaa", 4))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, -1, LFSR_RATTRS( LFSR_RATTR( - LFSR_TAG_RM | LFSR_TAG_ATTR(1), 0, - NULL, 0))) => 0; + LFSR_TAG_RM | LFSR_TAG_ATTR(1), 0))) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_ATTR(1), &rid_, &tag_, NULL, &data_) => LFS_ERR_NOENT; @@ -3011,8 +3010,7 @@ code = ''' "\xbb\xbb\xbb\xbb", 4))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, -1, LFSR_RATTRS( LFSR_RATTR( - LFSR_TAG_RM | LFSR_TAG_ATTR(1), 0, - NULL, 0))) => 0; + LFSR_TAG_RM | LFSR_TAG_ATTR(1), 0))) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_ATTR(1), &rid_, &tag_, NULL, &data_) => 0; @@ -3053,8 +3051,7 @@ code = ''' "\xbb\xbb\xbb\xbb", 4))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, -1, LFSR_RATTRS( LFSR_RATTR( - LFSR_TAG_RM | LFSR_TAG_ATTR(2), 0, - NULL, 0))) => 0; + LFSR_TAG_RM | LFSR_TAG_ATTR(2), 0))) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_ATTR(1), &rid_, &tag_, NULL, &data_) => 0; @@ -3158,8 +3155,7 @@ code = ''' lfsr_rbyd_commit(&lfs, &rbyd, -1, LFSR_RATTRS( LFSR_RATTR( - LFSR_TAG_RM | LFSR_TAG_ATTR(j+1), 0, - NULL, 0))) => 0; + LFSR_TAG_RM | LFSR_TAG_ATTR(j+1), 0))) => 0; lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], CFG->block_size) => 0; for (unsigned k = 0; k < N; k++) { @@ -3308,8 +3304,7 @@ code = ''' lfsr_rbyd_commit(&lfs, &rbyd, -1, LFSR_RATTRS( LFSR_RATTR( - LFSR_TAG_RM | LFSR_TAG_ATTR(j+1), 0, - NULL, 0))) => 0; + LFSR_TAG_RM | LFSR_TAG_ATTR(j+1), 0))) => 0; // try traversing over the tags lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], CFG->block_size) => 0; @@ -3393,8 +3388,7 @@ code = ''' // try to remove tags that aren't there, this should do nothing lfsr_rbyd_commit(&lfs, &rbyd, -1, LFSR_RATTRS( LFSR_RATTR( - LFSR_TAG_RM | LFSR_TAG_ATTR(1), 0, - NULL, 0))) => 0; + LFSR_TAG_RM | LFSR_TAG_ATTR(1), 0))) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_ATTR(1), &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_ATTR(2)); @@ -3420,8 +3414,7 @@ code = ''' lfsr_rbyd_commit(&lfs, &rbyd, -1, LFSR_RATTRS( LFSR_RATTR( - LFSR_TAG_RM | LFSR_TAG_ATTR(3), 0, - NULL, 0))) => 0; + LFSR_TAG_RM | LFSR_TAG_ATTR(3), 0))) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_ATTR(1), &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_ATTR(2)); @@ -3447,8 +3440,7 @@ code = ''' lfsr_rbyd_commit(&lfs, &rbyd, -1, LFSR_RATTRS( LFSR_RATTR( - LFSR_TAG_RM | LFSR_TAG_ATTR(5), 0, - NULL, 0))) => 0; + LFSR_TAG_RM | LFSR_TAG_ATTR(5), 0))) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_ATTR(1), &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_ATTR(2)); @@ -3538,14 +3530,11 @@ code = ''' // remove several attributes lfsr_rbyd_commit(&lfs, &rbyd, -1, LFSR_RATTRS( LFSR_RATTR( - LFSR_TAG_RM | LFSR_TAG_ATTR(1), 0, - NULL, 0), + LFSR_TAG_RM | LFSR_TAG_ATTR(1), 0), LFSR_RATTR( - LFSR_TAG_RM | LFSR_TAG_ATTR(3), 0, - NULL, 0), + LFSR_TAG_RM | LFSR_TAG_ATTR(3), 0), LFSR_RATTR( - LFSR_TAG_RM | LFSR_TAG_ATTR(5), 0, - NULL, 0))) => 0; + LFSR_TAG_RM | LFSR_TAG_ATTR(5), 0))) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_ATTR(1), &rid_, &tag_, NULL, &data_) => 0; @@ -3573,8 +3562,7 @@ code = ''' // try to remove tags that aren't there, this should do nothing lfsr_rbyd_commit(&lfs, &rbyd, -1, LFSR_RATTRS( LFSR_RATTR( - LFSR_TAG_RM | LFSR_TAG_ATTR(1), 0, - NULL, 0))) => 0; + LFSR_TAG_RM | LFSR_TAG_ATTR(1), 0))) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_ATTR(1), &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_ATTR(2)); @@ -3600,8 +3588,7 @@ code = ''' lfsr_rbyd_commit(&lfs, &rbyd, -1, LFSR_RATTRS( LFSR_RATTR( - LFSR_TAG_RM | LFSR_TAG_ATTR(3), 0, - NULL, 0))) => 0; + LFSR_TAG_RM | LFSR_TAG_ATTR(3), 0))) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_ATTR(1), &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_ATTR(2)); @@ -3627,8 +3614,7 @@ code = ''' lfsr_rbyd_commit(&lfs, &rbyd, -1, LFSR_RATTRS( LFSR_RATTR( - LFSR_TAG_RM | LFSR_TAG_ATTR(5), 0, - NULL, 0))) => 0; + LFSR_TAG_RM | LFSR_TAG_ATTR(5), 0))) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_ATTR(1), &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_ATTR(2)); @@ -3656,8 +3642,7 @@ code = ''' // these removes still commit to the rbyd) lfsr_rbyd_commit(&lfs, &rbyd, -1, LFSR_RATTRS( LFSR_RATTR( - LFSR_TAG_RM | LFSR_TAG_ATTR(1), 0, - NULL, 0))) => 0; + LFSR_TAG_RM | LFSR_TAG_ATTR(1), 0))) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_ATTR(1), &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_ATTR(2)); @@ -3683,8 +3668,7 @@ code = ''' lfsr_rbyd_commit(&lfs, &rbyd, -1, LFSR_RATTRS( LFSR_RATTR( - LFSR_TAG_RM | LFSR_TAG_ATTR(3), 0, - NULL, 0))) => 0; + LFSR_TAG_RM | LFSR_TAG_ATTR(3), 0))) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_ATTR(1), &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_ATTR(2)); @@ -3710,8 +3694,7 @@ code = ''' lfsr_rbyd_commit(&lfs, &rbyd, -1, LFSR_RATTRS( LFSR_RATTR( - LFSR_TAG_RM | LFSR_TAG_ATTR(5), 0, - NULL, 0))) => 0; + LFSR_TAG_RM | LFSR_TAG_ATTR(5), 0))) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_ATTR(1), &rid_, &tag_, NULL, &data_) => 0; assert(tag_ == LFSR_TAG_ATTR(2)); @@ -3788,8 +3771,7 @@ code = ''' "\xaa\xaa\xaa\xaa", 4))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, -1, LFSR_RATTRS( LFSR_RATTR( - LFSR_TAG_RM | LFSR_TAG_ATTR(1), 0, - NULL, 0))) => 0; + LFSR_TAG_RM | LFSR_TAG_ATTR(1), 0))) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_ATTR(1), &rid_, &tag_, NULL, &data_) => LFS_ERR_NOENT; @@ -3814,11 +3796,9 @@ code = ''' "\xbb\xbb\xbb\xbb", 4))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, -1, LFSR_RATTRS( LFSR_RATTR( - LFSR_TAG_RM | LFSR_TAG_ATTR(1), 0, - NULL, 0), + LFSR_TAG_RM | LFSR_TAG_ATTR(1), 0), LFSR_RATTR( - LFSR_TAG_RM | LFSR_TAG_ATTR(2), 0, - NULL, 0))) => 0; + LFSR_TAG_RM | LFSR_TAG_ATTR(2), 0))) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_ATTR(1), &rid_, &tag_, NULL, &data_) => LFS_ERR_NOENT; @@ -3843,11 +3823,9 @@ code = ''' "\xbb\xbb\xbb\xbb", 4))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, -1, LFSR_RATTRS( LFSR_RATTR( - LFSR_TAG_RM | LFSR_TAG_ATTR(2), 0, - NULL, 0), + LFSR_TAG_RM | LFSR_TAG_ATTR(2), 0), LFSR_RATTR( - LFSR_TAG_RM | LFSR_TAG_ATTR(1), 0, - NULL, 0))) => 0; + LFSR_TAG_RM | LFSR_TAG_ATTR(1), 0))) => 0; lfsr_rbyd_lookupnext(&lfs, &rbyd, -1, LFSR_TAG_ATTR(1), &rid_, &tag_, NULL, &data_) => LFS_ERR_NOENT; @@ -3940,8 +3918,7 @@ code = ''' for (unsigned j = 0; j < N; j++) { lfsr_rbyd_commit(&lfs, &rbyd, -1, LFSR_RATTRS( LFSR_RATTR( - LFSR_TAG_RM | LFSR_TAG_ATTR(perm[j]+1), 0, - NULL, 0))) => 0; + LFSR_TAG_RM | LFSR_TAG_ATTR(perm[j]+1), 0))) => 0; } // check that all tags are now removed @@ -4061,8 +4038,7 @@ code = ''' // update our rbyd lfsr_rbyd_commit(&lfs, &rbyd, -1, LFSR_RATTRS( LFSR_RATTR( - LFSR_TAG_RM | LFSR_TAG_ATTR(rattr), 0, - NULL, 0))) => 0; + LFSR_TAG_RM | LFSR_TAG_ATTR(rattr), 0))) => 0; } } @@ -6239,8 +6215,7 @@ code = ''' lfsr_rbyd_commit(&lfs, &rbyd, j/M, LFSR_RATTRS( LFSR_RATTR( - LFSR_TAG_RM | LFSR_TAG_ATTR((j%M)+1), 0, - NULL, 0))) => 0; + LFSR_TAG_RM | LFSR_TAG_ATTR((j%M)+1), 0))) => 0; lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], CFG->block_size) => 0; for (unsigned k = 0; k < N; k++) { @@ -6436,8 +6411,7 @@ code = ''' for (unsigned j = 0; j < N*M; j++) { lfsr_rbyd_commit(&lfs, &rbyd, perm[j]/M, LFSR_RATTRS( LFSR_RATTR( - LFSR_TAG_RM | LFSR_TAG_ATTR(perm[j]%M+1), 0, - NULL, 0))) => 0; + LFSR_TAG_RM | LFSR_TAG_ATTR(perm[j]%M+1), 0))) => 0; } // check that all tags have been removed @@ -6917,7 +6891,7 @@ code = ''' LFSR_TAG_DATA, +1, "\xbb\xbb\xbb\xbb", 4))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, 1, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; assert(rbyd.weight == 1); lfsr_rbyd_lookup(&lfs, &rbyd, 0, LFSR_TAG_DATA, &data) => 0; @@ -6945,7 +6919,7 @@ code = ''' LFSR_TAG_DATA, +1, "\xbb\xbb\xbb\xbb", 4))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, 0, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; assert(rbyd.weight == 1); lfsr_rbyd_lookup(&lfs, &rbyd, 0, LFSR_TAG_DATA, &data) => 0; @@ -6976,7 +6950,7 @@ code = ''' LFSR_TAG_DATA, +1, "\xcc\xcc\xcc\xcc", 4))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, 2, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; assert(rbyd.weight == 2); lfsr_rbyd_lookup(&lfs, &rbyd, 0, LFSR_TAG_DATA, &data) => 0; @@ -7011,7 +6985,7 @@ code = ''' LFSR_TAG_DATA, +1, "\xcc\xcc\xcc\xcc", 4))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, 0, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; assert(rbyd.weight == 2); lfsr_rbyd_lookup(&lfs, &rbyd, 0, LFSR_TAG_DATA, &data) => 0; @@ -7046,7 +7020,7 @@ code = ''' LFSR_TAG_DATA, +1, "\xcc\xcc\xcc\xcc", 4))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, 1, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; assert(rbyd.weight == 2); lfsr_rbyd_lookup(&lfs, &rbyd, 0, LFSR_TAG_DATA, &data) => 0; @@ -7102,7 +7076,7 @@ code = ''' LFSR_TAG_ATTR(1), 0, "\xbb\xbb", 2))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, 1, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; assert(rbyd.weight == 1); lfsr_rbyd_lookup(&lfs, &rbyd, 0, LFSR_TAG_DATA, &data) => 0; @@ -7146,7 +7120,7 @@ code = ''' LFSR_TAG_ATTR(1), 0, "\xbb\xbb", 2))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, 0, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; assert(rbyd.weight == 1); lfsr_rbyd_lookup(&lfs, &rbyd, 0, LFSR_TAG_DATA, &data) => 0; @@ -7196,7 +7170,7 @@ code = ''' LFSR_TAG_ATTR(1), 0, "\xcc\xcc", 2))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, 2, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; assert(rbyd.weight == 2); lfsr_rbyd_lookup(&lfs, &rbyd, 0, LFSR_TAG_DATA, &data) => 0; @@ -7258,7 +7232,7 @@ code = ''' LFSR_TAG_ATTR(1), 0, "\xcc\xcc", 2))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, 0, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; assert(rbyd.weight == 2); lfsr_rbyd_lookup(&lfs, &rbyd, 0, LFSR_TAG_DATA, &data) => 0; @@ -7320,7 +7294,7 @@ code = ''' LFSR_TAG_ATTR(1), 0, "\xcc\xcc", 2))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, 1, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; assert(rbyd.weight == 2); lfsr_rbyd_lookup(&lfs, &rbyd, 0, LFSR_TAG_DATA, &data) => 0; @@ -7451,7 +7425,7 @@ code = ''' "\xee\xee", 2))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, 1, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; assert(rbyd.weight == 2); lfsr_rbyd_lookup(&lfs, &rbyd, 0, LFSR_TAG_DATA, &data) => 0; @@ -7743,7 +7717,7 @@ code = ''' "\xee\xee\xee\xee", 4))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, 1, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; assert(rbyd.weight == 2); lfsr_rbyd_lookup(&lfs, &rbyd, 0, LFSR_TAG_DATA, &data) => 0; @@ -8039,7 +8013,7 @@ code = ''' "\xee\xee", 2))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, 1, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; assert(rbyd.weight == 2); lfsr_rbyd_lookup(&lfs, &rbyd, 0, LFSR_TAG_DATA, &data) => 0; @@ -8398,7 +8372,7 @@ code = ''' "\xee\xee\xee\xee", 4))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, 1, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; assert(rbyd.weight == 2); lfsr_rbyd_lookup(&lfs, &rbyd, 0, LFSR_TAG_DATA, &data) => 0; @@ -8745,7 +8719,7 @@ code = ''' "\xaa\xaa", 2))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, 1, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; assert(rbyd.weight == 2); lfsr_rbyd_lookup(&lfs, &rbyd, 0, LFSR_TAG_DATA, &data) => 0; @@ -9093,7 +9067,7 @@ code = ''' "\xcc\xcc", 2))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, 1, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; assert(rbyd.weight == 2); lfsr_rbyd_lookup(&lfs, &rbyd, 0, LFSR_TAG_DATA, &data) => 0; @@ -9417,7 +9391,7 @@ code = ''' "\xcc\xcc\xcc\xcc", 4))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, 1, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; assert(rbyd.weight == 2); lfsr_rbyd_lookup(&lfs, &rbyd, 0, LFSR_TAG_DATA, &data) => 0; @@ -9784,7 +9758,7 @@ code = ''' "\xaa\xaa", 2))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, 1, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; assert(rbyd.weight == 2); lfsr_rbyd_lookup(&lfs, &rbyd, 0, LFSR_TAG_DATA, &data) => 0; @@ -10233,7 +10207,7 @@ code = ''' "\xee\xee", 2))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, 1, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; assert(rbyd.weight == 2); lfsr_rbyd_lookup(&lfs, &rbyd, 0, LFSR_TAG_DATA, &data) => 0; @@ -10634,7 +10608,7 @@ code = ''' NULL, false) => 0; lfsr_rbyd_commit(&lfs, &rbyd, j, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; assert(rbyd.weight == N-1); lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], CFG->block_size) => 0; @@ -10803,7 +10777,7 @@ code = ''' NULL, false) => 0; lfsr_rbyd_commit(&lfs, &rbyd, j, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; assert(rbyd.weight == N-1); lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], CFG->block_size) => 0; @@ -10996,7 +10970,7 @@ code = ''' NULL, false) => 0; lfsr_rbyd_commit(&lfs, &rbyd, j, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; assert(rbyd.weight == N-1); // try traversing over the tags @@ -11133,7 +11107,7 @@ code = ''' NULL, false) => 0; lfsr_rbyd_commit(&lfs, &rbyd, j, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; assert(rbyd.weight == N-1); // try traversing over the tags @@ -11209,7 +11183,7 @@ code = ''' LFSR_TAG_DATA, +1, "\xaa\xaa\xaa\xaa", 4))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, 0, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; assert(rbyd.weight == 0); lfsr_rbyd_lookup(&lfs, &rbyd, 0, LFSR_TAG_DATA, @@ -11231,8 +11205,8 @@ code = ''' LFSR_TAG_DATA, +1, "\xbb\xbb\xbb\xbb", 4))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, 1, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0), - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1), + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; assert(rbyd.weight == 0); lfsr_rbyd_lookup(&lfs, &rbyd, 0, LFSR_TAG_DATA, @@ -11254,9 +11228,9 @@ code = ''' LFSR_TAG_DATA, +1, "\xbb\xbb\xbb\xbb", 4))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, 0, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, 0, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; assert(rbyd.weight == 0); lfsr_rbyd_lookup(&lfs, &rbyd, 0, LFSR_TAG_DATA, @@ -11281,9 +11255,9 @@ code = ''' LFSR_TAG_DATA, +1, "\xcc\xcc\xcc\xcc", 4))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, 2, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0), - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0), - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1), + LFSR_RATTR(LFSR_TAG_RM, -1), + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; assert(rbyd.weight == 0); lfsr_rbyd_lookup(&lfs, &rbyd, 0, LFSR_TAG_DATA, @@ -11308,11 +11282,11 @@ code = ''' LFSR_TAG_DATA, +1, "\xcc\xcc\xcc\xcc", 4))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, 0, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, 0, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, 0, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; assert(rbyd.weight == 0); lfsr_rbyd_lookup(&lfs, &rbyd, 0, LFSR_TAG_DATA, @@ -11352,7 +11326,7 @@ code = ''' LFSR_TAG_ATTR(1), 0, "\xaa\xaa", 2))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, 0, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; assert(rbyd.weight == 0); lfsr_rbyd_lookup(&lfs, &rbyd, 0, LFSR_TAG_DATA, @@ -11380,8 +11354,8 @@ code = ''' LFSR_TAG_ATTR(1), 0, "\xbb\xbb", 2))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, 1, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0), - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1), + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; assert(rbyd.weight == 0); lfsr_rbyd_lookup(&lfs, &rbyd, 0, LFSR_TAG_DATA, @@ -11409,9 +11383,9 @@ code = ''' LFSR_TAG_ATTR(1), 0, "\xbb\xbb", 2))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, 0, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, 0, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; assert(rbyd.weight == 0); lfsr_rbyd_lookup(&lfs, &rbyd, 0, LFSR_TAG_DATA, @@ -11445,9 +11419,9 @@ code = ''' LFSR_TAG_ATTR(1), 0, "\xcc\xcc", 2))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, 2, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0), - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0), - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1), + LFSR_RATTR(LFSR_TAG_RM, -1), + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; assert(rbyd.weight == 0); lfsr_rbyd_lookup(&lfs, &rbyd, 0, LFSR_TAG_DATA, @@ -11481,11 +11455,11 @@ code = ''' LFSR_TAG_ATTR(1), 0, "\xcc\xcc", 2))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, 0, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, 0, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, 0, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; assert(rbyd.weight == 0); lfsr_rbyd_lookup(&lfs, &rbyd, 0, LFSR_TAG_DATA, @@ -11592,7 +11566,7 @@ code = ''' lfs_size_t rbyd_weight_before = rbyd.weight; lfsr_rbyd_commit(&lfs, &rbyd, rid, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; assert(rbyd.weight == rbyd_weight_before-1); } @@ -11748,7 +11722,7 @@ code = ''' lfs_size_t rbyd_weight_before = rbyd.weight; lfsr_rbyd_commit(&lfs, &rbyd, rid, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; assert(rbyd.weight == rbyd_weight_before-1); } @@ -11891,7 +11865,7 @@ code = ''' count -= 1; // update our rbyd lfsr_rbyd_commit(&lfs, &rbyd, rid, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; } } @@ -12574,8 +12548,7 @@ code = ''' LFSR_TAG_ATTR(1), 0, "\xbb\xbb", 2), LFSR_RATTR( - LFSR_TAG_GROW, +1, - NULL, 0), + LFSR_TAG_GROW, +1), LFSR_RATTR_BUF( LFSR_TAG_ATTR(2), 0, "\xbb\xbb", 2))) => 0; @@ -12676,8 +12649,7 @@ code = ''' LFSR_TAG_ATTR(1), 0, "\xcc\xcc", 2), LFSR_RATTR( - LFSR_TAG_GROW, +2, - NULL, 0), + LFSR_TAG_GROW, +2), LFSR_RATTR_BUF( LFSR_TAG_ATTR(2), 0, "\xcc\xcc", 2))) => 0; @@ -12814,8 +12786,7 @@ code = ''' LFSR_TAG_ATTR(1), 0, "\xdd\xdd", 2), LFSR_RATTR( - LFSR_TAG_GROW, +3, - NULL, 0), + LFSR_TAG_GROW, +3), LFSR_RATTR_BUF( LFSR_TAG_ATTR(2), 0, "\xdd\xdd", 2))) => 0; @@ -12988,8 +12959,7 @@ code = ''' LFSR_TAG_ATTR(1), 0, "\xee\xee", 2), LFSR_RATTR( - LFSR_TAG_GROW, +4, - NULL, 0), + LFSR_TAG_GROW, +4), LFSR_RATTR_BUF( LFSR_TAG_ATTR(2), 0, "\xee\xee", 2))) => 0; @@ -13233,8 +13203,7 @@ code = ''' LFSR_TAG_ATTR(1), 0, "\xbb\xbb", 2), LFSR_RATTR( - LFSR_TAG_GROW, +1, - NULL, 0), + LFSR_TAG_GROW, +1), LFSR_RATTR_BUF( LFSR_TAG_ATTR(2), 0, "\xbb\xbb", 2), @@ -13246,8 +13215,7 @@ code = ''' LFSR_TAG_ATTR(1), 0, "\xcc\xcc", 2), LFSR_RATTR( - LFSR_TAG_GROW, +2, - NULL, 0), + LFSR_TAG_GROW, +2), LFSR_RATTR_BUF( LFSR_TAG_ATTR(2), 0, "\xcc\xcc", 2), @@ -13259,8 +13227,7 @@ code = ''' LFSR_TAG_ATTR(1), 0, "\xdd\xdd", 2), LFSR_RATTR( - LFSR_TAG_GROW, +3, - NULL, 0), + LFSR_TAG_GROW, +3), LFSR_RATTR_BUF( LFSR_TAG_ATTR(2), 0, "\xdd\xdd", 2), @@ -13272,8 +13239,7 @@ code = ''' LFSR_TAG_ATTR(1), 0, "\xee\xee", 2), LFSR_RATTR( - LFSR_TAG_GROW, +4, - NULL, 0), + LFSR_TAG_GROW, +4), LFSR_RATTR_BUF( LFSR_TAG_ATTR(2), 0, "\xee\xee", 2))) => 0; @@ -13559,8 +13525,7 @@ code = ''' LFSR_TAG_ATTR(1), 0, names[perm[j] % 6], 2), LFSR_RATTR( - LFSR_TAG_GROW, +W-1, - NULL, 0), + LFSR_TAG_GROW, +W-1), LFSR_RATTR_BUF( LFSR_TAG_ATTR(2), 0, names[perm[j] % 6], 2))) => 0; @@ -13681,8 +13646,7 @@ code = ''' LFSR_TAG_ATTR(1), 0, names[perm[j] % 6], 2), LFSR_RATTR( - LFSR_TAG_GROW, +W-1, - NULL, 0), + LFSR_TAG_GROW, +W-1), LFSR_RATTR_BUF( LFSR_TAG_ATTR(2), 0, names[perm[j] % 6], 2))) => 0; @@ -13827,7 +13791,7 @@ code = ''' NULL, false) => 0; lfsr_rbyd_commit(&lfs, &rbyd, j*W+W-1, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_GROW, +D, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_GROW, +D))) => 0; assert(rbyd.weight == N*W+D); lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], CFG->block_size) => 0; @@ -14260,7 +14224,7 @@ code = ''' NULL, false) => 0; lfsr_rbyd_commit(&lfs, &rbyd, j*W+W-1, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_GROW, -D, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_GROW, -D))) => 0; assert(rbyd.weight == N*W-D); lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], CFG->block_size) => 0; @@ -14692,7 +14656,7 @@ code = ''' NULL, false) => 0; lfsr_rbyd_commit(&lfs, &rbyd, j*W+W-1, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -W, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -W))) => 0; assert(rbyd.weight == (N-1)*W); lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], CFG->block_size) => 0; @@ -14891,8 +14855,7 @@ code = ''' printf("--- removing: %d ---\n", j); lfsr_rbyd_commit(&lfs, &rbyd, j*W+W-1, LFSR_RATTRS( LFSR_RATTR( - LFSR_TAG_RM | LFSR_TAG_ATTR(1), 0, - NULL, 0))) => 0; + LFSR_TAG_RM | LFSR_TAG_ATTR(1), 0))) => 0; assert(rbyd.weight == N*W); lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], CFG->block_size) => 0; @@ -15041,7 +15004,7 @@ code = ''' count -= 1; // update our rbyd lfsr_rbyd_commit(&lfs, &rbyd, rid, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; } else if (op == 2) { // update our sim sim[rid*(M+1) + u+1] = 'a'+(i % 26); @@ -15057,8 +15020,7 @@ code = ''' // update our rbyd lfsr_rbyd_commit(&lfs, &rbyd, rid, LFSR_RATTRS( LFSR_RATTR( - LFSR_TAG_RM | LFSR_TAG_ATTR(u), 0, - NULL, 0))) => 0; + LFSR_TAG_RM | LFSR_TAG_ATTR(u), 0))) => 0; } } @@ -15220,7 +15182,7 @@ code = ''' count -= 1; // update our rbyd lfsr_rbyd_commit(&lfs, &rbyd, weighted_rid+weight_-1, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -weight_, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -weight_))) => 0; } else if (op == 2) { // get the correct weight from the sim weight_ = sim_weights[rid]; @@ -15228,7 +15190,7 @@ code = ''' sim_weights[rid] += weight; // update our rbyd lfsr_rbyd_commit(&lfs, &rbyd, weighted_rid+weight_-1, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_GROW, +weight, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_GROW, +weight))) => 0; } else if (op == 3) { // get the correct weight from the sim weight_ = sim_weights[rid]; @@ -15239,7 +15201,7 @@ code = ''' sim_weights[rid] -= weight; // update our rbyd lfsr_rbyd_commit(&lfs, &rbyd, weighted_rid+weight_-1, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_GROW, -weight, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_GROW, -weight))) => 0; } } @@ -15492,8 +15454,7 @@ code = ''' // remove with a wide tag lfsr_rbyd_commit(&lfs, &rbyd, j, LFSR_RATTRS( LFSR_RATTR( - LFSR_TAG_RM | LFSR_TAG_SUB | LFSR_TAG_ATTR, 0, - NULL, 0))) => 0; + LFSR_TAG_RM | LFSR_TAG_SUB | LFSR_TAG_ATTR, 0))) => 0; // try traversing over the tags lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], CFG->block_size) => 0; @@ -15878,8 +15839,7 @@ code = ''' // remove with a wide tag lfsr_rbyd_commit(&lfs, &rbyd, j, LFSR_RATTRS( LFSR_RATTR( - LFSR_TAG_RM | LFSR_TAG_SUB | LFSR_TAG_ATTR, 0, - NULL, 0))) => 0; + LFSR_TAG_RM | LFSR_TAG_SUB | LFSR_TAG_ATTR, 0))) => 0; // try traversing over the tags lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], CFG->block_size) => 0; @@ -16269,8 +16229,7 @@ code = ''' // remove with a wide tag lfsr_rbyd_commit(&lfs, &rbyd, j, LFSR_RATTRS( LFSR_RATTR( - LFSR_TAG_RM | LFSR_TAG_SUB | LFSR_TAG_ATTR, 0, - NULL, 0))) => 0; + LFSR_TAG_RM | LFSR_TAG_SUB | LFSR_TAG_ATTR, 0))) => 0; // try traversing over the tags lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], CFG->block_size) => 0; @@ -16643,8 +16602,7 @@ code = ''' // remove with a wide tag lfsr_rbyd_commit(&lfs, &rbyd, j, LFSR_RATTRS( LFSR_RATTR( - LFSR_TAG_RM | LFSR_TAG_SUP | LFSR_TAG_ATTR, 0, - NULL, 0))) => 0; + LFSR_TAG_RM | LFSR_TAG_SUP | LFSR_TAG_ATTR, 0))) => 0; // try traversing over the tags lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.blocks[0], CFG->block_size) => 0; @@ -16876,8 +16834,7 @@ code = ''' LFSR_TAG_ATTR(1), 0, "\xbb\xbb\xbb\xbb", 4), LFSR_RATTR( - LFSR_TAG_RM | LFSR_TAG_ATTR(0), 0, - NULL, 0))) => 0; + LFSR_TAG_RM | LFSR_TAG_ATTR(0), 0))) => 0; assert(rbyd.weight == 0); // can we still access things? @@ -16928,15 +16885,13 @@ code = ''' LFSR_TAG_ATTR(2), 0, "\xcc\xcc\xcc\xcc", 4), LFSR_RATTR( - LFSR_TAG_RM | LFSR_TAG_ATTR(0), 0, - NULL, 0))) => 0; + LFSR_TAG_RM | LFSR_TAG_ATTR(0), 0))) => 0; assert(rbyd.weight == 0); // remove a neighbor to the hole lfsr_rbyd_commit(&lfs, &rbyd, -1, LFSR_RATTRS( LFSR_RATTR( - LFSR_TAG_RM | LFSR_TAG_ATTR(1), 0, - NULL, 0))) => 0; + LFSR_TAG_RM | LFSR_TAG_ATTR(1), 0))) => 0; assert(rbyd.weight == 0); // can we still access things? @@ -16988,13 +16943,12 @@ code = ''' "\xcc\xcc\xcc\xcc", 4))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, -1, LFSR_RATTRS( LFSR_RATTR( - LFSR_TAG_RM | LFSR_TAG_ATTR(0), 0, - NULL, 0))) => 0; + LFSR_TAG_RM | LFSR_TAG_ATTR(0), 0))) => 0; assert(rbyd.weight == 2); // delete a neighbor to the hole lfsr_rbyd_commit(&lfs, &rbyd, 0, LFSR_RATTRS( - LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0; + LFSR_RATTR(LFSR_TAG_RM, -1))) => 0; assert(rbyd.weight == 1); // can we still access things? @@ -17045,8 +16999,7 @@ code = ''' LFSR_TAG_ATTR(0x80), 0, "\xdd\xdd\xdd\xdd", 4), LFSR_RATTR( - LFSR_TAG_RM | LFSR_TAG_ATTR(0), 0, - NULL, 0))) => 0; + LFSR_TAG_RM | LFSR_TAG_ATTR(0), 0))) => 0; assert(rbyd.weight == 0); // subwide replace a neighbor to the hole @@ -17114,8 +17067,7 @@ code = ''' "\xdd\xdd\xdd\xdd", 4))) => 0; lfsr_rbyd_commit(&lfs, &rbyd, -1, LFSR_RATTRS( LFSR_RATTR( - LFSR_TAG_RM | LFSR_TAG_ATTR(0), 0, - NULL, 0))) => 0; + LFSR_TAG_RM | LFSR_TAG_ATTR(0), 0))) => 0; assert(rbyd.weight == 1); // supwide replace a neighbor to the hole