Adopted lowercase => internal pattern for LFS3_tag_* tags

This includes the mask/rm/grow bits:

- LFS3_tag_RM
- LFS3_tag_GROW
- LFS3_tag_MASK0/2/8/12

Our in-device only handle types:

- LFS3_tag_ORPHAN
- LFS3_tag_TRV
- LFS3_tag_UNKNOWN

And in-device only tags with special behavior:

- LFS3_tag_INTERNAL
- LFS3_tag_RATTRS
- LFS3_tag_SHRUBCOMMIT
- LFS3_tag_GRMPUSH
- LFS3_tag_MOVE
- LFS3_tag_ATTRS

Usually I'm not a big fan of case-sensitive naming patterns, but this
has been useful for self-documenting what compat flags are in-device
only. Might as well extend the idea to our tag definitions.
This commit is contained in:
Christopher Haster
2025-11-15 01:45:15 -06:00
parent 0f30021a0d
commit ca678538d4
8 changed files with 305 additions and 305 deletions
+71 -71
View File
@@ -1075,15 +1075,15 @@ static inline bool lfs3_tag_perturb(lfs3_tag_t tag) {
}
static inline bool lfs3_tag_isinternal(lfs3_tag_t tag) {
return tag & LFS3_TAG_INTERNAL;
return tag & LFS3_tag_INTERNAL;
}
static inline bool lfs3_tag_isrm(lfs3_tag_t tag) {
return tag & LFS3_TAG_RM;
return tag & LFS3_tag_RM;
}
static inline bool lfs3_tag_isgrow(lfs3_tag_t tag) {
return tag & LFS3_TAG_GROW;
return tag & LFS3_tag_GROW;
}
static inline bool lfs3_tag_ismask0(lfs3_tag_t tag) {
@@ -2061,7 +2061,7 @@ typedef struct lfs3_name {
// lfs3_mdir_commit___
#define LFS3_RATTR_RATTRS(_rattrs, _rattr_count) \
((lfs3_rattr_t){ \
.tag=LFS3_TAG_RATTRS, \
.tag=LFS3_tag_RATTRS, \
.from=LFS3_FROM_BUF, \
.count=_rattr_count, \
.weight=0, \
@@ -2069,7 +2069,7 @@ typedef struct lfs3_name {
#define LFS3_RATTR_SHRUBCOMMIT(_shrubcommit) \
((lfs3_rattr_t){ \
.tag=LFS3_TAG_SHRUBCOMMIT, \
.tag=LFS3_tag_SHRUBCOMMIT, \
.from=LFS3_FROM_BUF, \
.count=0, \
.weight=0, \
@@ -2077,7 +2077,7 @@ typedef struct lfs3_name {
#define LFS3_RATTR_MOVE(_move) \
((lfs3_rattr_t){ \
.tag=LFS3_TAG_MOVE, \
.tag=LFS3_tag_MOVE, \
.from=LFS3_FROM_BUF, \
.count=0, \
.weight=0, \
@@ -2085,7 +2085,7 @@ typedef struct lfs3_name {
#define LFS3_RATTR_ATTRS(_attrs, _attr_count) \
((lfs3_rattr_t){ \
.tag=LFS3_TAG_ATTRS, \
.tag=LFS3_tag_ATTRS, \
.from=LFS3_FROM_BUF, \
.count=_attr_count, \
.weight=0, \
@@ -5574,7 +5574,7 @@ static int lfs3_btree_commit_(lfs3_t *lfs3,
if (child_->weight == 0) {
// drop child
bcommit->ctx.rattrs[rattr_count++] = LFS3_RATTR(
LFS3_TAG_RM, -child.weight);
LFS3_tag_RM, -child.weight);
} else {
// update child
branch = lfs3_data_frombranch(child_, bcommit->ctx.l_buf);
@@ -5583,7 +5583,7 @@ static int lfs3_btree_commit_(lfs3_t *lfs3,
branch.u.buffer, lfs3_data_size(branch));
if (child_->weight != child.weight) {
bcommit->ctx.rattrs[rattr_count++] = LFS3_RATTR(
LFS3_TAG_GROW, -child.weight + child_->weight);
LFS3_tag_GROW, -child.weight + child_->weight);
}
}
LFS3_ASSERT(rattr_count
@@ -5926,7 +5926,7 @@ static int lfs3_btree_commit_(lfs3_t *lfs3,
branch.u.buffer, lfs3_data_size(branch));
if (child_->weight != child.weight) {
bcommit->ctx.rattrs[rattr_count++] = LFS3_RATTR(
LFS3_TAG_GROW, -child.weight + child_->weight);
LFS3_tag_GROW, -child.weight + child_->weight);
}
}
// new sibling
@@ -6030,7 +6030,7 @@ static int lfs3_btree_commit_(lfs3_t *lfs3,
rattr_count = 0;
// merge sibling
bcommit->ctx.rattrs[rattr_count++] = LFS3_RATTR(
LFS3_TAG_RM, -sibling.weight);
LFS3_tag_RM, -sibling.weight);
// update child
branch = lfs3_data_frombranch(child_, bcommit->ctx.l_buf);
bcommit->ctx.rattrs[rattr_count++] = LFS3_RATTR_BUF(
@@ -6038,7 +6038,7 @@ static int lfs3_btree_commit_(lfs3_t *lfs3,
branch.u.buffer, lfs3_data_size(branch));
if (child_->weight != child.weight) {
bcommit->ctx.rattrs[rattr_count++] = LFS3_RATTR(
LFS3_TAG_GROW, -child.weight + child_->weight);
LFS3_tag_GROW, -child.weight + child_->weight);
}
LFS3_ASSERT(rattr_count
<= sizeof(bcommit->ctx.rattrs)
@@ -6191,7 +6191,7 @@ static lfs3_scmp_t lfs3_btree_namelookup(lfs3_t *lfs3,
// if we found a bname, lookup the branch
if (tag__ == LFS3_TAG_BNAME) {
tag__ = lfs3_rbyd_lookup(lfs3, &rbyd__, rid__,
LFS3_TAG_MASK8 | LFS3_TAG_STRUCT,
LFS3_tag_MASK8 | LFS3_TAG_STRUCT,
&data__);
if (tag__ < 0) {
LFS3_ASSERT(tag__ != LFS3_ERR_NOENT);
@@ -6601,7 +6601,7 @@ static int lfs3_bshrub_fetch_(lfs3_t *lfs3, const lfs3_mdir_t *mdir,
// lookup the file struct, if there is one
lfs3_data_t data;
lfs3_stag_t tag = lfs3_mdir_lookup(lfs3, mdir,
LFS3_TAG_MASK8 | LFS3_TAG_STRUCT,
LFS3_tag_MASK8 | LFS3_TAG_STRUCT,
&data);
if (tag < 0) {
return tag;
@@ -7608,7 +7608,7 @@ static int lfs3_rbyd_appendgdelta(lfs3_t *lfs3, lfs3_rbyd_t *rbyd) {
int err = lfs3_rbyd_appendrattr(lfs3, rbyd, -1, LFS3_RATTR_BUF(
// opportunistically remove this tag if delta is all zero
(size == 0)
? LFS3_TAG_RM | LFS3_TAG_GRMDELTA
? LFS3_tag_RM | LFS3_TAG_GRMDELTA
: LFS3_TAG_GRMDELTA, 0,
grmdelta_, size));
if (err) {
@@ -7659,7 +7659,7 @@ static int lfs3_rbyd_appendgdelta(lfs3_t *lfs3, lfs3_rbyd_t *rbyd) {
int err = lfs3_rbyd_appendrattr(lfs3, rbyd, -1, LFS3_RATTR_BUF(
// opportunistically remove this tag if delta is all zero
(size == 0)
? LFS3_TAG_RM | LFS3_TAG_GBMAPDELTA
? LFS3_tag_RM | LFS3_TAG_GBMAPDELTA
: LFS3_TAG_GBMAPDELTA, 0,
gbmapdelta_, size));
if (err) {
@@ -7967,22 +7967,22 @@ static lfs3_tag_t lfs3_mdir_nametag(const lfs3_t *lfs3, const lfs3_mdir_t *mdir,
// same semantics, and this makes it easier to manage the implied
// mid gap in higher-levels
if (lfs3_grm_ismidrm(lfs3, mid)) {
return LFS3_TAG_ORPHAN;
return LFS3_tag_ORPHAN;
// if we find a stickynote, check to see if there are any open
// in-sync file handles to decide if it really exists
} else if (tag == LFS3_TAG_STICKYNOTE
&& !lfs3_mid_isopen(lfs3, mid,
~LFS3_o_ZOMBIE & ~LFS3_O_DESYNC)) {
return LFS3_TAG_ORPHAN;
return LFS3_tag_ORPHAN;
// map unknown types -> LFS3_TAG_UNKNOWN, this simplifies higher
// map unknown types -> LFS3_tag_UNKNOWN, this simplifies higher
// levels and prevents collisions with internal types
//
// Note future types should probably come with WCOMPAT flags, and be
// at least reported on non-supporting filesystems
} else if (tag < LFS3_TAG_REG || tag > LFS3_TAG_BOOKMARK) {
return LFS3_TAG_UNKNOWN;
return LFS3_tag_UNKNOWN;
}
return tag;
@@ -8236,7 +8236,7 @@ static int lfs3_mdir_commit___(lfs3_t *lfs3, lfs3_mdir_t *mdir_,
LFS3_ASSERT(!(i > 0 && lfs3_rattr_isinsert(rattrs[i])));
// rattr lists can be chained, but only tail-recursively
if (rattrs[i].tag == LFS3_TAG_RATTRS) {
if (rattrs[i].tag == LFS3_tag_RATTRS) {
// must be the last tag
LFS3_ASSERT(i == rattr_count-1);
const lfs3_rattr_t *rattrs_ = rattrs[i].u.etc;
@@ -8250,7 +8250,7 @@ static int lfs3_mdir_commit___(lfs3_t *lfs3, lfs3_mdir_t *mdir_,
// shrub tags append a set of attributes to an unrelated trunk
// in our rbyd
} else if (rattrs[i].tag == LFS3_TAG_SHRUBCOMMIT) {
} else if (rattrs[i].tag == LFS3_tag_SHRUBCOMMIT) {
const lfs3_shrubcommit_t *shrubcommit = rattrs[i].u.etc;
lfs3_bshrub_t *bshrub_ = shrubcommit->bshrub;
lfs3_srid_t rid_ = shrubcommit->rid;
@@ -8275,13 +8275,13 @@ static int lfs3_mdir_commit___(lfs3_t *lfs3, lfs3_mdir_t *mdir_,
// push a new grm, this tag lets us push grms atomically when
// creating new mids
} else if (rattrs[i].tag == LFS3_TAG_GRMPUSH) {
} else if (rattrs[i].tag == LFS3_tag_GRMPUSH) {
// do nothing here, this is handled up in lfs3_mdir_commit
// move tags copy over any tags associated with the source's rid
// TODO can this be deduplicated with lfs3_mdir_compact___ more?
// it _really_ wants to be deduplicated
} else if (rattrs[i].tag == LFS3_TAG_MOVE) {
} else if (rattrs[i].tag == LFS3_tag_MOVE) {
const lfs3_mdir_t *mdir__ = rattrs[i].u.etc;
// skip the name tag, this is always replaced by upper layers
@@ -8355,7 +8355,7 @@ static int lfs3_mdir_commit___(lfs3_t *lfs3, lfs3_mdir_t *mdir_,
}
// custom attributes need to be reencoded into our tag format
} else if (rattrs[i].tag == LFS3_TAG_ATTRS) {
} else if (rattrs[i].tag == LFS3_tag_ATTRS) {
const struct lfs3_attr *attrs_ = rattrs[i].u.etc;
lfs3_size_t attr_count_ = rattrs[i].count;
@@ -8392,7 +8392,7 @@ static int lfs3_mdir_commit___(lfs3_t *lfs3, lfs3_mdir_t *mdir_,
// removing or updating?
(lfs3_attr_isnoattr(&attrs_[j]))
? LFS3_RATTR(
LFS3_TAG_RM
LFS3_tag_RM
| LFS3_TAG_ATTR(attrs_[j].type), 0)
: LFS3_RATTR_DATA(
LFS3_TAG_ATTR(attrs_[j].type), 0,
@@ -8925,7 +8925,7 @@ static int lfs3_mdir_commit_(lfs3_t *lfs3, lfs3_mdir_t *mdir,
for (lfs3_size_t i = 0; i < rattr_count; i++) {
// push a new grm, this tag lets us push grms atomically when
// creating new mids
if (rattrs[i].tag == LFS3_TAG_GRMPUSH) {
if (rattrs[i].tag == LFS3_tag_GRMPUSH) {
lfs3_grm_push(lfs3, mid_);
// adjust pending grms?
@@ -9097,7 +9097,7 @@ static int lfs3_mdir_commit_(lfs3_t *lfs3, lfs3_mdir_t *mdir,
// case they introduce a new name!
lfs3_data_t split_name;
lfs3_stag_t split_tag = lfs3_rbyd_lookup(lfs3, &mdir_[1].r, 0,
LFS3_TAG_MASK8 | LFS3_TAG_NAME,
LFS3_tag_MASK8 | LFS3_TAG_NAME,
&split_name);
if (split_tag < 0) {
LFS3_ASSERT(split_tag != LFS3_ERR_NOENT);
@@ -9166,7 +9166,7 @@ static int lfs3_mdir_commit_(lfs3_t *lfs3, lfs3_mdir_t *mdir,
err = lfs3_mtree_commit(lfs3, &mtree_,
lfs3_mbid(lfs3, mdir->mid), LFS3_RATTRS(
LFS3_RATTR(
LFS3_TAG_RM, -(1 << lfs3->mbits))));
LFS3_tag_RM, -(1 << lfs3->mbits))));
if (err) {
goto failed;
}
@@ -9247,7 +9247,7 @@ static int lfs3_mdir_commit_(lfs3_t *lfs3, lfs3_mdir_t *mdir,
NULL,
-1, LFS3_RATTRS(
LFS3_RATTR_BTREE(
LFS3_TAG_MASK8 | LFS3_TAG_MTREE, 0,
LFS3_tag_MASK8 | LFS3_TAG_MTREE, 0,
&mtree_),
// were we committing to the mroot? include any -1 rattrs
(mdir->mid <= -1)
@@ -9746,7 +9746,7 @@ static lfs3_stag_t lfs3_mtree_pathlookup(lfs3_t *lfs3, const char **path,
// only continue if we hit a directory
if (tag != LFS3_TAG_DIR) {
return (tag == LFS3_TAG_ORPHAN)
return (tag == LFS3_tag_ORPHAN)
? LFS3_ERR_NOENT
: LFS3_ERR_NOTDIR;
}
@@ -9880,7 +9880,7 @@ again:;
} else if (mtrv->h.mdir.mid == LFS3_MID_MTREE) {
lfs3_data_t data;
lfs3_stag_t tag = lfs3_mdir_lookup(lfs3, &mtrv->h.mdir,
LFS3_TAG_MASK8 | LFS3_TAG_STRUCT,
LFS3_tag_MASK8 | LFS3_TAG_STRUCT,
&data);
if (tag < 0 && tag != LFS3_ERR_NOENT) {
return tag;
@@ -10548,7 +10548,7 @@ static int lfs3_gbmap_mark_(lfs3_t *lfs3, lfs3_btree_t *gbmap,
if (r_tag == tag) {
// delete to prepare merge
int err = lfs3_gbmap_commit(lfs3, &gbmap_, r_bid, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -r_weight)));
LFS3_RATTR(LFS3_tag_RM, -r_weight)));
if (err) {
return err;
}
@@ -10577,7 +10577,7 @@ static int lfs3_gbmap_mark_(lfs3_t *lfs3, lfs3_btree_t *gbmap,
if (l_tag == tag) {
// delete to prepare merge
int err = lfs3_gbmap_commit(lfs3, &gbmap_, l_bid, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -l_weight)));
LFS3_RATTR(LFS3_tag_RM, -l_weight)));
if (err) {
return err;
}
@@ -10599,8 +10599,8 @@ static int lfs3_gbmap_mark_(lfs3_t *lfs3, lfs3_btree_t *gbmap,
// works
int err = lfs3_gbmap_commit(lfs3, &gbmap_, bid__, LFS3_RATTRS(
(bid__-(weight__-1) < block-(weight-1))
? LFS3_RATTR(LFS3_TAG_GROW, -((bid__+1) - (block-(weight-1))))
: LFS3_RATTR(LFS3_TAG_RM, -((bid__+1) - (block-(weight-1)))),
? LFS3_RATTR(LFS3_tag_GROW, -((bid__+1) - (block-(weight-1))))
: LFS3_RATTR(LFS3_tag_RM, -((bid__+1) - (block-(weight-1)))),
LFS3_RATTR(tag, +weight_),
(bid__ > block)
? LFS3_RATTR(tag__, +(bid__ - block))
@@ -11153,7 +11153,7 @@ int lfs3_mkdir(lfs3_t *lfs3, const char *path) {
return tag;
}
// already exists? pretend orphans don't exist
if (tag != LFS3_ERR_NOENT && tag != LFS3_TAG_ORPHAN) {
if (tag != LFS3_ERR_NOENT && tag != LFS3_tag_ORPHAN) {
return LFS3_ERR_EXIST;
}
@@ -11258,7 +11258,7 @@ int lfs3_mkdir(lfs3_t *lfs3, const char *path) {
LFS3_RATTR_NAME(
LFS3_TAG_BOOKMARK, +1, did_, NULL, 0),
LFS3_RATTR(
LFS3_TAG_GRMPUSH, 0)));
LFS3_tag_GRMPUSH, 0)));
if (err) {
return err;
}
@@ -11280,7 +11280,7 @@ int lfs3_mkdir(lfs3_t *lfs3, const char *path) {
lfs3_grm_pop(lfs3);
err = lfs3_mdir_commit(lfs3, &mdir, LFS3_RATTRS(
LFS3_RATTR_NAME(
LFS3_TAG_MASK12 | LFS3_TAG_DIR,
LFS3_tag_MASK12 | LFS3_TAG_DIR,
(tag == LFS3_ERR_NOENT) ? +1 : 0,
did, name, name_len),
LFS3_RATTR_LEB128(
@@ -11343,7 +11343,7 @@ static int lfs3_grm_pushdid(lfs3_t *lfs3, lfs3_did_t did) {
lfs3_data_t data;
tag = lfs3_mdir_lookup(lfs3, &bookmark_mdir,
LFS3_TAG_MASK8 | LFS3_TAG_NAME,
LFS3_tag_MASK8 | LFS3_TAG_NAME,
&data);
if (tag < 0) {
LFS3_ASSERT(tag != LFS3_ERR_NOENT);
@@ -11386,7 +11386,7 @@ int lfs3_remove(lfs3_t *lfs3, const char *path) {
return tag;
}
// pretend orphans don't exist
if (tag == LFS3_TAG_ORPHAN) {
if (tag == LFS3_tag_ORPHAN) {
return LFS3_ERR_NOENT;
}
@@ -11430,10 +11430,10 @@ int lfs3_remove(lfs3_t *lfs3, const char *path) {
// and trim the entry size
(zombie)
? LFS3_RATTR_NAME(
LFS3_TAG_MASK12 | LFS3_TAG_STICKYNOTE, 0,
LFS3_tag_MASK12 | LFS3_TAG_STICKYNOTE, 0,
did, path, lfs3_path_namelen(path))
: LFS3_RATTR(
LFS3_TAG_RM, -1)));
LFS3_tag_RM, -1)));
if (err) {
return err;
}
@@ -11507,7 +11507,7 @@ int lfs3_rename(lfs3_t *lfs3, const char *old_path, const char *new_path) {
return old_tag;
}
// pretend orphans don't exist
if (old_tag == LFS3_TAG_ORPHAN) {
if (old_tag == LFS3_tag_ORPHAN) {
return LFS3_ERR_NOENT;
}
@@ -11554,7 +11554,7 @@ int lfs3_rename(lfs3_t *lfs3, const char *old_path, const char *new_path) {
if (old_tag == LFS3_TAG_DIR
&& new_tag != LFS3_TAG_DIR
// pretend orphans don't exist
&& new_tag != LFS3_TAG_ORPHAN) {
&& new_tag != LFS3_tag_ORPHAN) {
return LFS3_ERR_NOTDIR;
}
@@ -11587,10 +11587,10 @@ int lfs3_rename(lfs3_t *lfs3, const char *old_path, const char *new_path) {
}
}
if (old_tag == LFS3_TAG_UNKNOWN) {
if (old_tag == LFS3_tag_UNKNOWN) {
// lookup the actual tag
old_tag = lfs3_rbyd_lookup(lfs3, &old_mdir.r,
lfs3_mrid(lfs3, old_mdir.mid), LFS3_TAG_MASK8 | LFS3_TAG_NAME,
lfs3_mrid(lfs3, old_mdir.mid), LFS3_tag_MASK8 | LFS3_TAG_NAME,
NULL);
if (old_tag < 0) {
return old_tag;
@@ -11604,7 +11604,7 @@ int lfs3_rename(lfs3_t *lfs3, const char *old_path, const char *new_path) {
// new rid, while also marking the old rid for removal
err = lfs3_mdir_commit(lfs3, &new_mdir, LFS3_RATTRS(
LFS3_RATTR_NAME(
LFS3_TAG_MASK12 | old_tag,
LFS3_tag_MASK12 | old_tag,
(new_tag == LFS3_ERR_NOENT) ? +1 : 0,
new_did, new_path, lfs3_path_namelen(new_path)),
LFS3_RATTR_MOVE(&old_mdir)));
@@ -11692,7 +11692,7 @@ static int lfs3_stat_(lfs3_t *lfs3, const lfs3_mdir_t *mdir,
if (tag == LFS3_TAG_REG) {
lfs3_data_t data;
lfs3_stag_t tag = lfs3_mdir_lookup(lfs3, mdir,
LFS3_TAG_MASK8 | LFS3_TAG_STRUCT,
LFS3_tag_MASK8 | LFS3_TAG_STRUCT,
&data);
if (tag < 0 && tag != LFS3_ERR_NOENT) {
return tag;
@@ -11719,7 +11719,7 @@ int lfs3_stat(lfs3_t *lfs3, const char *path, struct lfs3_info *info) {
return tag;
}
// pretend orphans don't exist
if (tag == LFS3_TAG_ORPHAN) {
if (tag == LFS3_tag_ORPHAN) {
return LFS3_ERR_NOENT;
}
@@ -11755,7 +11755,7 @@ int lfs3_dir_open(lfs3_t *lfs3, lfs3_dir_t *dir, const char *path) {
return tag;
}
// pretend orphans don't exist
if (tag == LFS3_TAG_ORPHAN) {
if (tag == LFS3_tag_ORPHAN) {
return LFS3_ERR_NOENT;
}
@@ -11839,7 +11839,7 @@ int lfs3_dir_read(lfs3_t *lfs3, lfs3_dir_t *dir, struct lfs3_info *info) {
// lookup the next name tag
lfs3_data_t data;
lfs3_stag_t tag = lfs3_mdir_lookup(lfs3, &dir->h.mdir,
LFS3_TAG_MASK8 | LFS3_TAG_NAME,
LFS3_tag_MASK8 | LFS3_TAG_NAME,
&data);
if (tag < 0) {
return tag;
@@ -11858,7 +11858,7 @@ int lfs3_dir_read(lfs3_t *lfs3, lfs3_dir_t *dir, struct lfs3_info *info) {
}
// skip orphans, we pretend these don't exist
if (tag == LFS3_TAG_ORPHAN) {
if (tag == LFS3_tag_ORPHAN) {
dir->h.mdir.mid += 1;
continue;
}
@@ -11970,7 +11970,7 @@ static int lfs3_lookupattr(lfs3_t *lfs3, const char *path, uint8_t type,
return tag;
}
// pretend orphans don't exist
if (tag == LFS3_TAG_ORPHAN) {
if (tag == LFS3_tag_ORPHAN) {
return LFS3_ERR_NOENT;
}
@@ -12090,7 +12090,7 @@ int lfs3_removeattr(lfs3_t *lfs3, const char *path, uint8_t type) {
// commit our removal
err = lfs3_mdir_commit(lfs3, &mdir, LFS3_RATTRS(
LFS3_RATTR(
LFS3_TAG_RM | LFS3_TAG_ATTR(type), 0)));
LFS3_tag_RM | LFS3_TAG_ATTR(type), 0)));
if (err) {
return err;
}
@@ -12292,7 +12292,7 @@ int lfs3_file_opencfg_(lfs3_t *lfs3, lfs3_file_t *file,
}
// creating a new entry?
if (tag == LFS3_ERR_NOENT || tag == LFS3_TAG_ORPHAN) {
if (tag == LFS3_ERR_NOENT || tag == LFS3_tag_ORPHAN) {
if (!lfs3_o_iscreat(file->b.h.flags)) {
err = LFS3_ERR_NOENT;
goto failed;
@@ -12329,7 +12329,7 @@ int lfs3_file_opencfg_(lfs3_t *lfs3, lfs3_file_t *file,
err = LFS3_ERR_ISDIR;
goto failed;
}
if (tag == LFS3_TAG_UNKNOWN) {
if (tag == LFS3_tag_UNKNOWN) {
err = LFS3_ERR_NOTSUP;
goto failed;
}
@@ -12782,7 +12782,7 @@ static int lfs3_file_graft_(lfs3_t *lfs3, lfs3_file_t *file,
if (file->b.b.r.weight > 0) {
bid = lfs3_min(bid, file->b.b.r.weight-1);
rattrs[rattr_count++] = LFS3_RATTR(
LFS3_TAG_GROW, +(pos - file->b.b.r.weight));
LFS3_tag_GROW, +(pos - file->b.b.r.weight));
// new hole
} else {
@@ -12819,7 +12819,7 @@ static int lfs3_file_graft_(lfs3_t *lfs3, lfs3_file_t *file,
// can we get away with a grow attribute?
if (lfs3_bptr_size(&bptr_) == lfs3_bptr_size(&l)) {
rattrs[rattr_count++] = LFS3_RATTR(
LFS3_TAG_GROW, -(bid+1 - pos));
LFS3_tag_GROW, -(bid+1 - pos));
// carve fragment?
} else if (!lfs3_bptr_isbptr(&bptr_)
@@ -12828,14 +12828,14 @@ static int lfs3_file_graft_(lfs3_t *lfs3, lfs3_file_t *file,
&& lfs3_bptr_size(&l)
< lfs3_max(lfs3->cfg->crystal_thresh, 1))) {
rattrs[rattr_count++] = LFS3_RATTR_DATA(
LFS3_TAG_GROW | LFS3_TAG_MASK8 | LFS3_TAG_DATA,
LFS3_tag_GROW | LFS3_tag_MASK8 | LFS3_TAG_DATA,
-(bid+1 - pos),
&l.d);
// carve bptr?
} else {
rattrs[rattr_count++] = LFS3_RATTR_BPTR(
LFS3_TAG_GROW | LFS3_TAG_MASK8 | LFS3_TAG_BLOCK,
LFS3_tag_GROW | LFS3_tag_MASK8 | LFS3_TAG_BLOCK,
-(bid+1 - pos),
&l);
}
@@ -12843,7 +12843,7 @@ static int lfs3_file_graft_(lfs3_t *lfs3, lfs3_file_t *file,
// completely overwriting this entry?
} else {
rattrs[rattr_count++] = LFS3_RATTR(
LFS3_TAG_RM, -weight_);
LFS3_tag_RM, -weight_);
}
// spans more than one entry? we can't do everything in one
@@ -12905,7 +12905,7 @@ static int lfs3_file_graft_(lfs3_t *lfs3, lfs3_file_t *file,
if (dsize == 0 && pos > 0) {
bid = lfs3_min(bid, file->b.b.r.weight-1);
rattrs[rattr_count++] = LFS3_RATTR(
LFS3_TAG_GROW, +(weight + delta));
LFS3_tag_GROW, +(weight + delta));
// need a new hole?
} else if (dsize == 0) {
@@ -13964,7 +13964,7 @@ static int lfs3_file_sync_(lfs3_t *lfs3, lfs3_file_t *file,
}
rattrs[rattr_count++] = LFS3_RATTR_DATA(
LFS3_TAG_MASK8 | LFS3_TAG_REG, 0,
LFS3_tag_MASK8 | LFS3_TAG_REG, 0,
&name_data);
}
@@ -14012,18 +14012,18 @@ static int lfs3_file_sync_(lfs3_t *lfs3, lfs3_file_t *file,
// no bshrub/btree?
if (lfs3_file_size_(file) == 0) {
rattrs[rattr_count++] = LFS3_RATTR(
LFS3_TAG_RM | LFS3_TAG_MASK8 | LFS3_TAG_STRUCT, 0);
LFS3_tag_RM | LFS3_tag_MASK8 | LFS3_TAG_STRUCT, 0);
// bshrub?
} else if (lfs3_bshrub_isbshrub(&file->b)
|| lfs3_o_isunflush(file->b.h.flags)) {
rattrs[rattr_count++] = LFS3_RATTR_SHRUB(
LFS3_TAG_MASK8 | LFS3_TAG_BSHRUB, 0,
LFS3_tag_MASK8 | LFS3_TAG_BSHRUB, 0,
// note we use the staged trunk here
&file->b.b_);
// btree?
} else if (lfs3_bshrub_isbtree(&file->b)) {
rattrs[rattr_count++] = LFS3_RATTR_BTREE(
LFS3_TAG_MASK8 | LFS3_TAG_BTREE, 0,
LFS3_tag_MASK8 | LFS3_TAG_BTREE, 0,
&file->b.b);
} else {
LFS3_UNREACHABLE();
@@ -15354,7 +15354,7 @@ static int lfs3_mountmroot(lfs3_t *lfs3, const lfs3_mdir_t *mroot) {
lfs3->file_limit = file_limit;
// check for unknown configs
tag = lfs3_mdir_lookupnext(lfs3, mroot, LFS3_TAG_UNKNOWNCONFIG,
tag = lfs3_mdir_lookupnext(lfs3, mroot, LFS3_tag_UNKNOWNCONFIG,
NULL);
if (tag < 0 && tag != LFS3_ERR_NOENT) {
return tag;
@@ -16142,7 +16142,7 @@ static int lfs3_fs_fixgrm(lfs3_t *lfs3) {
// remove the rid while atomically updating our grm
err = lfs3_mdir_commit(lfs3, &mdir, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1)));
LFS3_RATTR(LFS3_tag_RM, -1)));
if (err) {
// revert grm manually
lfs3->grm = grm_p;
@@ -16193,7 +16193,7 @@ static int lfs3_mdir_mkconsistent(lfs3_t *lfs3, lfs3_mdir_t *mdir) {
// remove the orphaned stickynote
err = lfs3_mdir_commit(lfs3, mdir, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1)));
LFS3_RATTR(LFS3_tag_RM, -1)));
if (err) {
goto failed;
}
@@ -16499,7 +16499,7 @@ int lfs3_fs_grow(lfs3_t *lfs3, lfs3_size_t block_count_) {
LFS3_RATTRS(
LFS3_RATTR(
(tag == LFS3_TAG_BMFREE)
? LFS3_TAG_GROW
? LFS3_tag_GROW
: LFS3_TAG_BMFREE,
+(block_count_ - block_count))));
if (err) {
+16 -16
View File
@@ -746,7 +746,7 @@ enum lfs3_tag {
LFS3_TAG_NAMELIMIT = 0x0039,
LFS3_TAG_FILELIMIT = 0x003a,
// in-device only, to help find unknown config tags
LFS3_TAG_UNKNOWNCONFIG = 0x003b,
LFS3_tag_UNKNOWNCONFIG = 0x003b,
// global-state tags
LFS3_TAG_GDELTA = 0x0100,
@@ -761,9 +761,9 @@ enum lfs3_tag {
LFS3_TAG_STICKYNOTE = 0x0203,
LFS3_TAG_BOOKMARK = 0x0204,
// in-device only name tags, these should never get written to disk
LFS3_TAG_ORPHAN = 0x0205,
LFS3_TAG_TRV = 0x0206,
LFS3_TAG_UNKNOWN = 0x0207,
LFS3_tag_ORPHAN = 0x0205,
LFS3_tag_TRV = 0x0206,
LFS3_tag_UNKNOWN = 0x0207,
// non-file name tags
LFS3_TAG_MNAME = 0x0220,
@@ -808,20 +808,20 @@ enum lfs3_tag {
LFS3_TAG_GCKSUMDELTA = 0x3300,
// in-device only tags, these should never get written to disk
LFS3_TAG_INTERNAL = 0x0800,
LFS3_TAG_RATTRS = 0x0800,
LFS3_TAG_SHRUBCOMMIT = 0x0801,
LFS3_TAG_GRMPUSH = 0x0802,
LFS3_TAG_MOVE = 0x0803,
LFS3_TAG_ATTRS = 0x0804,
LFS3_tag_INTERNAL = 0x0800,
LFS3_tag_RATTRS = 0x0800,
LFS3_tag_SHRUBCOMMIT = 0x0801,
LFS3_tag_GRMPUSH = 0x0802,
LFS3_tag_MOVE = 0x0803,
LFS3_tag_ATTRS = 0x0804,
// some in-device only tag modifiers
LFS3_TAG_RM = 0x8000,
LFS3_TAG_GROW = 0x4000,
LFS3_TAG_MASK0 = 0x0000,
LFS3_TAG_MASK2 = 0x1000,
LFS3_TAG_MASK8 = 0x2000,
LFS3_TAG_MASK12 = 0x3000,
LFS3_tag_RM = 0x8000,
LFS3_tag_GROW = 0x4000,
LFS3_tag_MASK0 = 0x0000,
LFS3_tag_MASK2 = 0x1000,
LFS3_tag_MASK8 = 0x2000,
LFS3_tag_MASK12 = 0x3000,
};
// some other tag encodings with their own subfields
+60 -60
View File
@@ -730,7 +730,7 @@ code = '''
// update the tree
lfs3_btree_commit(&lfs3, &btree, 0, LFS3_RATTRS(
LFS3_RATTR_BUF(
LFS3_TAG_MASK8 | LFS3_TAG_DATA, 0,
LFS3_tag_MASK8 | LFS3_TAG_DATA, 0,
"A", 1))) => 0;
printf("btree: w%d 0x%x.%x\n",
btree.r.weight,
@@ -779,11 +779,11 @@ code = '''
// update the tree
lfs3_btree_commit(&lfs3, &btree, 0, LFS3_RATTRS(
LFS3_RATTR_BUF(
LFS3_TAG_MASK8 | LFS3_TAG_DATA, 0,
LFS3_tag_MASK8 | LFS3_TAG_DATA, 0,
"A", 1))) => 0;
lfs3_btree_commit(&lfs3, &btree, 1, LFS3_RATTRS(
LFS3_RATTR_BUF(
LFS3_TAG_MASK8 | LFS3_TAG_DATA, 0,
LFS3_tag_MASK8 | LFS3_TAG_DATA, 0,
"B", 1))) => 0;
printf("btree: w%d 0x%x.%x\n",
btree.r.weight,
@@ -841,15 +841,15 @@ code = '''
// update the tree
lfs3_btree_commit(&lfs3, &btree, 0, LFS3_RATTRS(
LFS3_RATTR_BUF(
LFS3_TAG_MASK8 | LFS3_TAG_DATA, 0,
LFS3_tag_MASK8 | LFS3_TAG_DATA, 0,
"A", 1))) => 0;
lfs3_btree_commit(&lfs3, &btree, 1, LFS3_RATTRS(
LFS3_RATTR_BUF(
LFS3_TAG_MASK8 | LFS3_TAG_DATA, 0,
LFS3_tag_MASK8 | LFS3_TAG_DATA, 0,
"B", 1))) => 0;
lfs3_btree_commit(&lfs3, &btree, 2, LFS3_RATTRS(
LFS3_RATTR_BUF(
LFS3_TAG_MASK8 | LFS3_TAG_DATA, 0,
LFS3_tag_MASK8 | LFS3_TAG_DATA, 0,
"C", 1))) => 0;
printf("btree: w%d 0x%x.%x\n",
btree.r.weight,
@@ -916,7 +916,7 @@ code = '''
for (lfs3_size_t i = 0; i < N; i++) {
lfs3_btree_commit(&lfs3, &btree, i, LFS3_RATTRS(
LFS3_RATTR_BUF(
LFS3_TAG_MASK8 | LFS3_TAG_DATA, 0,
LFS3_tag_MASK8 | LFS3_TAG_DATA, 0,
&(uint8_t){'A'+(i % 26)}, 1))) => 0;
}
printf("btree: w%d 0x%x.%x\n",
@@ -989,7 +989,7 @@ code = '''
// update btree
lfs3_btree_commit(&lfs3, &btree, bid, LFS3_RATTRS(
LFS3_RATTR_BUF(
LFS3_TAG_MASK8 | LFS3_TAG_DATA, 0,
LFS3_tag_MASK8 | LFS3_TAG_DATA, 0,
&(uint8_t){'A'+(i % 26)}, 1))) => 0;
// update sim
@@ -1063,7 +1063,7 @@ code = '''
for (lfs3_size_t i = 0; i < N; i++) {
lfs3_btree_commit(&lfs3, &btree, i*W+W-1, LFS3_RATTRS(
LFS3_RATTR_BUF(
LFS3_TAG_MASK8 | LFS3_TAG_DATA, 0,
LFS3_tag_MASK8 | LFS3_TAG_DATA, 0,
&(uint8_t){'A'+(i % 26)}, 1))) => 0;
}
printf("btree: w%d 0x%x.%x\n",
@@ -1163,10 +1163,10 @@ code = '''
lfs3_btree_commit(&lfs3, &btree,
weighted_bid+sim_weights[bid]-1, LFS3_RATTRS(
LFS3_RATTR_BUF(
LFS3_TAG_MASK8 | LFS3_TAG_DATA, 0,
LFS3_tag_MASK8 | LFS3_TAG_DATA, 0,
&(uint8_t){'A'+(i % 26)}, 1),
LFS3_RATTR(
LFS3_TAG_GROW, +weight-sim_weights[bid]))) => 0;
LFS3_tag_GROW, +weight-sim_weights[bid]))) => 0;
// update sim
sim[bid] = 'A'+(i % 26);
@@ -1277,7 +1277,7 @@ code = '''
LFS3_RATTR_BUF(LFS3_TAG_DATA, +1, "a", 1))) => 0;
// pop!
lfs3_btree_commit(&lfs3, &btree, 0, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
printf("btree: w%d 0x%x.%x\n",
btree.r.weight,
btree.r.blocks[0],
@@ -1337,7 +1337,7 @@ code = '''
LFS3_RATTR_BUF(LFS3_TAG_DATA, +1, "b", 1))) => 0;
// pop!
lfs3_btree_commit(&lfs3, &btree, 1, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
printf("btree: w%d 0x%x.%x\n",
btree.r.weight,
btree.r.blocks[0],
@@ -1411,7 +1411,7 @@ code = '''
LFS3_RATTR_BUF(LFS3_TAG_DATA, +1, "b", 1))) => 0;
// pop!
lfs3_btree_commit(&lfs3, &btree, 0, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
printf("btree: w%d 0x%x.%x\n",
btree.r.weight,
btree.r.blocks[0],
@@ -1487,7 +1487,7 @@ code = '''
LFS3_RATTR_BUF(LFS3_TAG_DATA, +1, "c", 1))) => 0;
// pop!
lfs3_btree_commit(&lfs3, &btree, 2, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
printf("btree: w%d 0x%x.%x\n",
btree.r.weight,
btree.r.blocks[0],
@@ -1581,7 +1581,7 @@ code = '''
// drain the tree
for (lfs3_size_t i = 0; i < N-REMAINING; i++) {
lfs3_btree_commit(&lfs3, &btree, N-1-i, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
}
printf("btree: w%d 0x%x.%x\n",
@@ -1662,7 +1662,7 @@ code = '''
// drain the tree
for (lfs3_size_t i = 0; i < N-REMAINING; i++) {
lfs3_btree_commit(&lfs3, &btree, 0, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
}
printf("btree: w%d 0x%x.%x\n",
btree.r.weight,
@@ -1761,7 +1761,7 @@ code = '''
// remove from btree
lfs3_btree_commit(&lfs3, &btree, bid, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
// remove from sim
memmove(&sim[bid], &sim[bid+1], sim_size-(bid+1));
@@ -1836,7 +1836,7 @@ code = '''
// drain the tree
for (lfs3_size_t i = 0; i < N-REMAINING; i++) {
lfs3_btree_commit(&lfs3, &btree, (N-1-i)*W+W-1, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -W))) => 0;
LFS3_RATTR(LFS3_tag_RM, -W))) => 0;
}
printf("btree: w%d 0x%x.%x\n",
btree.r.weight,
@@ -1980,7 +1980,7 @@ code = '''
lfs3_btree_commit(&lfs3, &btree,
weighted_bid+sim_weights[bid]-1, LFS3_RATTRS(
LFS3_RATTR(
LFS3_TAG_RM, -sim_weights[bid]))) => 0;
LFS3_tag_RM, -sim_weights[bid]))) => 0;
// remove from sim
memmove(&sim[bid], &sim[bid+1], sim_size-(bid+1));
@@ -2334,7 +2334,7 @@ code = '''
lfs3_btree_commit(&lfs3, &btree,
weighted_bid+sim_weights[bid]-1, LFS3_RATTRS(
LFS3_RATTR(
LFS3_TAG_GROW, +weight1-sim_weights[bid]),
LFS3_tag_GROW, +weight1-sim_weights[bid]),
LFS3_RATTR_BUF(
LFS3_TAG_DATA, 0,
&(uint8_t){'a'+(i % 26)}, 1),
@@ -2501,14 +2501,14 @@ code = '''
memset(buf2, 'b', SIZE);
lfs3_btree_commit(&lfs3, &btree, 1, LFS3_RATTRS(
LFS3_RATTR_DATA(
LFS3_TAG_MASK8 | LFS3_TAG_DATA, 0,
LFS3_tag_MASK8 | LFS3_TAG_DATA, 0,
&LFS3_DATA_BUF(buf2, SIZE)))) => 0;
assert(btree.r.weight == 2);
// now remove one entry, since this brings the rbyd down to zero,
// this should force one of the blocks to drop
lfs3_btree_commit(&lfs3, &btree, SIBLING, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
printf("btree: w%d 0x%x.%x\n",
btree.r.weight,
@@ -2572,7 +2572,7 @@ code = '''
memset(buf2, 'b', SIZE);
lfs3_btree_commit(&lfs3, &btree, 1, LFS3_RATTRS(
LFS3_RATTR_DATA(
LFS3_TAG_MASK8 | LFS3_TAG_DATA, 0,
LFS3_tag_MASK8 | LFS3_TAG_DATA, 0,
&LFS3_DATA_BUF(buf2, SIZE)))) => 0;
assert(btree.r.weight == 2);
@@ -2582,7 +2582,7 @@ code = '''
// do this while forcing a compaction
lfs3_btree_claim(&btree);
lfs3_btree_commit(&lfs3, &btree, SIBLING, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
printf("btree: w%d 0x%x.%x\n",
btree.r.weight,
@@ -2649,7 +2649,7 @@ code = '''
//
lfs3_btree_claim(&btree);
lfs3_btree_commit(&lfs3, &btree, SIBLING, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
printf("btree: w%d 0x%x.%x\n",
btree.r.weight,
@@ -2713,25 +2713,25 @@ code = '''
memset(buf2, 'b', SIZE);
lfs3_btree_commit(&lfs3, &btree, 1, LFS3_RATTRS(
LFS3_RATTR_DATA(
LFS3_TAG_MASK8 | LFS3_TAG_DATA, 0,
LFS3_tag_MASK8 | LFS3_TAG_DATA, 0,
&LFS3_DATA_BUF(buf2, SIZE)))) => 0;
assert(btree.r.weight == 2);
// now make both entries small so they should be merged if either compacts
lfs3_btree_commit(&lfs3, &btree, 0, LFS3_RATTRS(
LFS3_RATTR_BUF(
LFS3_TAG_MASK8 | LFS3_TAG_DATA, 0,
LFS3_tag_MASK8 | LFS3_TAG_DATA, 0,
"a", 1))) => 0;
lfs3_btree_commit(&lfs3, &btree, 1, LFS3_RATTRS(
LFS3_RATTR_BUF(
LFS3_TAG_MASK8 | LFS3_TAG_DATA, 0,
LFS3_tag_MASK8 | LFS3_TAG_DATA, 0,
"b", 1))) => 0;
// force compaction, while removing one entry, this drops the rbyd
// down to zero while also triggering a merge
lfs3_btree_claim(&btree);
lfs3_btree_commit(&lfs3, &btree, SIBLING, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
printf("btree: w%d 0x%x.%x\n",
btree.r.weight,
@@ -2809,7 +2809,7 @@ code = '''
// update btree
lfs3_btree_commit(&lfs3, &btree, bid, LFS3_RATTRS(
LFS3_RATTR_BUF(
LFS3_TAG_MASK8 | LFS3_TAG_DATA, 0,
LFS3_tag_MASK8 | LFS3_TAG_DATA, 0,
&(uint8_t){'a'+(i % 26)}, 1))) => 0;
// update sim
@@ -2818,7 +2818,7 @@ code = '''
} else {
// pop from btree
lfs3_btree_commit(&lfs3, &btree, bid, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
// pop from sim
memmove(&sim[bid], &sim[bid+1], sim_size-(bid+1));
@@ -2931,10 +2931,10 @@ code = '''
lfs3_btree_commit(&lfs3, &btree,
weighted_bid+sim_weights[bid]-1, LFS3_RATTRS(
LFS3_RATTR_BUF(
LFS3_TAG_MASK8 | LFS3_TAG_DATA, 0,
LFS3_tag_MASK8 | LFS3_TAG_DATA, 0,
&(uint8_t){'a'+(i % 26)}, 1),
LFS3_RATTR(
LFS3_TAG_GROW, +weight-sim_weights[bid]))) => 0;
LFS3_tag_GROW, +weight-sim_weights[bid]))) => 0;
// update sim
sim[bid] = 'a'+(i % 26);
@@ -2945,7 +2945,7 @@ code = '''
lfs3_btree_commit(&lfs3, &btree,
weighted_bid+sim_weights[bid]-1, LFS3_RATTRS(
LFS3_RATTR(
LFS3_TAG_RM, -sim_weights[bid]))) => 0;
LFS3_tag_RM, -sim_weights[bid]))) => 0;
// remove from sim
memmove(&sim[bid], &sim[bid+1], sim_size-(bid+1));
@@ -3105,7 +3105,7 @@ code = '''
lfs3_btree_namelookup(&lfs3, &btree, 0*DID, "aaa", 3,
&bid_, NULL, &weight_, NULL) => LFS3_CMP_EQ;
tag_ = lfs3_btree_lookup(&lfs3, &btree,
bid_, LFS3_TAG_MASK8 | LFS3_TAG_STRUCT,
bid_, LFS3_tag_MASK8 | LFS3_TAG_STRUCT,
&data_);
assert(tag_ == LFS3_TAG_DATA);
assert(bid_ == 0);
@@ -3116,7 +3116,7 @@ code = '''
lfs3_btree_namelookup(&lfs3, &btree, 1*DID, "aab", 3,
&bid_, NULL, &weight_, NULL) => LFS3_CMP_LT;
tag_ = lfs3_btree_lookup(&lfs3, &btree,
bid_, LFS3_TAG_MASK8 | LFS3_TAG_STRUCT,
bid_, LFS3_tag_MASK8 | LFS3_TAG_STRUCT,
&data_);
assert(tag_ == LFS3_TAG_DATA);
assert(bid_ == 0);
@@ -3170,7 +3170,7 @@ code = '''
lfs3_btree_namelookup(&lfs3, &btree, 0, "aaa", 3,
&bid_, NULL, &weight_, NULL) => LFS3_CMP_EQ;
tag_ = lfs3_btree_lookup(&lfs3, &btree,
bid_, LFS3_TAG_MASK8 | LFS3_TAG_STRUCT,
bid_, LFS3_tag_MASK8 | LFS3_TAG_STRUCT,
&data_);
assert(tag_ == LFS3_TAG_DATA);
assert(bid_ == 0);
@@ -3181,7 +3181,7 @@ code = '''
lfs3_btree_namelookup(&lfs3, &btree, 0, "aab", 3,
&bid_, NULL, &weight_, NULL) => LFS3_CMP_EQ;
tag_ = lfs3_btree_lookup(&lfs3, &btree,
bid_, LFS3_TAG_MASK8 | LFS3_TAG_STRUCT,
bid_, LFS3_tag_MASK8 | LFS3_TAG_STRUCT,
&data_);
assert(tag_ == LFS3_TAG_DATA);
assert(bid_ == 1);
@@ -3192,7 +3192,7 @@ code = '''
lfs3_btree_namelookup(&lfs3, &btree, 0, "aac", 3,
&bid_, NULL, &weight_, NULL) => LFS3_CMP_LT;
tag_ = lfs3_btree_lookup(&lfs3, &btree,
bid_, LFS3_TAG_MASK8 | LFS3_TAG_STRUCT,
bid_, LFS3_tag_MASK8 | LFS3_TAG_STRUCT,
&data_);
assert(tag_ == LFS3_TAG_DATA);
assert(bid_ == 1);
@@ -3252,7 +3252,7 @@ code = '''
lfs3_btree_namelookup(&lfs3, &btree, 0*DID, "aaa", 3,
&bid_, NULL, &weight_, NULL) => LFS3_CMP_EQ;
tag_ = lfs3_btree_lookup(&lfs3, &btree,
bid_, LFS3_TAG_MASK8 | LFS3_TAG_STRUCT,
bid_, LFS3_tag_MASK8 | LFS3_TAG_STRUCT,
&data_);
assert(tag_ == LFS3_TAG_DATA);
assert(bid_ == 0);
@@ -3263,7 +3263,7 @@ code = '''
lfs3_btree_namelookup(&lfs3, &btree, 1*DID, "aab", 3,
&bid_, NULL, &weight_, NULL) => LFS3_CMP_EQ;
tag_ = lfs3_btree_lookup(&lfs3, &btree,
bid_, LFS3_TAG_MASK8 | LFS3_TAG_STRUCT,
bid_, LFS3_tag_MASK8 | LFS3_TAG_STRUCT,
&data_);
assert(tag_ == LFS3_TAG_DATA);
assert(bid_ == 1);
@@ -3274,7 +3274,7 @@ code = '''
lfs3_btree_namelookup(&lfs3, &btree, 2*DID, "aac", 3,
&bid_, NULL, &weight_, NULL) => LFS3_CMP_EQ;
tag_ = lfs3_btree_lookup(&lfs3, &btree,
bid_, LFS3_TAG_MASK8 | LFS3_TAG_STRUCT,
bid_, LFS3_tag_MASK8 | LFS3_TAG_STRUCT,
&data_);
assert(tag_ == LFS3_TAG_DATA);
assert(bid_ == 2);
@@ -3285,7 +3285,7 @@ code = '''
lfs3_btree_namelookup(&lfs3, &btree, 3*DID, "aad", 3,
&bid_, NULL, &weight_, NULL) => LFS3_CMP_LT;
tag_ = lfs3_btree_lookup(&lfs3, &btree,
bid_, LFS3_TAG_MASK8 | LFS3_TAG_STRUCT,
bid_, LFS3_tag_MASK8 | LFS3_TAG_STRUCT,
&data_);
assert(tag_ == LFS3_TAG_DATA);
assert(bid_ == 2);
@@ -3345,7 +3345,7 @@ code = '''
lfs3_btree_namelookup(&lfs3, &btree, 0*DID, "aaa", 3,
&bid_, NULL, &weight_, NULL) => LFS3_CMP_EQ;
tag_ = lfs3_btree_lookup(&lfs3, &btree,
bid_, LFS3_TAG_MASK8 | LFS3_TAG_STRUCT,
bid_, LFS3_tag_MASK8 | LFS3_TAG_STRUCT,
&data_);
assert(tag_ == LFS3_TAG_DATA);
assert(bid_ == 0);
@@ -3356,7 +3356,7 @@ code = '''
lfs3_btree_namelookup(&lfs3, &btree, 1*DID, "aab", 3,
&bid_, NULL, &weight_, NULL) => LFS3_CMP_EQ;
tag_ = lfs3_btree_lookup(&lfs3, &btree,
bid_, LFS3_TAG_MASK8 | LFS3_TAG_STRUCT,
bid_, LFS3_tag_MASK8 | LFS3_TAG_STRUCT,
&data_);
assert(tag_ == LFS3_TAG_DATA);
assert(bid_ == 1);
@@ -3367,7 +3367,7 @@ code = '''
lfs3_btree_namelookup(&lfs3, &btree, 2*DID, "aac", 3,
&bid_, NULL, &weight_, NULL) => LFS3_CMP_EQ;
tag_ = lfs3_btree_lookup(&lfs3, &btree,
bid_, LFS3_TAG_MASK8 | LFS3_TAG_STRUCT,
bid_, LFS3_tag_MASK8 | LFS3_TAG_STRUCT,
&data_);
assert(tag_ == LFS3_TAG_DATA);
assert(bid_ == 2);
@@ -3378,7 +3378,7 @@ code = '''
lfs3_btree_namelookup(&lfs3, &btree, 3*DID, "aad", 3,
&bid_, NULL, &weight_, NULL) => LFS3_CMP_LT;
tag_ = lfs3_btree_lookup(&lfs3, &btree,
bid_, LFS3_TAG_MASK8 | LFS3_TAG_STRUCT,
bid_, LFS3_tag_MASK8 | LFS3_TAG_STRUCT,
&data_);
assert(tag_ == LFS3_TAG_DATA);
assert(bid_ == 2);
@@ -3454,7 +3454,7 @@ code = '''
lfs3_btree_namelookup(&lfs3, &btree, i*DID, name, 3,
&bid_, NULL, &weight_, NULL) => LFS3_CMP_EQ;
tag_ = lfs3_btree_lookup(&lfs3, &btree,
bid_, LFS3_TAG_MASK8 | LFS3_TAG_STRUCT,
bid_, LFS3_tag_MASK8 | LFS3_TAG_STRUCT,
&data_);
assert(tag_ == LFS3_TAG_DATA);
assert(bid_ == i);
@@ -3566,7 +3566,7 @@ code = '''
lfs3_btree_namelookup(&lfs3, &btree, 0, sim_names[i], 3,
&bid_, NULL, &weight_, NULL) => LFS3_CMP_EQ;
tag_ = lfs3_btree_lookup(&lfs3, &btree,
bid_, LFS3_TAG_MASK8 | LFS3_TAG_STRUCT,
bid_, LFS3_tag_MASK8 | LFS3_TAG_STRUCT,
&data_);
assert(tag_ == LFS3_TAG_DATA);
assert(bid_ == i);
@@ -3649,7 +3649,7 @@ code = '''
lfs3_btree_namelookup(&lfs3, &btree, i*DID, name, 3,
&bid_, NULL, &weight_, NULL) => LFS3_CMP_EQ;
tag_ = lfs3_btree_lookup(&lfs3, &btree,
bid_, LFS3_TAG_MASK8 | LFS3_TAG_STRUCT,
bid_, LFS3_tag_MASK8 | LFS3_TAG_STRUCT,
&data_);
assert(tag_ == LFS3_TAG_DATA);
assert(bid_ == i*W+W-1);
@@ -3731,7 +3731,7 @@ code = '''
lfs3_btree_commit(&lfs3, &btree,
weighted_bid+sim_weights[bid]-1, LFS3_RATTRS(
LFS3_RATTR(
LFS3_TAG_GROW, +weight1-sim_weights[bid]),
LFS3_tag_GROW, +weight1-sim_weights[bid]),
LFS3_RATTR_BUF(
LFS3_TAG_DATA, 0,
&(uint8_t){'0'+(i % 10)}, 1),
@@ -3802,7 +3802,7 @@ code = '''
lfs3_btree_namelookup(&lfs3, &btree, 0, sim_names[i], 3,
&bid_, NULL, &weight_, NULL) => LFS3_CMP_EQ;
tag_ = lfs3_btree_lookup(&lfs3, &btree,
bid_, LFS3_TAG_MASK8 | LFS3_TAG_STRUCT,
bid_, LFS3_tag_MASK8 | LFS3_TAG_STRUCT,
&data_);
assert(tag_ == LFS3_TAG_DATA);
assert(bid_ == weighted_bid+sim_weights[i]-1);
@@ -3940,7 +3940,7 @@ code = '''
// update btree
lfs3_btree_commit(&lfs3, &btree, bid, LFS3_RATTRS(
LFS3_RATTR_BUF(
LFS3_TAG_MASK8 | LFS3_TAG_DATA, 0,
LFS3_tag_MASK8 | LFS3_TAG_DATA, 0,
&(uint8_t){'0'+(i % 10)}, 1))) => 0;
// update sim
@@ -3949,7 +3949,7 @@ code = '''
} else {
// pop from btree
lfs3_btree_commit(&lfs3, &btree, bid, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
// pop from sim
memmove(&sim[bid], &sim[bid+1], sim_size-(bid+1));
@@ -3984,7 +3984,7 @@ code = '''
lfs3_btree_namelookup(&lfs3, &btree, 0, sim_names[i], 3,
&bid_, NULL, &weight_, NULL) => LFS3_CMP_EQ;
tag_ = lfs3_btree_lookup(&lfs3, &btree,
bid_, LFS3_TAG_MASK8 | LFS3_TAG_STRUCT,
bid_, LFS3_tag_MASK8 | LFS3_TAG_STRUCT,
&data_);
assert(tag_ == LFS3_TAG_DATA);
assert(bid_ == i);
@@ -4138,10 +4138,10 @@ code = '''
lfs3_btree_commit(&lfs3, &btree,
weighted_bid+sim_weights[bid]-1, LFS3_RATTRS(
LFS3_RATTR_BUF(
LFS3_TAG_MASK8 | LFS3_TAG_DATA, 0,
LFS3_tag_MASK8 | LFS3_TAG_DATA, 0,
&(uint8_t){'0'+(i % 10)}, 1),
LFS3_RATTR(
LFS3_TAG_GROW, +weight-sim_weights[bid]))) => 0;
LFS3_tag_GROW, +weight-sim_weights[bid]))) => 0;
// update sim
sim[bid] = '0'+(i % 10);
@@ -4152,7 +4152,7 @@ code = '''
lfs3_btree_commit(&lfs3, &btree,
weighted_bid+sim_weights[bid]-1, LFS3_RATTRS(
LFS3_RATTR(
LFS3_TAG_RM, -sim_weights[bid]))) => 0;
LFS3_tag_RM, -sim_weights[bid]))) => 0;
// pop from sim
memmove(&sim[bid], &sim[bid+1], sim_size-(bid+1));
@@ -4210,7 +4210,7 @@ code = '''
lfs3_btree_namelookup(&lfs3, &btree, 0, sim_names[i], 3,
&bid_, NULL, &weight_, NULL) => LFS3_CMP_EQ;
tag_ = lfs3_btree_lookup(&lfs3, &btree,
bid_, LFS3_TAG_MASK8 | LFS3_TAG_STRUCT,
bid_, LFS3_tag_MASK8 | LFS3_TAG_STRUCT,
&data_);
assert(tag_ == LFS3_TAG_DATA);
assert(bid_ == weighted_bid+sim_weights[i]-1);
+5 -5
View File
@@ -979,7 +979,7 @@ code = '''
// delete any bshrub/btree
lfs3_mdir_commit(&lfs3, &file.b.h.mdir, LFS3_RATTRS(
LFS3_RATTR(
LFS3_TAG_RM | LFS3_TAG_MASK8 | LFS3_TAG_STRUCT, 0))) => 0;
LFS3_tag_RM | LFS3_tag_MASK8 | LFS3_TAG_STRUCT, 0))) => 0;
lfs3_file_close(&lfs3, &file) => 0;
@@ -1107,11 +1107,11 @@ code = '''
.bshrub=&file.b,
.rid=0,
.rattrs=((lfs3_rattr_t[]){
LFS3_RATTR(LFS3_TAG_RM, -1)}),
LFS3_RATTR(LFS3_tag_RM, -1)}),
.rattr_count=1})))) => 0;
lfs3_mdir_commit(&lfs3, &file.b.h.mdir, LFS3_RATTRS(
LFS3_RATTR_SHRUB(
LFS3_TAG_MASK8 | LFS3_TAG_BSHRUB, 0,
LFS3_tag_MASK8 | LFS3_TAG_BSHRUB, 0,
&file.b.b_))) => 0;
lfs3_file_close(&lfs3, &file) => 0;
@@ -1231,10 +1231,10 @@ code = '''
lfs3_rbyd_commit(&lfs3, &file.b.b.r, 0, LFS3_RATTRS(
LFS3_RATTR_BUF(LFS3_TAG_DATA, +1, "?", 1))) => 0;
lfs3_rbyd_commit(&lfs3, &file.b.b.r, 0, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
lfs3_mdir_commit(&lfs3, &file.b.h.mdir, LFS3_RATTRS(
LFS3_RATTR_BTREE(
LFS3_TAG_MASK8 | LFS3_TAG_BTREE, 0,
LFS3_tag_MASK8 | LFS3_TAG_BTREE, 0,
&file.b.b))) => 0;
lfs3_file_close(&lfs3, &file) => 0;
+2 -2
View File
@@ -5001,7 +5001,7 @@ code = '''
printf("pos = %d, %d\n", pos, weight);
lfs3_bshrub_commit(&lfs3, &file.b, pos, LFS3_RATTRS(
LFS3_RATTR_DATA(
LFS3_TAG_GROW | tag, -(weight/2),
LFS3_tag_GROW | tag, -(weight/2),
&data))) => 0;
pos = pos - (weight/2) + 1;
@@ -5111,7 +5111,7 @@ code = '''
printf("pos = %d, %d\n", pos, weight);
lfs3_bshrub_commit(&lfs3, &file.b, pos, LFS3_RATTRS(
LFS3_RATTR_DATA(
LFS3_TAG_GROW | tag, -(weight/2),
LFS3_tag_GROW | tag, -(weight/2),
&data))) => 0;
pos = pos - (weight/2) + 1;
+10 -10
View File
@@ -705,7 +705,7 @@ code = '''
lfs3_mount(&lfs3, LFS3_M_RDWR, CFG) => 0;
lfs3_mdir_commit(&lfs3, &lfs3.mroot, LFS3_RATTRS(
LFS3_RATTR(
LFS3_TAG_RM | LFS3_TAG_MAGIC, 0))) => 0;
LFS3_tag_RM | LFS3_TAG_MAGIC, 0))) => 0;
lfs3_unmount(&lfs3) => 0;
// mount should now fail
@@ -1291,7 +1291,7 @@ code = '''
&mdir, &did) => LFS3_TAG_REG;
lfs3_mdir_commit(&lfs3, &mdir, LFS3_RATTRS(
LFS3_RATTR_CAT(
LFS3_TAG_MASK8 | (LFS3_TAG_NAME + 0x13), 0,
LFS3_tag_MASK8 | (LFS3_TAG_NAME + 0x13), 0,
lfs3_data_fromleb128(did, (uint8_t[LFS3_LEB128_DSIZE]){0}),
LFS3_DATA_BUF(path, lfs3_path_namelen(path))))) => 0;
lfs3_unmount(&lfs3) => 0;
@@ -1378,7 +1378,7 @@ code = '''
&mdir, &did) => LFS3_TAG_REG;
lfs3_mdir_commit(&lfs3, &mdir, LFS3_RATTRS(
LFS3_RATTR_CAT(
LFS3_TAG_MASK8 | (LFS3_TAG_NAME + 0x13), 0,
LFS3_tag_MASK8 | (LFS3_TAG_NAME + 0x13), 0,
lfs3_data_fromleb128(did, (uint8_t[LFS3_LEB128_DSIZE]){0}),
LFS3_DATA_BUF(path, lfs3_path_namelen(path))))) => 0;
lfs3_unmount(&lfs3) => 0;
@@ -1484,7 +1484,7 @@ code = '''
&mdir, &did) => LFS3_TAG_REG;
lfs3_mdir_commit(&lfs3, &mdir, LFS3_RATTRS(
LFS3_RATTR_CAT(
LFS3_TAG_MASK8 | (LFS3_TAG_NAME + 0x13), 0,
LFS3_tag_MASK8 | (LFS3_TAG_NAME + 0x13), 0,
lfs3_data_fromleb128(did, (uint8_t[LFS3_LEB128_DSIZE]){0}),
LFS3_DATA_BUF(path, lfs3_path_namelen(path))))) => 0;
lfs3_unmount(&lfs3) => 0;
@@ -1593,7 +1593,7 @@ code = '''
&mdir, &did) => LFS3_TAG_REG;
lfs3_mdir_commit(&lfs3, &mdir, LFS3_RATTRS(
LFS3_RATTR_CAT(
LFS3_TAG_MASK8 | (LFS3_TAG_NAME + 0x13), 0,
LFS3_tag_MASK8 | (LFS3_TAG_NAME + 0x13), 0,
lfs3_data_fromleb128(did, (uint8_t[LFS3_LEB128_DSIZE]){0}),
LFS3_DATA_BUF(path, lfs3_path_namelen(path))))) => 0;
lfs3_unmount(&lfs3) => 0;
@@ -1702,7 +1702,7 @@ code = '''
&mdir, &did) => LFS3_TAG_REG;
lfs3_mdir_commit(&lfs3, &mdir, LFS3_RATTRS(
LFS3_RATTR_CAT(
LFS3_TAG_MASK8 | (LFS3_TAG_NAME + 0x13), 0,
LFS3_tag_MASK8 | (LFS3_TAG_NAME + 0x13), 0,
lfs3_data_fromleb128(did, (uint8_t[LFS3_LEB128_DSIZE]){0}),
LFS3_DATA_BUF(path, lfs3_path_namelen(path))))) => 0;
path = "c";
@@ -1710,7 +1710,7 @@ code = '''
&mdir, &did) => LFS3_TAG_REG;
lfs3_mdir_commit(&lfs3, &mdir, LFS3_RATTRS(
LFS3_RATTR_CAT(
LFS3_TAG_MASK8 | (LFS3_TAG_NAME + 0x13), 0,
LFS3_tag_MASK8 | (LFS3_TAG_NAME + 0x13), 0,
lfs3_data_fromleb128(did, (uint8_t[LFS3_LEB128_DSIZE]){0}),
LFS3_DATA_BUF(path, lfs3_path_namelen(path))))) => 0;
lfs3_unmount(&lfs3) => 0;
@@ -1819,7 +1819,7 @@ code = '''
&mdir, &did) => LFS3_TAG_REG;
lfs3_mdir_commit(&lfs3, &mdir, LFS3_RATTRS(
LFS3_RATTR_CAT(
LFS3_TAG_MASK8 | (LFS3_TAG_NAME + 0x13), 0,
LFS3_tag_MASK8 | (LFS3_TAG_NAME + 0x13), 0,
lfs3_data_fromleb128(did, (uint8_t[LFS3_LEB128_DSIZE]){0}),
LFS3_DATA_BUF(path, lfs3_path_namelen(path))))) => 0;
lfs3_unmount(&lfs3) => 0;
@@ -1928,7 +1928,7 @@ code = '''
&mdir, &did) => LFS3_TAG_REG;
lfs3_mdir_commit(&lfs3, &mdir, LFS3_RATTRS(
LFS3_RATTR_CAT(
LFS3_TAG_MASK8 | (LFS3_TAG_NAME + 0x13), 0,
LFS3_tag_MASK8 | (LFS3_TAG_NAME + 0x13), 0,
lfs3_data_fromleb128(did, (uint8_t[LFS3_LEB128_DSIZE]){0}),
LFS3_DATA_BUF(path, lfs3_path_namelen(path))))) => 0;
lfs3_unmount(&lfs3) => 0;
@@ -2037,7 +2037,7 @@ code = '''
&mdir, &did) => LFS3_TAG_REG;
lfs3_mdir_commit(&lfs3, &mdir, LFS3_RATTRS(
LFS3_RATTR_CAT(
LFS3_TAG_MASK8 | (LFS3_TAG_NAME + 0x13), 0,
LFS3_tag_MASK8 | (LFS3_TAG_NAME + 0x13), 0,
lfs3_data_fromleb128(did, (uint8_t[LFS3_LEB128_DSIZE]){0}),
LFS3_DATA_BUF(path, lfs3_path_namelen(path))))) => 0;
lfs3_unmount(&lfs3) => 0;
+11 -11
View File
@@ -737,7 +737,7 @@ code = '''
lfs3_mtree_namelookup(&lfs3, 0, (const char*)buffer+1, SIZE-1,
&mdir, NULL) => LFS3_TAG_REG;
lfs3_mdir_commit(&lfs3, &mdir, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
assert(mdir.r.weight == 0);
// assert mdir was dropped
@@ -833,7 +833,7 @@ code = '''
// force mdir to compact while we're removing
mdir.r.eoff = -1;
lfs3_mdir_commit(&lfs3, &mdir, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
assert(mdir.r.weight == 0);
// assert mdir was dropped
@@ -920,7 +920,7 @@ code = '''
lfs3.mroot.r.eoff = -1;
mdir.r.eoff = -1;
lfs3_mdir_commit(&lfs3, &mdir, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
assert(mdir.r.weight == 2);
// assert split/drop worked out
@@ -1016,7 +1016,7 @@ code = '''
// force mdir to compact while we're removing
mdir.r.eoff = -1;
lfs3_mdir_commit(&lfs3, &mdir, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
assert(mdir.r.weight == 1);
// assert split/drop worked out
@@ -1136,7 +1136,7 @@ code = '''
// force mdir to compact while we're removing
mdir.r.eoff = -1;
lfs3_mdir_commit(&lfs3, &mdir, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
assert(mdir.r.weight == 1);
// assert split/drop worked out
@@ -1271,7 +1271,7 @@ code = '''
mdir.r.eoff = -1;
}
lfs3_mdir_commit(&lfs3, &mdir, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
}
}
@@ -2437,7 +2437,7 @@ code = '''
// force mdir to compact while we're removing
mdir.r.eoff = -1;
lfs3_mdir_commit(&lfs3, &mdir, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
assert(mdir.r.weight == 0);
// assert mroot relocated
assert(lfs3_mdir_cmp(&old_mroot, &lfs3.mroot) != 0);
@@ -2790,7 +2790,7 @@ code = '''
mdir.r.eoff = -1;
}
lfs3_mdir_commit(&lfs3, &mdir, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
}
}
@@ -2941,7 +2941,7 @@ code = '''
lfs3_mtree_namelookup(&lfs3, 0, "a", 1,
&mdir, NULL) => LFS3_TAG_REG;
lfs3_mdir_commit(&lfs3, &mdir, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
assert(mdir.r.weight == 2);
// assert neighbor was removed
@@ -2991,7 +2991,7 @@ code = '''
lfs3_mtree_namelookup(&lfs3, 0, "b", 1,
&mdir, NULL) => LFS3_TAG_REG;
lfs3_mdir_commit(&lfs3, &mdir, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
assert(mdir.r.weight == 2);
// assert neighbor was removed
@@ -3613,7 +3613,7 @@ code = '''
// now remove the middle entry, forcing a drop
lfs3_mdir_commit(&lfs3, &mdir, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
assert(mdir.r.weight == 0);
// assert mdir was dropped correctly
+130 -130
View File
@@ -3000,7 +3000,7 @@ code = '''
"\xaa\xaa\xaa\xaa", 4))) => 0;
lfs3_rbyd_commit(&lfs3, &rbyd, -1, LFS3_RATTRS(
LFS3_RATTR(
LFS3_TAG_RM | LFS3_TAG_ATTR(1), 0))) => 0;
LFS3_tag_RM | LFS3_TAG_ATTR(1), 0))) => 0;
lfs3_rbyd_lookupnext(&lfs3, &rbyd, -1, LFS3_TAG_ATTR(1),
&rid_, NULL, &data_) => LFS3_ERR_NOENT;
@@ -3025,7 +3025,7 @@ code = '''
"\xbb\xbb\xbb\xbb", 4))) => 0;
lfs3_rbyd_commit(&lfs3, &rbyd, -1, LFS3_RATTRS(
LFS3_RATTR(
LFS3_TAG_RM | LFS3_TAG_ATTR(1), 0))) => 0;
LFS3_tag_RM | LFS3_TAG_ATTR(1), 0))) => 0;
tag_ = lfs3_rbyd_lookupnext(&lfs3, &rbyd, -1, LFS3_TAG_ATTR(1),
&rid_, NULL, &data_);
@@ -3066,7 +3066,7 @@ code = '''
"\xbb\xbb\xbb\xbb", 4))) => 0;
lfs3_rbyd_commit(&lfs3, &rbyd, -1, LFS3_RATTRS(
LFS3_RATTR(
LFS3_TAG_RM | LFS3_TAG_ATTR(2), 0))) => 0;
LFS3_tag_RM | LFS3_TAG_ATTR(2), 0))) => 0;
tag_ = lfs3_rbyd_lookupnext(&lfs3, &rbyd, -1, LFS3_TAG_ATTR(1),
&rid_, NULL, &data_);
@@ -3170,7 +3170,7 @@ code = '''
lfs3_rbyd_commit(&lfs3, &rbyd, -1, LFS3_RATTRS(
LFS3_RATTR(
LFS3_TAG_RM | LFS3_TAG_ATTR(j+1), 0))) => 0;
LFS3_tag_RM | LFS3_TAG_ATTR(j+1), 0))) => 0;
lfs3_rbyd_fetch(&lfs3, &rbyd, rbyd.blocks[0], CFG->block_size) => 0;
for (unsigned k = 0; k < N; k++) {
@@ -3317,7 +3317,7 @@ code = '''
lfs3_rbyd_commit(&lfs3, &rbyd, -1, LFS3_RATTRS(
LFS3_RATTR(
LFS3_TAG_RM | LFS3_TAG_ATTR(j+1), 0))) => 0;
LFS3_tag_RM | LFS3_TAG_ATTR(j+1), 0))) => 0;
// try traversing over the tags
lfs3_rbyd_fetch(&lfs3, &rbyd, rbyd.blocks[0], CFG->block_size) => 0;
@@ -3401,7 +3401,7 @@ code = '''
// try to remove tags that aren't there, this should do nothing
lfs3_rbyd_commit(&lfs3, &rbyd, -1, LFS3_RATTRS(
LFS3_RATTR(
LFS3_TAG_RM | LFS3_TAG_ATTR(1), 0))) => 0;
LFS3_tag_RM | LFS3_TAG_ATTR(1), 0))) => 0;
tag_ = lfs3_rbyd_lookupnext(&lfs3, &rbyd, -1, LFS3_TAG_ATTR(1),
&rid_, NULL, &data_);
assert(tag_ == LFS3_TAG_ATTR(2));
@@ -3427,7 +3427,7 @@ code = '''
lfs3_rbyd_commit(&lfs3, &rbyd, -1, LFS3_RATTRS(
LFS3_RATTR(
LFS3_TAG_RM | LFS3_TAG_ATTR(3), 0))) => 0;
LFS3_tag_RM | LFS3_TAG_ATTR(3), 0))) => 0;
tag_ = lfs3_rbyd_lookupnext(&lfs3, &rbyd, -1, LFS3_TAG_ATTR(1),
&rid_, NULL, &data_);
assert(tag_ == LFS3_TAG_ATTR(2));
@@ -3453,7 +3453,7 @@ code = '''
lfs3_rbyd_commit(&lfs3, &rbyd, -1, LFS3_RATTRS(
LFS3_RATTR(
LFS3_TAG_RM | LFS3_TAG_ATTR(5), 0))) => 0;
LFS3_tag_RM | LFS3_TAG_ATTR(5), 0))) => 0;
tag_ = lfs3_rbyd_lookupnext(&lfs3, &rbyd, -1, LFS3_TAG_ATTR(1),
&rid_, NULL, &data_);
assert(tag_ == LFS3_TAG_ATTR(2));
@@ -3543,11 +3543,11 @@ code = '''
// remove several attributes
lfs3_rbyd_commit(&lfs3, &rbyd, -1, LFS3_RATTRS(
LFS3_RATTR(
LFS3_TAG_RM | LFS3_TAG_ATTR(1), 0),
LFS3_tag_RM | LFS3_TAG_ATTR(1), 0),
LFS3_RATTR(
LFS3_TAG_RM | LFS3_TAG_ATTR(3), 0),
LFS3_tag_RM | LFS3_TAG_ATTR(3), 0),
LFS3_RATTR(
LFS3_TAG_RM | LFS3_TAG_ATTR(5), 0))) => 0;
LFS3_tag_RM | LFS3_TAG_ATTR(5), 0))) => 0;
tag_ = lfs3_rbyd_lookupnext(&lfs3, &rbyd, -1, LFS3_TAG_ATTR(1),
&rid_, NULL, &data_);
@@ -3575,7 +3575,7 @@ code = '''
// try to remove tags that aren't there, this should do nothing
lfs3_rbyd_commit(&lfs3, &rbyd, -1, LFS3_RATTRS(
LFS3_RATTR(
LFS3_TAG_RM | LFS3_TAG_ATTR(1), 0))) => 0;
LFS3_tag_RM | LFS3_TAG_ATTR(1), 0))) => 0;
tag_ = lfs3_rbyd_lookupnext(&lfs3, &rbyd, -1, LFS3_TAG_ATTR(1),
&rid_, NULL, &data_);
assert(tag_ == LFS3_TAG_ATTR(2));
@@ -3601,7 +3601,7 @@ code = '''
lfs3_rbyd_commit(&lfs3, &rbyd, -1, LFS3_RATTRS(
LFS3_RATTR(
LFS3_TAG_RM | LFS3_TAG_ATTR(3), 0))) => 0;
LFS3_tag_RM | LFS3_TAG_ATTR(3), 0))) => 0;
tag_ = lfs3_rbyd_lookupnext(&lfs3, &rbyd, -1, LFS3_TAG_ATTR(1),
&rid_, NULL, &data_);
assert(tag_ == LFS3_TAG_ATTR(2));
@@ -3627,7 +3627,7 @@ code = '''
lfs3_rbyd_commit(&lfs3, &rbyd, -1, LFS3_RATTRS(
LFS3_RATTR(
LFS3_TAG_RM | LFS3_TAG_ATTR(5), 0))) => 0;
LFS3_tag_RM | LFS3_TAG_ATTR(5), 0))) => 0;
tag_ = lfs3_rbyd_lookupnext(&lfs3, &rbyd, -1, LFS3_TAG_ATTR(1),
&rid_, NULL, &data_);
assert(tag_ == LFS3_TAG_ATTR(2));
@@ -3655,7 +3655,7 @@ code = '''
// these removes still commit to the rbyd)
lfs3_rbyd_commit(&lfs3, &rbyd, -1, LFS3_RATTRS(
LFS3_RATTR(
LFS3_TAG_RM | LFS3_TAG_ATTR(1), 0))) => 0;
LFS3_tag_RM | LFS3_TAG_ATTR(1), 0))) => 0;
tag_ = lfs3_rbyd_lookupnext(&lfs3, &rbyd, -1, LFS3_TAG_ATTR(1),
&rid_, NULL, &data_);
assert(tag_ == LFS3_TAG_ATTR(2));
@@ -3681,7 +3681,7 @@ code = '''
lfs3_rbyd_commit(&lfs3, &rbyd, -1, LFS3_RATTRS(
LFS3_RATTR(
LFS3_TAG_RM | LFS3_TAG_ATTR(3), 0))) => 0;
LFS3_tag_RM | LFS3_TAG_ATTR(3), 0))) => 0;
tag_ = lfs3_rbyd_lookupnext(&lfs3, &rbyd, -1, LFS3_TAG_ATTR(1),
&rid_, NULL, &data_);
assert(tag_ == LFS3_TAG_ATTR(2));
@@ -3707,7 +3707,7 @@ code = '''
lfs3_rbyd_commit(&lfs3, &rbyd, -1, LFS3_RATTRS(
LFS3_RATTR(
LFS3_TAG_RM | LFS3_TAG_ATTR(5), 0))) => 0;
LFS3_tag_RM | LFS3_TAG_ATTR(5), 0))) => 0;
tag_ = lfs3_rbyd_lookupnext(&lfs3, &rbyd, -1, LFS3_TAG_ATTR(1),
&rid_, NULL, &data_);
assert(tag_ == LFS3_TAG_ATTR(2));
@@ -3783,7 +3783,7 @@ code = '''
"\xaa\xaa\xaa\xaa", 4))) => 0;
lfs3_rbyd_commit(&lfs3, &rbyd, -1, LFS3_RATTRS(
LFS3_RATTR(
LFS3_TAG_RM | LFS3_TAG_ATTR(1), 0))) => 0;
LFS3_tag_RM | LFS3_TAG_ATTR(1), 0))) => 0;
lfs3_rbyd_lookupnext(&lfs3, &rbyd, -1, LFS3_TAG_ATTR(1),
&rid_, NULL, &data_) => LFS3_ERR_NOENT;
@@ -3808,9 +3808,9 @@ code = '''
"\xbb\xbb\xbb\xbb", 4))) => 0;
lfs3_rbyd_commit(&lfs3, &rbyd, -1, LFS3_RATTRS(
LFS3_RATTR(
LFS3_TAG_RM | LFS3_TAG_ATTR(1), 0),
LFS3_tag_RM | LFS3_TAG_ATTR(1), 0),
LFS3_RATTR(
LFS3_TAG_RM | LFS3_TAG_ATTR(2), 0))) => 0;
LFS3_tag_RM | LFS3_TAG_ATTR(2), 0))) => 0;
lfs3_rbyd_lookupnext(&lfs3, &rbyd, -1, LFS3_TAG_ATTR(1),
&rid_, NULL, &data_) => LFS3_ERR_NOENT;
@@ -3835,9 +3835,9 @@ code = '''
"\xbb\xbb\xbb\xbb", 4))) => 0;
lfs3_rbyd_commit(&lfs3, &rbyd, -1, LFS3_RATTRS(
LFS3_RATTR(
LFS3_TAG_RM | LFS3_TAG_ATTR(2), 0),
LFS3_tag_RM | LFS3_TAG_ATTR(2), 0),
LFS3_RATTR(
LFS3_TAG_RM | LFS3_TAG_ATTR(1), 0))) => 0;
LFS3_tag_RM | LFS3_TAG_ATTR(1), 0))) => 0;
lfs3_rbyd_lookupnext(&lfs3, &rbyd, -1, LFS3_TAG_ATTR(1),
&rid_, NULL, &data_) => LFS3_ERR_NOENT;
@@ -3930,7 +3930,7 @@ code = '''
for (unsigned j = 0; j < N; j++) {
lfs3_rbyd_commit(&lfs3, &rbyd, -1, LFS3_RATTRS(
LFS3_RATTR(
LFS3_TAG_RM | LFS3_TAG_ATTR(perm[j]+1), 0))) => 0;
LFS3_tag_RM | LFS3_TAG_ATTR(perm[j]+1), 0))) => 0;
}
// check that all tags are now removed
@@ -4051,7 +4051,7 @@ code = '''
// update our rbyd
lfs3_rbyd_commit(&lfs3, &rbyd, -1, LFS3_RATTRS(
LFS3_RATTR(
LFS3_TAG_RM | LFS3_TAG_ATTR(rattr), 0))) => 0;
LFS3_tag_RM | LFS3_TAG_ATTR(rattr), 0))) => 0;
}
}
@@ -6401,7 +6401,7 @@ code = '''
lfs3_rbyd_commit(&lfs3, &rbyd, j/M, LFS3_RATTRS(
LFS3_RATTR(
LFS3_TAG_RM | LFS3_TAG_ATTR((j%M)+1), 0))) => 0;
LFS3_tag_RM | LFS3_TAG_ATTR((j%M)+1), 0))) => 0;
lfs3_rbyd_fetch(&lfs3, &rbyd, rbyd.blocks[0], CFG->block_size) => 0;
for (unsigned k = 0; k < N; k++) {
@@ -6599,7 +6599,7 @@ code = '''
for (unsigned j = 0; j < N*M; j++) {
lfs3_rbyd_commit(&lfs3, &rbyd, perm[j]/M, LFS3_RATTRS(
LFS3_RATTR(
LFS3_TAG_RM | LFS3_TAG_ATTR(perm[j]%M+1), 0))) => 0;
LFS3_tag_RM | LFS3_TAG_ATTR(perm[j]%M+1), 0))) => 0;
}
// check that all tags have been removed
@@ -7086,7 +7086,7 @@ code = '''
LFS3_TAG_DATA, +1,
"\xbb\xbb\xbb\xbb", 4))) => 0;
lfs3_rbyd_commit(&lfs3, &rbyd, 1, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
assert(rbyd.weight == 1);
lfs3_rbyd_lookup(&lfs3, &rbyd, 0, LFS3_TAG_DATA,
@@ -7116,7 +7116,7 @@ code = '''
LFS3_TAG_DATA, +1,
"\xbb\xbb\xbb\xbb", 4))) => 0;
lfs3_rbyd_commit(&lfs3, &rbyd, 0, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
assert(rbyd.weight == 1);
lfs3_rbyd_lookup(&lfs3, &rbyd, 0, LFS3_TAG_DATA,
@@ -7149,7 +7149,7 @@ code = '''
LFS3_TAG_DATA, +1,
"\xcc\xcc\xcc\xcc", 4))) => 0;
lfs3_rbyd_commit(&lfs3, &rbyd, 2, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
assert(rbyd.weight == 2);
lfs3_rbyd_lookup(&lfs3, &rbyd, 0, LFS3_TAG_DATA,
@@ -7188,7 +7188,7 @@ code = '''
LFS3_TAG_DATA, +1,
"\xcc\xcc\xcc\xcc", 4))) => 0;
lfs3_rbyd_commit(&lfs3, &rbyd, 0, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
assert(rbyd.weight == 2);
lfs3_rbyd_lookup(&lfs3, &rbyd, 0, LFS3_TAG_DATA,
@@ -7227,7 +7227,7 @@ code = '''
LFS3_TAG_DATA, +1,
"\xcc\xcc\xcc\xcc", 4))) => 0;
lfs3_rbyd_commit(&lfs3, &rbyd, 1, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
assert(rbyd.weight == 2);
lfs3_rbyd_lookup(&lfs3, &rbyd, 0, LFS3_TAG_DATA,
@@ -7287,7 +7287,7 @@ code = '''
LFS3_TAG_ATTR(1), 0,
"\xbb\xbb", 2))) => 0;
lfs3_rbyd_commit(&lfs3, &rbyd, 1, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
assert(rbyd.weight == 1);
lfs3_rbyd_lookup(&lfs3, &rbyd, 0, LFS3_TAG_DATA,
@@ -7335,7 +7335,7 @@ code = '''
LFS3_TAG_ATTR(1), 0,
"\xbb\xbb", 2))) => 0;
lfs3_rbyd_commit(&lfs3, &rbyd, 0, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
assert(rbyd.weight == 1);
lfs3_rbyd_lookup(&lfs3, &rbyd, 0, LFS3_TAG_DATA,
@@ -7389,7 +7389,7 @@ code = '''
LFS3_TAG_ATTR(1), 0,
"\xcc\xcc", 2))) => 0;
lfs3_rbyd_commit(&lfs3, &rbyd, 2, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
assert(rbyd.weight == 2);
lfs3_rbyd_lookup(&lfs3, &rbyd, 0, LFS3_TAG_DATA,
@@ -7459,7 +7459,7 @@ code = '''
LFS3_TAG_ATTR(1), 0,
"\xcc\xcc", 2))) => 0;
lfs3_rbyd_commit(&lfs3, &rbyd, 0, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
assert(rbyd.weight == 2);
lfs3_rbyd_lookup(&lfs3, &rbyd, 0, LFS3_TAG_DATA,
@@ -7529,7 +7529,7 @@ code = '''
LFS3_TAG_ATTR(1), 0,
"\xcc\xcc", 2))) => 0;
lfs3_rbyd_commit(&lfs3, &rbyd, 1, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
assert(rbyd.weight == 2);
lfs3_rbyd_lookup(&lfs3, &rbyd, 0, LFS3_TAG_DATA,
@@ -7668,7 +7668,7 @@ code = '''
"\xee\xee", 2))) => 0;
lfs3_rbyd_commit(&lfs3, &rbyd, 1, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
assert(rbyd.weight == 2);
lfs3_rbyd_lookup(&lfs3, &rbyd, 0, LFS3_TAG_DATA,
@@ -8018,7 +8018,7 @@ code = '''
"\xee\xee\xee\xee", 4))) => 0;
lfs3_rbyd_commit(&lfs3, &rbyd, 1, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
assert(rbyd.weight == 2);
lfs3_rbyd_lookup(&lfs3, &rbyd, 0, LFS3_TAG_DATA,
@@ -8364,7 +8364,7 @@ code = '''
"\xee\xee", 2))) => 0;
lfs3_rbyd_commit(&lfs3, &rbyd, 1, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
assert(rbyd.weight == 2);
lfs3_rbyd_lookup(&lfs3, &rbyd, 0, LFS3_TAG_DATA,
@@ -8797,7 +8797,7 @@ code = '''
"\xee\xee\xee\xee", 4))) => 0;
lfs3_rbyd_commit(&lfs3, &rbyd, 1, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
assert(rbyd.weight == 2);
lfs3_rbyd_lookup(&lfs3, &rbyd, 0, LFS3_TAG_DATA,
@@ -9214,7 +9214,7 @@ code = '''
"\xaa\xaa", 2))) => 0;
lfs3_rbyd_commit(&lfs3, &rbyd, 1, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
assert(rbyd.weight == 2);
lfs3_rbyd_lookup(&lfs3, &rbyd, 0, LFS3_TAG_DATA,
@@ -9632,7 +9632,7 @@ code = '''
"\xcc\xcc", 2))) => 0;
lfs3_rbyd_commit(&lfs3, &rbyd, 1, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
assert(rbyd.weight == 2);
lfs3_rbyd_lookup(&lfs3, &rbyd, 0, LFS3_TAG_DATA,
@@ -10018,7 +10018,7 @@ code = '''
"\xcc\xcc\xcc\xcc", 4))) => 0;
lfs3_rbyd_commit(&lfs3, &rbyd, 1, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
assert(rbyd.weight == 2);
lfs3_rbyd_lookup(&lfs3, &rbyd, 0, LFS3_TAG_DATA,
@@ -10447,7 +10447,7 @@ code = '''
"\xaa\xaa", 2))) => 0;
lfs3_rbyd_commit(&lfs3, &rbyd, 1, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
assert(rbyd.weight == 2);
lfs3_rbyd_lookup(&lfs3, &rbyd, 0, LFS3_TAG_DATA,
@@ -10986,7 +10986,7 @@ code = '''
"\xee\xee", 2))) => 0;
lfs3_rbyd_commit(&lfs3, &rbyd, 1, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
assert(rbyd.weight == 2);
lfs3_rbyd_lookup(&lfs3, &rbyd, 0, LFS3_TAG_DATA,
@@ -11477,7 +11477,7 @@ code = '''
NULL) => 0;
lfs3_rbyd_commit(&lfs3, &rbyd, j, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
assert(rbyd.weight == N-1);
lfs3_rbyd_fetch(&lfs3, &rbyd, rbyd.blocks[0], CFG->block_size) => 0;
@@ -11649,7 +11649,7 @@ code = '''
NULL) => 0;
lfs3_rbyd_commit(&lfs3, &rbyd, j, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
assert(rbyd.weight == N-1);
lfs3_rbyd_fetch(&lfs3, &rbyd, rbyd.blocks[0], CFG->block_size) => 0;
@@ -11845,7 +11845,7 @@ code = '''
NULL) => 0;
lfs3_rbyd_commit(&lfs3, &rbyd, j, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
assert(rbyd.weight == N-1);
// try traversing over the tags
@@ -11983,7 +11983,7 @@ code = '''
NULL) => 0;
lfs3_rbyd_commit(&lfs3, &rbyd, j, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
assert(rbyd.weight == N-1);
// try traversing over the tags
@@ -12061,7 +12061,7 @@ code = '''
LFS3_TAG_DATA, +1,
"\xaa\xaa\xaa\xaa", 4))) => 0;
lfs3_rbyd_commit(&lfs3, &rbyd, 0, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
assert(rbyd.weight == 0);
lfs3_rbyd_lookup(&lfs3, &rbyd, 0, LFS3_TAG_DATA,
@@ -12083,8 +12083,8 @@ code = '''
LFS3_TAG_DATA, +1,
"\xbb\xbb\xbb\xbb", 4))) => 0;
lfs3_rbyd_commit(&lfs3, &rbyd, 1, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1),
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1),
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
assert(rbyd.weight == 0);
lfs3_rbyd_lookup(&lfs3, &rbyd, 0, LFS3_TAG_DATA,
@@ -12106,9 +12106,9 @@ code = '''
LFS3_TAG_DATA, +1,
"\xbb\xbb\xbb\xbb", 4))) => 0;
lfs3_rbyd_commit(&lfs3, &rbyd, 0, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
lfs3_rbyd_commit(&lfs3, &rbyd, 0, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
assert(rbyd.weight == 0);
lfs3_rbyd_lookup(&lfs3, &rbyd, 0, LFS3_TAG_DATA,
@@ -12133,9 +12133,9 @@ code = '''
LFS3_TAG_DATA, +1,
"\xcc\xcc\xcc\xcc", 4))) => 0;
lfs3_rbyd_commit(&lfs3, &rbyd, 2, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1),
LFS3_RATTR(LFS3_TAG_RM, -1),
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1),
LFS3_RATTR(LFS3_tag_RM, -1),
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
assert(rbyd.weight == 0);
lfs3_rbyd_lookup(&lfs3, &rbyd, 0, LFS3_TAG_DATA,
@@ -12160,11 +12160,11 @@ code = '''
LFS3_TAG_DATA, +1,
"\xcc\xcc\xcc\xcc", 4))) => 0;
lfs3_rbyd_commit(&lfs3, &rbyd, 0, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
lfs3_rbyd_commit(&lfs3, &rbyd, 0, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
lfs3_rbyd_commit(&lfs3, &rbyd, 0, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
assert(rbyd.weight == 0);
lfs3_rbyd_lookup(&lfs3, &rbyd, 0, LFS3_TAG_DATA,
@@ -12204,7 +12204,7 @@ code = '''
LFS3_TAG_ATTR(1), 0,
"\xaa\xaa", 2))) => 0;
lfs3_rbyd_commit(&lfs3, &rbyd, 0, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
assert(rbyd.weight == 0);
lfs3_rbyd_lookup(&lfs3, &rbyd, 0, LFS3_TAG_DATA,
@@ -12232,8 +12232,8 @@ code = '''
LFS3_TAG_ATTR(1), 0,
"\xbb\xbb", 2))) => 0;
lfs3_rbyd_commit(&lfs3, &rbyd, 1, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1),
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1),
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
assert(rbyd.weight == 0);
lfs3_rbyd_lookup(&lfs3, &rbyd, 0, LFS3_TAG_DATA,
@@ -12261,9 +12261,9 @@ code = '''
LFS3_TAG_ATTR(1), 0,
"\xbb\xbb", 2))) => 0;
lfs3_rbyd_commit(&lfs3, &rbyd, 0, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
lfs3_rbyd_commit(&lfs3, &rbyd, 0, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
assert(rbyd.weight == 0);
lfs3_rbyd_lookup(&lfs3, &rbyd, 0, LFS3_TAG_DATA,
@@ -12297,9 +12297,9 @@ code = '''
LFS3_TAG_ATTR(1), 0,
"\xcc\xcc", 2))) => 0;
lfs3_rbyd_commit(&lfs3, &rbyd, 2, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1),
LFS3_RATTR(LFS3_TAG_RM, -1),
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1),
LFS3_RATTR(LFS3_tag_RM, -1),
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
assert(rbyd.weight == 0);
lfs3_rbyd_lookup(&lfs3, &rbyd, 0, LFS3_TAG_DATA,
@@ -12333,11 +12333,11 @@ code = '''
LFS3_TAG_ATTR(1), 0,
"\xcc\xcc", 2))) => 0;
lfs3_rbyd_commit(&lfs3, &rbyd, 0, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
lfs3_rbyd_commit(&lfs3, &rbyd, 0, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
lfs3_rbyd_commit(&lfs3, &rbyd, 0, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
assert(rbyd.weight == 0);
lfs3_rbyd_lookup(&lfs3, &rbyd, 0, LFS3_TAG_DATA,
@@ -12444,7 +12444,7 @@ code = '''
lfs3_size_t rbyd_weight_before = rbyd.weight;
lfs3_rbyd_commit(&lfs3, &rbyd, rid, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
assert(rbyd.weight == rbyd_weight_before-1);
}
@@ -12598,7 +12598,7 @@ code = '''
lfs3_size_t rbyd_weight_before = rbyd.weight;
lfs3_rbyd_commit(&lfs3, &rbyd, rid, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
assert(rbyd.weight == rbyd_weight_before-1);
}
@@ -12739,7 +12739,7 @@ code = '''
count -= 1;
// update our rbyd
lfs3_rbyd_commit(&lfs3, &rbyd, rid, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
}
}
@@ -13425,7 +13425,7 @@ code = '''
LFS3_TAG_ATTR(1), 0,
"\xbb\xbb", 2),
LFS3_RATTR(
LFS3_TAG_GROW, +1),
LFS3_tag_GROW, +1),
LFS3_RATTR_BUF(
LFS3_TAG_ATTR(2), 0,
"\xbb\xbb", 2))) => 0;
@@ -13526,7 +13526,7 @@ code = '''
LFS3_TAG_ATTR(1), 0,
"\xcc\xcc", 2),
LFS3_RATTR(
LFS3_TAG_GROW, +2),
LFS3_tag_GROW, +2),
LFS3_RATTR_BUF(
LFS3_TAG_ATTR(2), 0,
"\xcc\xcc", 2))) => 0;
@@ -13663,7 +13663,7 @@ code = '''
LFS3_TAG_ATTR(1), 0,
"\xdd\xdd", 2),
LFS3_RATTR(
LFS3_TAG_GROW, +3),
LFS3_tag_GROW, +3),
LFS3_RATTR_BUF(
LFS3_TAG_ATTR(2), 0,
"\xdd\xdd", 2))) => 0;
@@ -13836,7 +13836,7 @@ code = '''
LFS3_TAG_ATTR(1), 0,
"\xee\xee", 2),
LFS3_RATTR(
LFS3_TAG_GROW, +4),
LFS3_tag_GROW, +4),
LFS3_RATTR_BUF(
LFS3_TAG_ATTR(2), 0,
"\xee\xee", 2))) => 0;
@@ -14080,7 +14080,7 @@ code = '''
LFS3_TAG_ATTR(1), 0,
"\xbb\xbb", 2),
LFS3_RATTR(
LFS3_TAG_GROW, +1),
LFS3_tag_GROW, +1),
LFS3_RATTR_BUF(
LFS3_TAG_ATTR(2), 0,
"\xbb\xbb", 2),
@@ -14092,7 +14092,7 @@ code = '''
LFS3_TAG_ATTR(1), 0,
"\xcc\xcc", 2),
LFS3_RATTR(
LFS3_TAG_GROW, +2),
LFS3_tag_GROW, +2),
LFS3_RATTR_BUF(
LFS3_TAG_ATTR(2), 0,
"\xcc\xcc", 2),
@@ -14104,7 +14104,7 @@ code = '''
LFS3_TAG_ATTR(1), 0,
"\xdd\xdd", 2),
LFS3_RATTR(
LFS3_TAG_GROW, +3),
LFS3_tag_GROW, +3),
LFS3_RATTR_BUF(
LFS3_TAG_ATTR(2), 0,
"\xdd\xdd", 2),
@@ -14116,7 +14116,7 @@ code = '''
LFS3_TAG_ATTR(1), 0,
"\xee\xee", 2),
LFS3_RATTR(
LFS3_TAG_GROW, +4),
LFS3_tag_GROW, +4),
LFS3_RATTR_BUF(
LFS3_TAG_ATTR(2), 0,
"\xee\xee", 2))) => 0;
@@ -14402,7 +14402,7 @@ code = '''
LFS3_TAG_ATTR(1), 0,
names[perm[j] % 6], 2),
LFS3_RATTR(
LFS3_TAG_GROW, +W-1),
LFS3_tag_GROW, +W-1),
LFS3_RATTR_BUF(
LFS3_TAG_ATTR(2), 0,
names[perm[j] % 6], 2))) => 0;
@@ -14524,7 +14524,7 @@ code = '''
LFS3_TAG_ATTR(1), 0,
names[perm[j] % 6], 2),
LFS3_RATTR(
LFS3_TAG_GROW, +W-1),
LFS3_tag_GROW, +W-1),
LFS3_RATTR_BUF(
LFS3_TAG_ATTR(2), 0,
names[perm[j] % 6], 2))) => 0;
@@ -14670,7 +14670,7 @@ code = '''
NULL) => 0;
lfs3_rbyd_commit(&lfs3, &rbyd, j*W+W-1, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_GROW, +D))) => 0;
LFS3_RATTR(LFS3_tag_GROW, +D))) => 0;
assert(rbyd.weight == N*W+D);
lfs3_rbyd_fetch(&lfs3, &rbyd, rbyd.blocks[0], CFG->block_size) => 0;
@@ -14807,7 +14807,7 @@ code = '''
lfs3_rbyd_commit(&lfs3, &rbyd, j*W+W-1, LFS3_RATTRS(
LFS3_RATTR_BUF(
LFS3_TAG_GROW | LFS3_TAG_DATA, +D,
LFS3_tag_GROW | LFS3_TAG_DATA, +D,
names[j % 6], 6))) => 0;
assert(rbyd.weight == N*W+D);
@@ -14957,7 +14957,7 @@ code = '''
lfs3_rbyd_commit(&lfs3, &rbyd, j*W+W-1, LFS3_RATTRS(
LFS3_RATTR_BUF(
LFS3_TAG_GROW | LFS3_TAG_ATTR(1), +D,
LFS3_tag_GROW | LFS3_TAG_ATTR(1), +D,
names[j % 6], 6))) => 0;
assert(rbyd.weight == N*W+D);
@@ -15117,7 +15117,7 @@ code = '''
NULL) => 0;
lfs3_rbyd_commit(&lfs3, &rbyd, j*W+W-1, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_GROW, -D))) => 0;
LFS3_RATTR(LFS3_tag_GROW, -D))) => 0;
assert(rbyd.weight == N*W-D);
lfs3_rbyd_fetch(&lfs3, &rbyd, rbyd.blocks[0], CFG->block_size) => 0;
@@ -15254,7 +15254,7 @@ code = '''
lfs3_rbyd_commit(&lfs3, &rbyd, j*W+W-1, LFS3_RATTRS(
LFS3_RATTR_BUF(
LFS3_TAG_GROW | LFS3_TAG_DATA, -D,
LFS3_tag_GROW | LFS3_TAG_DATA, -D,
names[j % 6], 6))) => 0;
assert(rbyd.weight == N*W-D);
@@ -15404,7 +15404,7 @@ code = '''
lfs3_rbyd_commit(&lfs3, &rbyd, j*W+W-1, LFS3_RATTRS(
LFS3_RATTR_BUF(
LFS3_TAG_GROW | LFS3_TAG_ATTR(1), -D,
LFS3_tag_GROW | LFS3_TAG_ATTR(1), -D,
names[j % 6], 6))) => 0;
assert(rbyd.weight == N*W-D);
@@ -15563,7 +15563,7 @@ code = '''
NULL) => 0;
lfs3_rbyd_commit(&lfs3, &rbyd, j*W+W-1, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -W))) => 0;
LFS3_RATTR(LFS3_tag_RM, -W))) => 0;
assert(rbyd.weight == (N-1)*W);
lfs3_rbyd_fetch(&lfs3, &rbyd, rbyd.blocks[0], CFG->block_size) => 0;
@@ -15772,7 +15772,7 @@ code = '''
printf("--- removing: %d ---\n", j);
lfs3_rbyd_commit(&lfs3, &rbyd, j*W+W-1, LFS3_RATTRS(
LFS3_RATTR(
LFS3_TAG_RM | LFS3_TAG_ATTR(1), 0))) => 0;
LFS3_tag_RM | LFS3_TAG_ATTR(1), 0))) => 0;
assert(rbyd.weight == N*W);
lfs3_rbyd_fetch(&lfs3, &rbyd, rbyd.blocks[0], CFG->block_size) => 0;
@@ -15926,7 +15926,7 @@ code = '''
count -= 1;
// update our rbyd
lfs3_rbyd_commit(&lfs3, &rbyd, rid, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
} else if (op == 2) {
// update our sim
sim[rid*(M+1) + u+1] = 'a'+(i % 26);
@@ -15942,7 +15942,7 @@ code = '''
// update our rbyd
lfs3_rbyd_commit(&lfs3, &rbyd, rid, LFS3_RATTRS(
LFS3_RATTR(
LFS3_TAG_RM | LFS3_TAG_ATTR(u), 0))) => 0;
LFS3_tag_RM | LFS3_TAG_ATTR(u), 0))) => 0;
}
}
@@ -16105,7 +16105,7 @@ code = '''
count -= 1;
// update our rbyd
lfs3_rbyd_commit(&lfs3, &rbyd, weighted_rid+weight_-1, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -weight_))) => 0;
LFS3_RATTR(LFS3_tag_RM, -weight_))) => 0;
} else if (op == 2) {
// get the correct weight from the sim
weight_ = sim_weights[rid];
@@ -16113,7 +16113,7 @@ code = '''
sim_weights[rid] += weight;
// update our rbyd
lfs3_rbyd_commit(&lfs3, &rbyd, weighted_rid+weight_-1, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_GROW, +weight))) => 0;
LFS3_RATTR(LFS3_tag_GROW, +weight))) => 0;
} else if (op == 3) {
// get the correct weight from the sim
weight_ = sim_weights[rid];
@@ -16124,7 +16124,7 @@ code = '''
sim_weights[rid] -= weight;
// update our rbyd
lfs3_rbyd_commit(&lfs3, &rbyd, weighted_rid+weight_-1, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_GROW, -weight))) => 0;
LFS3_RATTR(LFS3_tag_GROW, -weight))) => 0;
}
}
@@ -16276,7 +16276,7 @@ code = '''
lfs3_stag_t tag_;
lfs3_data_t data_;
tag_ = lfs3_rbyd_lookup(&lfs3, &rbyd,
j, LFS3_TAG_MASK8 | LFS3_TAG_ATTR,
j, LFS3_tag_MASK8 | LFS3_TAG_ATTR,
&data_);
assert(tag_ == LFS3_TAG_ATTR((j + SHIFT) & 0x7f));
assert(lfs3_data_size(data_) == 2);
@@ -16380,7 +16380,7 @@ code = '''
// remove with a wide tag
lfs3_rbyd_commit(&lfs3, &rbyd, j, LFS3_RATTRS(
LFS3_RATTR(
LFS3_TAG_RM | LFS3_TAG_MASK8 | LFS3_TAG_ATTR, 0))) => 0;
LFS3_tag_RM | LFS3_tag_MASK8 | LFS3_TAG_ATTR, 0))) => 0;
// try traversing over the tags
lfs3_rbyd_fetch(&lfs3, &rbyd, rbyd.blocks[0], CFG->block_size) => 0;
@@ -16412,11 +16412,11 @@ code = '''
for (unsigned k = 0; k < N; k++) {
if (k == j) {
lfs3_rbyd_lookup(&lfs3, &rbyd, k,
LFS3_TAG_MASK8 | LFS3_TAG_ATTR,
LFS3_tag_MASK8 | LFS3_TAG_ATTR,
&data_) => LFS3_ERR_NOENT;
} else {
tag_ = lfs3_rbyd_lookup(&lfs3, &rbyd, k,
LFS3_TAG_MASK8 | LFS3_TAG_ATTR,
LFS3_tag_MASK8 | LFS3_TAG_ATTR,
&data_);
assert(tag_ == LFS3_TAG_ATTR((k + SHIFT) & 0x7f));
assert(lfs3_data_size(data_) == 2);
@@ -16525,7 +16525,7 @@ code = '''
// replace with bitwise inverse
lfs3_rbyd_commit(&lfs3, &rbyd, j, LFS3_RATTRS(
LFS3_RATTR_BUF(
LFS3_TAG_MASK8 | LFS3_TAG_ATTR(~(j + SHIFT) & 0x7f),
LFS3_tag_MASK8 | LFS3_TAG_ATTR(~(j + SHIFT) & 0x7f),
0,
names[j % 6], 3))) => 0;
@@ -16563,7 +16563,7 @@ code = '''
// also test that we can lookup each tag with a wide lookup
for (unsigned k = 0; k < N; k++) {
tag_ = lfs3_rbyd_lookup(&lfs3, &rbyd, k,
LFS3_TAG_MASK8 | LFS3_TAG_ATTR,
LFS3_tag_MASK8 | LFS3_TAG_ATTR,
&data_);
if (k == j) {
assert(tag_ == LFS3_TAG_ATTR(~(k + SHIFT) & 0x7f));
@@ -16661,7 +16661,7 @@ code = '''
lfs3_stag_t tag_;
lfs3_data_t data_;
tag_ = lfs3_rbyd_lookup(&lfs3, &rbyd,
j, LFS3_TAG_MASK8 | LFS3_TAG_ATTR,
j, LFS3_tag_MASK8 | LFS3_TAG_ATTR,
&data_);
assert(tag_ == LFS3_TAG_ATTR(0x7f & (j + SHIFT)));
assert(lfs3_data_size(data_) == 2);
@@ -16768,7 +16768,7 @@ code = '''
// remove with a wide tag
lfs3_rbyd_commit(&lfs3, &rbyd, j, LFS3_RATTRS(
LFS3_RATTR(
LFS3_TAG_RM | LFS3_TAG_MASK8 | LFS3_TAG_ATTR, 0))) => 0;
LFS3_tag_RM | LFS3_tag_MASK8 | LFS3_TAG_ATTR, 0))) => 0;
// try traversing over the tags
lfs3_rbyd_fetch(&lfs3, &rbyd, rbyd.blocks[0], CFG->block_size) => 0;
@@ -16807,11 +16807,11 @@ code = '''
for (unsigned k = 0; k < N; k++) {
if (k == j) {
lfs3_rbyd_lookup(&lfs3, &rbyd, k,
LFS3_TAG_MASK8 | LFS3_TAG_ATTR,
LFS3_tag_MASK8 | LFS3_TAG_ATTR,
&data_) => LFS3_ERR_NOENT;
} else {
tag_ = lfs3_rbyd_lookup(&lfs3, &rbyd, k,
LFS3_TAG_MASK8 | LFS3_TAG_ATTR,
LFS3_tag_MASK8 | LFS3_TAG_ATTR,
&data_);
assert(tag_ == LFS3_TAG_ATTR((k + SHIFT) & 0x7f));
assert(lfs3_data_size(data_) == 2);
@@ -16923,7 +16923,7 @@ code = '''
// replace with bitwise inverse
lfs3_rbyd_commit(&lfs3, &rbyd, j, LFS3_RATTRS(
LFS3_RATTR_BUF(
LFS3_TAG_MASK8 | LFS3_TAG_ATTR(~(j + SHIFT) & 0x7f),
LFS3_tag_MASK8 | LFS3_TAG_ATTR(~(j + SHIFT) & 0x7f),
0,
names[j % 6], 3))) => 0;
@@ -16968,7 +16968,7 @@ code = '''
// also test that we can lookup each tag with a wide lookup
for (unsigned k = 0; k < N; k++) {
tag_ = lfs3_rbyd_lookup(&lfs3, &rbyd, k,
LFS3_TAG_MASK8 | LFS3_TAG_ATTR,
LFS3_tag_MASK8 | LFS3_TAG_ATTR,
&data_);
if (k == j) {
assert(tag_ == LFS3_TAG_ATTR(~(k + SHIFT) & 0x7f));
@@ -17060,7 +17060,7 @@ code = '''
lfs3_stag_t tag_;
lfs3_data_t data_;
tag_ = lfs3_rbyd_lookup(&lfs3, &rbyd,
j, LFS3_TAG_MASK8 | LFS3_TAG_ATTR,
j, LFS3_tag_MASK8 | LFS3_TAG_ATTR,
&data_);
assert(tag_ == LFS3_TAG_ATTR((j + SHIFT) & 0x7f));
assert(lfs3_data_size(data_) == 4);
@@ -17161,7 +17161,7 @@ code = '''
// remove with a wide tag
lfs3_rbyd_commit(&lfs3, &rbyd, j, LFS3_RATTRS(
LFS3_RATTR(
LFS3_TAG_RM | LFS3_TAG_MASK8 | LFS3_TAG_ATTR, 0))) => 0;
LFS3_tag_RM | LFS3_tag_MASK8 | LFS3_TAG_ATTR, 0))) => 0;
// try traversing over the tags
lfs3_rbyd_fetch(&lfs3, &rbyd, rbyd.blocks[0], CFG->block_size) => 0;
@@ -17196,11 +17196,11 @@ code = '''
for (unsigned k = 0; k < N; k++) {
if (k == j) {
lfs3_rbyd_lookup(&lfs3, &rbyd, k,
LFS3_TAG_MASK8 | LFS3_TAG_ATTR,
LFS3_tag_MASK8 | LFS3_TAG_ATTR,
&data_) => LFS3_ERR_NOENT;
} else {
tag_ = lfs3_rbyd_lookup(&lfs3, &rbyd, k,
LFS3_TAG_MASK8 | LFS3_TAG_ATTR,
LFS3_tag_MASK8 | LFS3_TAG_ATTR,
&data_);
assert(tag_ == LFS3_TAG_ATTR((k + SHIFT) & 0x7f));
assert(lfs3_data_size(data_) == 4);
@@ -17306,7 +17306,7 @@ code = '''
// replace with bitwise inverse
lfs3_rbyd_commit(&lfs3, &rbyd, j, LFS3_RATTRS(
LFS3_RATTR_BUF(
LFS3_TAG_MASK8 | LFS3_TAG_ATTR(~(j + SHIFT) & 0x7f),
LFS3_tag_MASK8 | LFS3_TAG_ATTR(~(j + SHIFT) & 0x7f),
0,
names[j % 6], 6))) => 0;
@@ -17337,7 +17337,7 @@ code = '''
// also test that we can lookup each tag with a wide lookup
for (unsigned k = 0; k < N; k++) {
tag_ = lfs3_rbyd_lookup(&lfs3, &rbyd, k,
LFS3_TAG_MASK8 | LFS3_TAG_ATTR,
LFS3_tag_MASK8 | LFS3_TAG_ATTR,
&data_);
if (k == j) {
assert(tag_ == LFS3_TAG_ATTR(~(k + SHIFT) & 0x7f));
@@ -17432,7 +17432,7 @@ code = '''
for (unsigned j = 0; j < N; j++) {
lfs3_stag_t tag_;
lfs3_data_t data_;
tag_ = lfs3_rbyd_lookup(&lfs3, &rbyd, j, LFS3_TAG_MASK12,
tag_ = lfs3_rbyd_lookup(&lfs3, &rbyd, j, LFS3_tag_MASK12,
&data_);
assert(tag_ == LFS3_TAG_DATA);
assert(lfs3_data_size(data_) == 4);
@@ -17536,7 +17536,7 @@ code = '''
// remove with a wide tag
lfs3_rbyd_commit(&lfs3, &rbyd, j, LFS3_RATTRS(
LFS3_RATTR(
LFS3_TAG_RM | LFS3_TAG_MASK12 | LFS3_TAG_ATTR,
LFS3_tag_RM | LFS3_tag_MASK12 | LFS3_TAG_ATTR,
0))) => 0;
// try traversing over the tags
@@ -17569,11 +17569,11 @@ code = '''
for (unsigned k = 0; k < N; k++) {
if (k == j) {
lfs3_rbyd_lookup(&lfs3, &rbyd, k,
LFS3_TAG_MASK8 | LFS3_TAG_ATTR,
LFS3_tag_MASK8 | LFS3_TAG_ATTR,
&data_) => LFS3_ERR_NOENT;
} else {
tag_ = lfs3_rbyd_lookup(&lfs3, &rbyd, k,
LFS3_TAG_MASK8 | LFS3_TAG_ATTR,
LFS3_tag_MASK8 | LFS3_TAG_ATTR,
&data_);
assert(tag_ == LFS3_TAG_ATTR((k + SHIFT) & 0x7f));
assert(lfs3_data_size(data_) == 2);
@@ -17682,7 +17682,7 @@ code = '''
// replace with bitwise inverse
lfs3_rbyd_commit(&lfs3, &rbyd, j, LFS3_RATTRS(
LFS3_RATTR_BUF(
LFS3_TAG_MASK12 | LFS3_TAG_ATTR(~(j + SHIFT) & 0x7f),
LFS3_tag_MASK12 | LFS3_TAG_ATTR(~(j + SHIFT) & 0x7f),
0,
names[j % 6], 3))) => 0;
@@ -17723,7 +17723,7 @@ code = '''
// also test that we can lookup each tag with a wide lookup
for (unsigned k = 0; k < N; k++) {
tag_ = lfs3_rbyd_lookup(&lfs3, &rbyd, k,
LFS3_TAG_MASK8 | LFS3_TAG_ATTR,
LFS3_tag_MASK8 | LFS3_TAG_ATTR,
&data_);
if (k == j) {
assert(tag_ == LFS3_TAG_ATTR(~(k + SHIFT) & 0x7f));
@@ -17772,7 +17772,7 @@ code = '''
LFS3_TAG_ATTR(1), 0,
"\xbb\xbb\xbb\xbb", 4),
LFS3_RATTR(
LFS3_TAG_RM | LFS3_TAG_ATTR(0), 0))) => 0;
LFS3_tag_RM | LFS3_TAG_ATTR(0), 0))) => 0;
assert(rbyd.weight == 0);
// can we still access things?
@@ -17823,13 +17823,13 @@ code = '''
LFS3_TAG_ATTR(2), 0,
"\xcc\xcc\xcc\xcc", 4),
LFS3_RATTR(
LFS3_TAG_RM | LFS3_TAG_ATTR(0), 0))) => 0;
LFS3_tag_RM | LFS3_TAG_ATTR(0), 0))) => 0;
assert(rbyd.weight == 0);
// remove a neighbor to the hole
lfs3_rbyd_commit(&lfs3, &rbyd, -1, LFS3_RATTRS(
LFS3_RATTR(
LFS3_TAG_RM | LFS3_TAG_ATTR(1), 0))) => 0;
LFS3_tag_RM | LFS3_TAG_ATTR(1), 0))) => 0;
assert(rbyd.weight == 0);
// can we still access things?
@@ -17881,12 +17881,12 @@ code = '''
"\xcc\xcc\xcc\xcc", 4))) => 0;
lfs3_rbyd_commit(&lfs3, &rbyd, -1, LFS3_RATTRS(
LFS3_RATTR(
LFS3_TAG_RM | LFS3_TAG_ATTR(0), 0))) => 0;
LFS3_tag_RM | LFS3_TAG_ATTR(0), 0))) => 0;
assert(rbyd.weight == 2);
// delete a neighbor to the hole
lfs3_rbyd_commit(&lfs3, &rbyd, 0, LFS3_RATTRS(
LFS3_RATTR(LFS3_TAG_RM, -1))) => 0;
LFS3_RATTR(LFS3_tag_RM, -1))) => 0;
assert(rbyd.weight == 1);
// can we still access things?
@@ -17937,13 +17937,13 @@ code = '''
LFS3_TAG_ATTR(0x80), 0,
"\xdd\xdd\xdd\xdd", 4),
LFS3_RATTR(
LFS3_TAG_RM | LFS3_TAG_ATTR(0), 0))) => 0;
LFS3_tag_RM | LFS3_TAG_ATTR(0), 0))) => 0;
assert(rbyd.weight == 0);
// subwide replace a neighbor to the hole
lfs3_rbyd_commit(&lfs3, &rbyd, -1, LFS3_RATTRS(
LFS3_RATTR_BUF(
LFS3_TAG_MASK8 | LFS3_TAG_ATTR(0x02), 0,
LFS3_tag_MASK8 | LFS3_TAG_ATTR(0x02), 0,
"\xcc\xcc\xcc\xcc", 4))) => 0;
assert(rbyd.weight == 0);
@@ -18005,13 +18005,13 @@ code = '''
"\xdd\xdd\xdd\xdd", 4))) => 0;
lfs3_rbyd_commit(&lfs3, &rbyd, -1, LFS3_RATTRS(
LFS3_RATTR(
LFS3_TAG_RM | LFS3_TAG_ATTR(0), 0))) => 0;
LFS3_tag_RM | LFS3_TAG_ATTR(0), 0))) => 0;
assert(rbyd.weight == 1);
// supwide replace a neighbor to the hole
lfs3_rbyd_commit(&lfs3, &rbyd, -1, LFS3_RATTRS(
LFS3_RATTR_BUF(
LFS3_TAG_MASK12 | LFS3_TAG_ATTR(2), 0,
LFS3_tag_MASK12 | LFS3_TAG_ATTR(2), 0,
"\xcc\xcc\xcc\xcc", 4))) => 0;
assert(rbyd.weight == 1);