bmap: Tweaked bmapcache algo to piggyback on mdir commits
There's really no reason to immediately commit the bmap to disk, at
least no until the first mdir commit, when we need to at least discard
the previous bmap state.
We already do all the gstate handling in lfs3_mdir_commit anyways, and
piggybacking on mdir commit lets us get rid of the annoying extra mdir
param in lfs3_alloc_ckpoint.
This does mean a slightly higher risk of needing to re-rebuild the bmap
after a powerloss, but in theory only if the user does something weird
like writing to a file and never calling sync. Most on-disk operations
terminate in an mdir commit as that's how any state change becomes
atomically visibile in littlefs.
Saves a nice bit of stack:
code stack ctx
before: 36920 2368 684
after: 36920 (+0.0%) 2368 (+0.0%) 684 (+0.0%)
code stack ctx
bmap before: 38552 2472 812
bmap after: 38464 (-0.2%) 2400 (-2.9%) 812 (+0.0%)
This commit is contained in:
@@ -2380,7 +2380,7 @@ static inline bool lfs3_alloc_iserase(uint32_t flags) {
|
||||
// blocks are allocated at most once, and never reallocated, between
|
||||
// checkpoints
|
||||
#if !defined(LFS3_RDONLY)
|
||||
static inline void lfs3_alloc_ckpoint(lfs3_t *lfs3, lfs3_mdir_t *mdir);
|
||||
static inline void lfs3_alloc_ckpoint(lfs3_t *lfs3);
|
||||
#endif
|
||||
|
||||
// discard any lookahead state, this is necessary if block_count changes
|
||||
@@ -10494,7 +10494,7 @@ dropped:;
|
||||
: lfs3->cfg->block_size - lfs3->cfg->block_size/8);
|
||||
|
||||
// checkpoint the allocator
|
||||
lfs3_alloc_ckpoint(lfs3, mdir);
|
||||
lfs3_alloc_ckpoint(lfs3);
|
||||
// compact the mdir
|
||||
err = lfs3_mdir_compact(lfs3, mdir);
|
||||
if (err) {
|
||||
@@ -10800,7 +10800,7 @@ static int lfs3_bmap_setbptr(lfs3_t *lfs3, lfs3_btree_t *bmap,
|
||||
/// Block allocator ///
|
||||
|
||||
// needed in lfs3_alloc_ckpoint
|
||||
static int lfs3_alloc_rebuildbmap(lfs3_t *lfs3, lfs3_mdir_t *mdir);
|
||||
static int lfs3_alloc_rebuildbmap(lfs3_t *lfs3);
|
||||
|
||||
// checkpoint the allocator
|
||||
//
|
||||
@@ -10810,7 +10810,7 @@ static int lfs3_alloc_rebuildbmap(lfs3_t *lfs3, lfs3_mdir_t *mdir);
|
||||
// blocks are allocated at most once, and never reallocated, between
|
||||
// checkpoints
|
||||
#if !defined(LFS3_RDONLY)
|
||||
static inline void lfs3_alloc_ckpoint(lfs3_t *lfs3, lfs3_mdir_t *mdir) {
|
||||
static inline void lfs3_alloc_ckpoint(lfs3_t *lfs3) {
|
||||
#ifndef LFS3_2BONLY
|
||||
lfs3->lookahead.ckpoint = lfs3->block_count;
|
||||
#ifdef LFS3_BMAP
|
||||
@@ -10818,7 +10818,7 @@ static inline void lfs3_alloc_ckpoint(lfs3_t *lfs3, lfs3_mdir_t *mdir) {
|
||||
if (lfs3->lookahead.bmapped < lfs3_min(
|
||||
lfs3->cfg->bmap_scan_thresh,
|
||||
lfs3->block_count)) {
|
||||
int err = lfs3_alloc_rebuildbmap(lfs3, mdir);
|
||||
int err = lfs3_alloc_rebuildbmap(lfs3);
|
||||
// TODO lfs3_alloc_ckpoint should propagate errors
|
||||
LFS3_ASSERT(!err);
|
||||
}
|
||||
@@ -11276,7 +11276,7 @@ static lfs3_sblock_t lfs3_alloc(lfs3_t *lfs3, uint32_t flags) {
|
||||
//
|
||||
// if NULL, we just commit to the mroot, and mroot chain extension can
|
||||
// take over if the wear gets too bad
|
||||
static int lfs3_alloc_rebuildbmap(lfs3_t *lfs3, lfs3_mdir_t *mdir) {
|
||||
static int lfs3_alloc_rebuildbmap(lfs3_t *lfs3) {
|
||||
// we should ckpoint before calling this
|
||||
LFS3_ASSERT(lfs3->lookahead.ckpoint == lfs3->cfg->block_count);
|
||||
LFS3_INFO("Rebuilding bmap "
|
||||
@@ -11284,7 +11284,6 @@ static int lfs3_alloc_rebuildbmap(lfs3_t *lfs3, lfs3_mdir_t *mdir) {
|
||||
lfs3->lookahead.bmapped,
|
||||
lfs3->lookahead.ckpoint,
|
||||
lfs3->cfg->block_count);
|
||||
lfs3_block_t bmapped = lfs3->lookahead.bmapped;
|
||||
|
||||
// create a new bmap
|
||||
lfs3_btree_t bmap_;
|
||||
@@ -11324,25 +11323,17 @@ static int lfs3_alloc_rebuildbmap(lfs3_t *lfs3, lfs3_mdir_t *mdir) {
|
||||
}
|
||||
}
|
||||
|
||||
// commit the new bmap into gstate
|
||||
// update gbmap with what we found
|
||||
//
|
||||
// lfs3_mdir_commit may immediately allocate from the bmap before it
|
||||
// even hits the, but this is fine, lfs3_mdir_commit updates
|
||||
// window/known with alloc progress before any internal commits
|
||||
// we don't commit this to disk immediately, instead we piggypack on
|
||||
// the next mdir commit, most writes terminate in an mdir commit so
|
||||
// this avoids extra writing at a risk of needing to reconstruct the
|
||||
// bmap if we lose power
|
||||
//
|
||||
// also note lfs3_mdir_commit reverts to on-disk state on failure
|
||||
// lfs3->gbmap.window = (lfs3->lookahead.window + lfs3->lookahead.off)
|
||||
// % lfs3->cfg->block_count;
|
||||
// lfs3->gbmap.known = ((lfs3->lookahead.ckpoint + lfs3->cfg->block_count)
|
||||
// - lfs3->gbmap.window)
|
||||
// % lfs3->cfg->block_count;
|
||||
// don't worry about window/known, lfs3_mdir_commit updates these
|
||||
// last minute before calculating gdeltas for a commit
|
||||
lfs3->lookahead.bmapped = lfs3->lookahead.ckpoint;
|
||||
lfs3->gbmap.b = bmap_;
|
||||
err = lfs3_mdir_commit(lfs3, (mdir) ? mdir : &lfs3->mroot, NULL, 0);
|
||||
if (err) {
|
||||
goto failed;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
failed:;
|
||||
@@ -11355,8 +11346,6 @@ failed:;
|
||||
lfs3->cfg->block_count);
|
||||
return 0;
|
||||
}
|
||||
// revert bmapped on error
|
||||
lfs3->lookahead.bmapped = bmapped;
|
||||
return err;
|
||||
}
|
||||
#endif
|
||||
@@ -11486,7 +11475,7 @@ int lfs3_mkdir(lfs3_t *lfs3, const char *path) {
|
||||
// mid updates, since the mid technically doesn't exist yet...
|
||||
|
||||
// commit our bookmark and a grm to self-remove in case of powerloss
|
||||
lfs3_alloc_ckpoint(lfs3, &mdir);
|
||||
lfs3_alloc_ckpoint(lfs3);
|
||||
err = lfs3_mdir_commit(lfs3, &mdir, LFS3_RATTRS(
|
||||
LFS3_RATTR_NAME(
|
||||
LFS3_TAG_BOOKMARK, +1, did_, NULL, 0),
|
||||
@@ -11513,7 +11502,7 @@ int lfs3_mkdir(lfs3_t *lfs3, const char *path) {
|
||||
//
|
||||
// commit our new directory into our parent, zeroing the grm in the
|
||||
// process
|
||||
lfs3_alloc_ckpoint(lfs3, &mdir);
|
||||
lfs3_alloc_ckpoint(lfs3);
|
||||
lfs3_grm_pop(lfs3);
|
||||
err = lfs3_mdir_commit(lfs3, &mdir, LFS3_RATTRS(
|
||||
LFS3_RATTR_NAME(
|
||||
@@ -11660,7 +11649,7 @@ int lfs3_remove(lfs3_t *lfs3, const char *path) {
|
||||
bool zombie = lfs3_mid_isopen(lfs3, mdir.mid, -1);
|
||||
|
||||
// remove the metadata entry
|
||||
lfs3_alloc_ckpoint(lfs3, &mdir);
|
||||
lfs3_alloc_ckpoint(lfs3);
|
||||
err = lfs3_mdir_commit(lfs3, &mdir, LFS3_RATTRS(
|
||||
// create a stickynote if zombied
|
||||
//
|
||||
@@ -11841,7 +11830,7 @@ int lfs3_rename(lfs3_t *lfs3, const char *old_path, const char *new_path) {
|
||||
|
||||
// rename our entry, copying all tags associated with the old rid to the
|
||||
// new rid, while also marking the old rid for removal
|
||||
lfs3_alloc_ckpoint(lfs3, &new_mdir);
|
||||
lfs3_alloc_ckpoint(lfs3);
|
||||
err = lfs3_mdir_commit(lfs3, &new_mdir, LFS3_RATTRS(
|
||||
LFS3_RATTR_NAME(
|
||||
LFS3_TAG_MASK12 | old_tag,
|
||||
@@ -12282,7 +12271,7 @@ int lfs3_setattr(lfs3_t *lfs3, const char *path, uint8_t type,
|
||||
}
|
||||
|
||||
// commit our attr
|
||||
lfs3_alloc_ckpoint(lfs3, &mdir);
|
||||
lfs3_alloc_ckpoint(lfs3);
|
||||
err = lfs3_mdir_commit(lfs3, &mdir, LFS3_RATTRS(
|
||||
LFS3_RATTR_DATA(
|
||||
LFS3_TAG_ATTR(type), 0,
|
||||
@@ -12338,7 +12327,7 @@ int lfs3_removeattr(lfs3_t *lfs3, const char *path, uint8_t type) {
|
||||
}
|
||||
|
||||
// commit our removal
|
||||
lfs3_alloc_ckpoint(lfs3, &mdir);
|
||||
lfs3_alloc_ckpoint(lfs3);
|
||||
err = lfs3_mdir_commit(lfs3, &mdir, LFS3_RATTRS(
|
||||
LFS3_RATTR(
|
||||
LFS3_TAG_RM | LFS3_TAG_ATTR(type), 0)));
|
||||
@@ -12637,7 +12626,7 @@ int lfs3_file_opencfg_(lfs3_t *lfs3, lfs3_file_t *file,
|
||||
} else {
|
||||
// create a stickynote entry if we don't have one, this
|
||||
// reserves the mid until first sync
|
||||
lfs3_alloc_ckpoint(lfs3, &file->b.h.mdir);
|
||||
lfs3_alloc_ckpoint(lfs3);
|
||||
err = lfs3_mdir_commit(lfs3, &file->b.h.mdir, LFS3_RATTRS(
|
||||
LFS3_RATTR_NAME(
|
||||
LFS3_TAG_STICKYNOTE, +1,
|
||||
@@ -13590,7 +13579,7 @@ static int lfs3_file_crystallize(lfs3_t *lfs3, lfs3_file_t *file) {
|
||||
LFS3_ASSERT(lfs3_o_isunsync(file->b.h.flags));
|
||||
|
||||
// checkpoint the allocator
|
||||
lfs3_alloc_ckpoint(lfs3, &file->b.h.mdir);
|
||||
lfs3_alloc_ckpoint(lfs3);
|
||||
// finish crystallizing
|
||||
int err = lfs3_file_crystallize_(lfs3, file,
|
||||
file->leaf.pos - lfs3_bptr_off(&file->leaf.bptr), -1, -1,
|
||||
@@ -13612,7 +13601,7 @@ static int lfs3_file_flushset_(lfs3_t *lfs3, lfs3_file_t *file,
|
||||
lfs3_off_t pos = 0;
|
||||
while (size > 0) {
|
||||
// checkpoint the allocator
|
||||
lfs3_alloc_ckpoint(lfs3, &file->b.h.mdir);
|
||||
lfs3_alloc_ckpoint(lfs3);
|
||||
|
||||
// enough data for a block?
|
||||
#ifndef LFS3_2BONLY
|
||||
@@ -13712,7 +13701,7 @@ static int lfs3_file_flush_(lfs3_t *lfs3, lfs3_file_t *file,
|
||||
#ifndef LFS3_2BONLY
|
||||
while (size > 0) {
|
||||
// checkpoint the allocator
|
||||
lfs3_alloc_ckpoint(lfs3, &file->b.h.mdir);
|
||||
lfs3_alloc_ckpoint(lfs3);
|
||||
|
||||
// mid-crystallization? can we just resume crystallizing?
|
||||
//
|
||||
@@ -13961,7 +13950,7 @@ fragment:;
|
||||
// iteratively write fragments (inlined leaves)
|
||||
while (size > 0) {
|
||||
// checkpoint the allocator
|
||||
lfs3_alloc_ckpoint(lfs3, &file->b.h.mdir);
|
||||
lfs3_alloc_ckpoint(lfs3);
|
||||
|
||||
// do we need to discard our leaf? we need to discard fragments
|
||||
// in case the underlying rbyd compacts, and we need to discard
|
||||
@@ -14459,7 +14448,7 @@ static int lfs3_file_sync_(lfs3_t *lfs3, lfs3_file_t *file,
|
||||
// make sure we don't overflow our rattr buffer
|
||||
LFS3_ASSERT(rattr_count <= sizeof(rattrs)/sizeof(lfs3_rattr_t));
|
||||
// checkpoint the allocator
|
||||
lfs3_alloc_ckpoint(lfs3, &file->b.h.mdir);
|
||||
lfs3_alloc_ckpoint(lfs3);
|
||||
// and commit!
|
||||
int err = lfs3_mdir_commit(lfs3, &file->b.h.mdir,
|
||||
rattrs, rattr_count);
|
||||
@@ -14755,7 +14744,7 @@ int lfs3_file_truncate(lfs3_t *lfs3, lfs3_file_t *file, lfs3_off_t size_) {
|
||||
file->b.h.flags |= LFS3_o_UNSYNC;
|
||||
|
||||
// checkpoint the allocator
|
||||
lfs3_alloc_ckpoint(lfs3, &file->b.h.mdir);
|
||||
lfs3_alloc_ckpoint(lfs3);
|
||||
// truncate our btree
|
||||
err = lfs3_file_graft_(lfs3, file,
|
||||
lfs3_min(size, size_), size - lfs3_min(size, size_),
|
||||
@@ -14837,7 +14826,7 @@ int lfs3_file_fruncate(lfs3_t *lfs3, lfs3_file_t *file, lfs3_off_t size_) {
|
||||
file->b.h.flags |= LFS3_o_UNSYNC;
|
||||
|
||||
// checkpoint the allocator
|
||||
lfs3_alloc_ckpoint(lfs3, &file->b.h.mdir);
|
||||
lfs3_alloc_ckpoint(lfs3);
|
||||
// fruncate our btree
|
||||
err = lfs3_file_graft_(lfs3, file,
|
||||
0, lfs3_smax(size - size_, 0),
|
||||
@@ -16573,7 +16562,7 @@ static int lfs3_fs_fixgrm(lfs3_t *lfs3) {
|
||||
lfs3_grm_t grm_p = lfs3->grm;
|
||||
|
||||
// checkpoint the allocator
|
||||
lfs3_alloc_ckpoint(lfs3, &mdir);
|
||||
lfs3_alloc_ckpoint(lfs3);
|
||||
// mark grm as taken care of
|
||||
lfs3_grm_pop(lfs3);
|
||||
// remove the rid while atomically updating our grm
|
||||
@@ -16628,7 +16617,7 @@ static int lfs3_mdir_mkconsistent(lfs3_t *lfs3, lfs3_mdir_t *mdir) {
|
||||
lfs3_dbgmrid(lfs3, mdir->mid));
|
||||
|
||||
// checkpoint the allocator
|
||||
lfs3_alloc_ckpoint(lfs3, mdir);
|
||||
lfs3_alloc_ckpoint(lfs3);
|
||||
// remove the orphaned stickynote
|
||||
err = lfs3_mdir_commit(lfs3, mdir, LFS3_RATTRS(
|
||||
LFS3_RATTR(LFS3_TAG_RM, -1)));
|
||||
@@ -16781,7 +16770,7 @@ static int lfs3_fs_gc_(lfs3_t *lfs3, lfs3_trv_t *trv,
|
||||
while (pending && (lfs3_off_t)steps > 0) {
|
||||
// checkpoint the allocator to maximize any lookahead scans
|
||||
#ifndef LFS3_RDONLY
|
||||
lfs3_alloc_ckpoint(lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(lfs3);
|
||||
#endif
|
||||
|
||||
// start a new traversal?
|
||||
@@ -16921,7 +16910,7 @@ int lfs3_fs_grow(lfs3_t *lfs3, lfs3_size_t block_count_) {
|
||||
lfs3_alloc_discard(lfs3);
|
||||
|
||||
// update our on-disk config
|
||||
lfs3_alloc_ckpoint(lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(lfs3);
|
||||
int err = lfs3_mdir_commit(lfs3, &lfs3->mroot, LFS3_RATTRS(
|
||||
LFS3_RATTR_GEOMETRY(
|
||||
LFS3_TAG_GEOMETRY, 0,
|
||||
@@ -17020,7 +17009,7 @@ int lfs3_trv_read(lfs3_t *lfs3, lfs3_trv_t *trv,
|
||||
|
||||
// checkpoint the allocator to maximize any lookahead scans
|
||||
#ifndef LFS3_RDONLY
|
||||
lfs3_alloc_ckpoint(lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(lfs3);
|
||||
#endif
|
||||
|
||||
while (true) {
|
||||
|
||||
@@ -33,7 +33,7 @@ code = '''
|
||||
lfs3_mount(&lfs3, LFS3_M_RDWR, &cfg) => 0;
|
||||
|
||||
// start allocating
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
lfs3_size_t alloced = 0;
|
||||
while (true) {
|
||||
lfs3_sblock_t block = lfs3_alloc(&lfs3, ERASE);
|
||||
@@ -77,7 +77,7 @@ code = '''
|
||||
lfs3_mount(&lfs3, LFS3_M_RDWR, &cfg) => 0;
|
||||
|
||||
// start allocating
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
lfs3_size_t alloced = 0;
|
||||
while (true) {
|
||||
lfs3_sblock_t block = lfs3_alloc(&lfs3, ERASE);
|
||||
@@ -98,7 +98,7 @@ code = '''
|
||||
assert(alloced == COUNT-2);
|
||||
|
||||
// ack again, effectively releasing all the previously alloced blocks
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
alloced = 0;
|
||||
while (true) {
|
||||
lfs3_sblock_t block = lfs3_alloc(&lfs3, ERASE);
|
||||
|
||||
@@ -61,7 +61,7 @@ code = '''
|
||||
lfs3.lookahead.off = 0;
|
||||
lfs3.lookahead.known = lfs3_min(8*CFG->lookahead_size,
|
||||
CFG->block_count-2);
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create a btree
|
||||
lfs3_btree_t btree;
|
||||
@@ -2016,7 +2016,7 @@ code = '''
|
||||
lfs3.lookahead.off = 0;
|
||||
lfs3.lookahead.known = lfs3_min(8*CFG->lookahead_size,
|
||||
CFG->block_count-2);
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create a btree
|
||||
lfs3_btree_t btree;
|
||||
@@ -3973,7 +3973,7 @@ code = '''
|
||||
lfs3.lookahead.off = 0;
|
||||
lfs3.lookahead.known = lfs3_min(8*CFG->lookahead_size,
|
||||
CFG->block_count-2);
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create a btree
|
||||
lfs3_btree_t btree;
|
||||
|
||||
@@ -9,7 +9,7 @@ code = '''
|
||||
lfs3_t lfs3;
|
||||
lfs3_format(&lfs3, LFS3_F_RDWR, CFG) => 0;
|
||||
lfs3_mount(&lfs3, LFS3_M_RDWR, CFG) => 0;
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create an initial bmap
|
||||
lfs3_btree_t bmap;
|
||||
@@ -70,7 +70,7 @@ code = '''
|
||||
lfs3_t lfs3;
|
||||
lfs3_format(&lfs3, LFS3_F_RDWR, CFG) => 0;
|
||||
lfs3_mount(&lfs3, LFS3_M_RDWR, CFG) => 0;
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create an initial bmap
|
||||
lfs3_btree_t bmap;
|
||||
@@ -135,7 +135,7 @@ code = '''
|
||||
lfs3_t lfs3;
|
||||
lfs3_format(&lfs3, LFS3_F_RDWR, CFG) => 0;
|
||||
lfs3_mount(&lfs3, LFS3_M_RDWR, CFG) => 0;
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create an initial bmap
|
||||
lfs3_btree_t bmap;
|
||||
@@ -201,7 +201,7 @@ code = '''
|
||||
lfs3_t lfs3;
|
||||
lfs3_format(&lfs3, LFS3_F_RDWR, CFG) => 0;
|
||||
lfs3_mount(&lfs3, LFS3_M_RDWR, CFG) => 0;
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create an initial bmap
|
||||
lfs3_btree_t bmap;
|
||||
@@ -268,7 +268,7 @@ code = '''
|
||||
lfs3_t lfs3;
|
||||
lfs3_format(&lfs3, LFS3_F_RDWR, CFG) => 0;
|
||||
lfs3_mount(&lfs3, LFS3_M_RDWR, CFG) => 0;
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create an initial bmap
|
||||
lfs3_btree_t bmap;
|
||||
@@ -318,7 +318,7 @@ code = '''
|
||||
lfs3_t lfs3;
|
||||
lfs3_format(&lfs3, LFS3_F_RDWR, CFG) => 0;
|
||||
lfs3_mount(&lfs3, LFS3_M_RDWR, CFG) => 0;
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create an initial bmap
|
||||
lfs3_btree_t bmap;
|
||||
|
||||
+50
-50
@@ -20,7 +20,7 @@ code = '''
|
||||
lfs3.lookahead.off = 0;
|
||||
lfs3.lookahead.known = lfs3_min(8*CFG->lookahead_size,
|
||||
CFG->block_count-2);
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create an empty tree
|
||||
lfs3_btree_t btree;
|
||||
@@ -52,7 +52,7 @@ code = '''
|
||||
lfs3.lookahead.off = 0;
|
||||
lfs3.lookahead.known = lfs3_min(8*CFG->lookahead_size,
|
||||
CFG->block_count-2);
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create a single-entry tree
|
||||
lfs3_btree_t btree;
|
||||
@@ -96,7 +96,7 @@ code = '''
|
||||
lfs3.lookahead.off = 0;
|
||||
lfs3.lookahead.known = lfs3_min(8*CFG->lookahead_size,
|
||||
CFG->block_count-2);
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create a two-entry tree
|
||||
lfs3_btree_t btree;
|
||||
@@ -147,7 +147,7 @@ code = '''
|
||||
lfs3.lookahead.off = 0;
|
||||
lfs3.lookahead.known = lfs3_min(8*CFG->lookahead_size,
|
||||
CFG->block_count-2);
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create a two-entry tree
|
||||
lfs3_btree_t btree;
|
||||
@@ -199,7 +199,7 @@ code = '''
|
||||
lfs3.lookahead.off = 0;
|
||||
lfs3.lookahead.known = lfs3_min(8*CFG->lookahead_size,
|
||||
CFG->block_count-2);
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create a two-entry tree
|
||||
lfs3_btree_t btree;
|
||||
@@ -259,7 +259,7 @@ code = '''
|
||||
lfs3.lookahead.off = 0;
|
||||
lfs3.lookahead.known = lfs3_min(8*CFG->lookahead_size,
|
||||
CFG->block_count-2);
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create a two-entry tree
|
||||
lfs3_btree_t btree;
|
||||
@@ -322,7 +322,7 @@ code = '''
|
||||
lfs3.lookahead.off = 0;
|
||||
lfs3.lookahead.known = lfs3_min(8*CFG->lookahead_size,
|
||||
CFG->block_count-2);
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create a tree with N elements
|
||||
lfs3_btree_t btree;
|
||||
@@ -374,7 +374,7 @@ code = '''
|
||||
lfs3.lookahead.off = 0;
|
||||
lfs3.lookahead.known = lfs3_min(8*CFG->lookahead_size,
|
||||
CFG->block_count-2);
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create a tree with N elements
|
||||
lfs3_btree_t btree;
|
||||
@@ -428,7 +428,7 @@ code = '''
|
||||
lfs3.lookahead.off = 0;
|
||||
lfs3.lookahead.known = lfs3_min(8*CFG->lookahead_size,
|
||||
CFG->block_count-2);
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create a btree
|
||||
lfs3_btree_t btree;
|
||||
@@ -512,7 +512,7 @@ code = '''
|
||||
lfs3.lookahead.off = 0;
|
||||
lfs3.lookahead.known = lfs3_min(8*CFG->lookahead_size,
|
||||
CFG->block_count-2);
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create a tree with N elements
|
||||
lfs3_btree_t btree;
|
||||
@@ -582,7 +582,7 @@ code = '''
|
||||
lfs3.lookahead.off = 0;
|
||||
lfs3.lookahead.known = lfs3_min(8*CFG->lookahead_size,
|
||||
CFG->block_count-2);
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create a btree
|
||||
lfs3_btree_t btree;
|
||||
@@ -720,7 +720,7 @@ code = '''
|
||||
lfs3.lookahead.off = 0;
|
||||
lfs3.lookahead.known = lfs3_min(8*CFG->lookahead_size,
|
||||
CFG->block_count-2);
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create a single-entry tree
|
||||
lfs3_btree_t btree;
|
||||
@@ -767,7 +767,7 @@ code = '''
|
||||
lfs3.lookahead.off = 0;
|
||||
lfs3.lookahead.known = lfs3_min(8*CFG->lookahead_size,
|
||||
CFG->block_count-2);
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create a two-entry tree
|
||||
lfs3_btree_t btree;
|
||||
@@ -827,7 +827,7 @@ code = '''
|
||||
lfs3.lookahead.off = 0;
|
||||
lfs3.lookahead.known = lfs3_min(8*CFG->lookahead_size,
|
||||
CFG->block_count-2);
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create a two-entry tree
|
||||
lfs3_btree_t btree;
|
||||
@@ -901,7 +901,7 @@ code = '''
|
||||
lfs3.lookahead.off = 0;
|
||||
lfs3.lookahead.known = lfs3_min(8*CFG->lookahead_size,
|
||||
CFG->block_count-2);
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create a tree with N elements
|
||||
lfs3_btree_t btree;
|
||||
@@ -960,7 +960,7 @@ code = '''
|
||||
lfs3.lookahead.off = 0;
|
||||
lfs3.lookahead.known = lfs3_min(8*CFG->lookahead_size,
|
||||
CFG->block_count-2);
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create a btree
|
||||
lfs3_btree_t btree;
|
||||
@@ -1048,7 +1048,7 @@ code = '''
|
||||
lfs3.lookahead.off = 0;
|
||||
lfs3.lookahead.known = lfs3_min(8*CFG->lookahead_size,
|
||||
CFG->block_count-2);
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create a tree with N elements
|
||||
lfs3_btree_t btree;
|
||||
@@ -1123,7 +1123,7 @@ code = '''
|
||||
lfs3.lookahead.off = 0;
|
||||
lfs3.lookahead.known = lfs3_min(8*CFG->lookahead_size,
|
||||
CFG->block_count-2);
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create a btree
|
||||
lfs3_btree_t btree;
|
||||
@@ -1268,7 +1268,7 @@ code = '''
|
||||
lfs3.lookahead.off = 0;
|
||||
lfs3.lookahead.known = lfs3_min(8*CFG->lookahead_size,
|
||||
CFG->block_count-2);
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create a single-entry tree
|
||||
lfs3_btree_t btree;
|
||||
@@ -1326,7 +1326,7 @@ code = '''
|
||||
lfs3.lookahead.off = 0;
|
||||
lfs3.lookahead.known = lfs3_min(8*CFG->lookahead_size,
|
||||
CFG->block_count-2);
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create a single-entry tree
|
||||
lfs3_btree_t btree;
|
||||
@@ -1400,7 +1400,7 @@ code = '''
|
||||
lfs3.lookahead.off = 0;
|
||||
lfs3.lookahead.known = lfs3_min(8*CFG->lookahead_size,
|
||||
CFG->block_count-2);
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create a single-entry tree
|
||||
lfs3_btree_t btree;
|
||||
@@ -1474,7 +1474,7 @@ code = '''
|
||||
lfs3.lookahead.off = 0;
|
||||
lfs3.lookahead.known = lfs3_min(8*CFG->lookahead_size,
|
||||
CFG->block_count-2);
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create a single-entry tree
|
||||
lfs3_btree_t btree;
|
||||
@@ -1567,7 +1567,7 @@ code = '''
|
||||
lfs3.lookahead.off = 0;
|
||||
lfs3.lookahead.known = lfs3_min(8*CFG->lookahead_size,
|
||||
CFG->block_count-2);
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create a tree with N elements
|
||||
lfs3_btree_t btree;
|
||||
@@ -1648,7 +1648,7 @@ code = '''
|
||||
lfs3.lookahead.off = 0;
|
||||
lfs3.lookahead.known = lfs3_min(8*CFG->lookahead_size,
|
||||
CFG->block_count-2);
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create a tree with N elements
|
||||
lfs3_btree_t btree;
|
||||
@@ -1732,7 +1732,7 @@ code = '''
|
||||
lfs3.lookahead.off = 0;
|
||||
lfs3.lookahead.known = lfs3_min(8*CFG->lookahead_size,
|
||||
CFG->block_count-2);
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create a btree
|
||||
lfs3_btree_t btree;
|
||||
@@ -1822,7 +1822,7 @@ code = '''
|
||||
lfs3.lookahead.off = 0;
|
||||
lfs3.lookahead.known = lfs3_min(8*CFG->lookahead_size,
|
||||
CFG->block_count-2);
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create a tree with N elements
|
||||
lfs3_btree_t btree;
|
||||
@@ -1930,7 +1930,7 @@ code = '''
|
||||
lfs3.lookahead.off = 0;
|
||||
lfs3.lookahead.known = lfs3_min(8*CFG->lookahead_size,
|
||||
CFG->block_count-2);
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create a btree
|
||||
lfs3_btree_t btree;
|
||||
@@ -2082,7 +2082,7 @@ code = '''
|
||||
lfs3.lookahead.off = 0;
|
||||
lfs3.lookahead.known = lfs3_min(8*CFG->lookahead_size,
|
||||
CFG->block_count-2);
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create a tree with N elements
|
||||
lfs3_btree_t btree;
|
||||
@@ -2143,7 +2143,7 @@ code = '''
|
||||
lfs3.lookahead.off = 0;
|
||||
lfs3.lookahead.known = lfs3_min(8*CFG->lookahead_size,
|
||||
CFG->block_count-2);
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create a btree
|
||||
lfs3_btree_t btree;
|
||||
@@ -2234,7 +2234,7 @@ code = '''
|
||||
lfs3.lookahead.off = 0;
|
||||
lfs3.lookahead.known = lfs3_min(8*CFG->lookahead_size,
|
||||
CFG->block_count-2);
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create a tree with N elements
|
||||
lfs3_btree_t btree;
|
||||
@@ -2296,7 +2296,7 @@ code = '''
|
||||
lfs3.lookahead.off = 0;
|
||||
lfs3.lookahead.known = lfs3_min(8*CFG->lookahead_size,
|
||||
CFG->block_count-2);
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create a btree
|
||||
lfs3_btree_t btree;
|
||||
@@ -2476,7 +2476,7 @@ code = '''
|
||||
lfs3.lookahead.off = 0;
|
||||
lfs3.lookahead.known = lfs3_min(8*CFG->lookahead_size,
|
||||
CFG->block_count-2);
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create a tree
|
||||
lfs3_btree_t btree;
|
||||
@@ -2547,7 +2547,7 @@ code = '''
|
||||
lfs3.lookahead.off = 0;
|
||||
lfs3.lookahead.known = lfs3_min(8*CFG->lookahead_size,
|
||||
CFG->block_count-2);
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create a tree
|
||||
lfs3_btree_t btree;
|
||||
@@ -2621,7 +2621,7 @@ code = '''
|
||||
lfs3.lookahead.off = 0;
|
||||
lfs3.lookahead.known = lfs3_min(8*CFG->lookahead_size,
|
||||
CFG->block_count-2);
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create a tree
|
||||
lfs3_btree_t btree;
|
||||
@@ -2688,7 +2688,7 @@ code = '''
|
||||
lfs3.lookahead.off = 0;
|
||||
lfs3.lookahead.known = lfs3_min(8*CFG->lookahead_size,
|
||||
CFG->block_count-2);
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create a tree
|
||||
lfs3_btree_t btree;
|
||||
@@ -2772,7 +2772,7 @@ code = '''
|
||||
lfs3.lookahead.off = 0;
|
||||
lfs3.lookahead.known = lfs3_min(8*CFG->lookahead_size,
|
||||
CFG->block_count-2);
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create a btree
|
||||
lfs3_btree_t btree;
|
||||
@@ -2880,7 +2880,7 @@ code = '''
|
||||
lfs3.lookahead.off = 0;
|
||||
lfs3.lookahead.known = lfs3_min(8*CFG->lookahead_size,
|
||||
CFG->block_count-2);
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create a btree
|
||||
lfs3_btree_t btree;
|
||||
@@ -3047,7 +3047,7 @@ code = '''
|
||||
lfs3.lookahead.off = 0;
|
||||
lfs3.lookahead.known = lfs3_min(8*CFG->lookahead_size,
|
||||
CFG->block_count-2);
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create a zero-entry tree
|
||||
lfs3_btree_t btree;
|
||||
@@ -3079,7 +3079,7 @@ code = '''
|
||||
lfs3.lookahead.off = 0;
|
||||
lfs3.lookahead.known = lfs3_min(8*CFG->lookahead_size,
|
||||
CFG->block_count-2);
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create a single-entry tree
|
||||
lfs3_btree_t btree;
|
||||
@@ -3138,7 +3138,7 @@ code = '''
|
||||
lfs3.lookahead.off = 0;
|
||||
lfs3.lookahead.known = lfs3_min(8*CFG->lookahead_size,
|
||||
CFG->block_count-2);
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create a two-entry tree
|
||||
lfs3_btree_t btree;
|
||||
@@ -3214,7 +3214,7 @@ code = '''
|
||||
lfs3.lookahead.off = 0;
|
||||
lfs3.lookahead.known = lfs3_min(8*CFG->lookahead_size,
|
||||
CFG->block_count-2);
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create a two-entry tree
|
||||
lfs3_btree_t btree;
|
||||
@@ -3307,7 +3307,7 @@ code = '''
|
||||
lfs3.lookahead.off = 0;
|
||||
lfs3.lookahead.known = lfs3_min(8*CFG->lookahead_size,
|
||||
CFG->block_count-2);
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create a two-entry tree
|
||||
lfs3_btree_t btree;
|
||||
@@ -3401,7 +3401,7 @@ code = '''
|
||||
lfs3.lookahead.off = 0;
|
||||
lfs3.lookahead.known = lfs3_min(8*CFG->lookahead_size,
|
||||
CFG->block_count-2);
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create a tree with N elements
|
||||
lfs3_btree_t btree;
|
||||
@@ -3478,7 +3478,7 @@ code = '''
|
||||
lfs3.lookahead.off = 0;
|
||||
lfs3.lookahead.known = lfs3_min(8*CFG->lookahead_size,
|
||||
CFG->block_count-2);
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create a btree
|
||||
lfs3_btree_t btree;
|
||||
@@ -3596,7 +3596,7 @@ code = '''
|
||||
lfs3.lookahead.off = 0;
|
||||
lfs3.lookahead.known = lfs3_min(8*CFG->lookahead_size,
|
||||
CFG->block_count-2);
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create a tree with N elements
|
||||
lfs3_btree_t btree;
|
||||
@@ -3674,7 +3674,7 @@ code = '''
|
||||
lfs3.lookahead.off = 0;
|
||||
lfs3.lookahead.known = lfs3_min(8*CFG->lookahead_size,
|
||||
CFG->block_count-2);
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create a btree
|
||||
lfs3_btree_t btree;
|
||||
@@ -3833,7 +3833,7 @@ code = '''
|
||||
lfs3.lookahead.off = 0;
|
||||
lfs3.lookahead.known = lfs3_min(8*CFG->lookahead_size,
|
||||
CFG->block_count-2);
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create a btree
|
||||
lfs3_btree_t btree;
|
||||
@@ -4013,7 +4013,7 @@ code = '''
|
||||
lfs3.lookahead.off = 0;
|
||||
lfs3.lookahead.known = lfs3_min(8*CFG->lookahead_size,
|
||||
CFG->block_count-2);
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create a btree
|
||||
lfs3_btree_t btree;
|
||||
@@ -4241,7 +4241,7 @@ code = '''
|
||||
lfs3.lookahead.off = 0;
|
||||
lfs3.lookahead.known = lfs3_min(8*CFG->lookahead_size,
|
||||
CFG->block_count-2);
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create a tree with N elements
|
||||
lfs3_btree_t btree;
|
||||
@@ -4369,7 +4369,7 @@ code = '''
|
||||
lfs3.lookahead.off = 0;
|
||||
lfs3.lookahead.known = lfs3_min(8*CFG->lookahead_size,
|
||||
CFG->block_count-2);
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create a btree
|
||||
lfs3_btree_t btree;
|
||||
|
||||
@@ -1226,7 +1226,7 @@ code = '''
|
||||
lfs3_file_sync(&lfs3, &file) => 0;
|
||||
|
||||
// create an empty btree
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
lfs3_rbyd_alloc(&lfs3, &file.b.shrub.r) => 0;
|
||||
lfs3_rbyd_commit(&lfs3, &file.b.shrub.r, 0, LFS3_RATTRS(
|
||||
LFS3_RATTR_BUF(LFS3_TAG_DATA, +1, "?", 1))) => 0;
|
||||
|
||||
+46
-46
@@ -42,7 +42,7 @@ code = '''
|
||||
lfs3_t lfs3;
|
||||
lfs3_format(&lfs3, LFS3_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfs3_mount(&lfs3, LFS3_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
for (lfs3_size_t i = 0; i < N; i++) {
|
||||
lfs3_mdir_commit(&lfs3, &lfs3.mroot, LFS3_RATTRS(
|
||||
@@ -86,7 +86,7 @@ code = '''
|
||||
lfs3_t lfs3;
|
||||
lfs3_format(&lfs3, LFS3_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfs3_mount(&lfs3, LFS3_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
for (lfs3_size_t i = 0; i < N; i++) {
|
||||
// force mroot to compact
|
||||
@@ -133,7 +133,7 @@ code = '''
|
||||
lfs3_t lfs3;
|
||||
lfs3_format(&lfs3, LFS3_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfs3_mount(&lfs3, LFS3_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
for (lfs3_size_t i = 0; i < N; i++) {
|
||||
lfs3_mdir_commit(&lfs3, &lfs3.mroot, LFS3_RATTRS(
|
||||
@@ -182,7 +182,7 @@ code = '''
|
||||
lfs3_t lfs3;
|
||||
lfs3_format(&lfs3, LFS3_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfs3_mount(&lfs3, LFS3_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
lfs3_data_t data;
|
||||
|
||||
// create a 2 large rattrs that needs to be uninlined
|
||||
@@ -265,7 +265,7 @@ code = '''
|
||||
lfs3_t lfs3;
|
||||
lfs3_format(&lfs3, LFS3_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfs3_mount(&lfs3, LFS3_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
lfs3_data_t data;
|
||||
|
||||
// create 2 large entries that needs to be uninlined and split
|
||||
@@ -360,7 +360,7 @@ code = '''
|
||||
lfs3_t lfs3;
|
||||
lfs3_format(&lfs3, LFS3_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfs3_mount(&lfs3, LFS3_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
lfs3_data_t data;
|
||||
|
||||
// create 2 large entries that needs to be uninlined and split
|
||||
@@ -501,7 +501,7 @@ code = '''
|
||||
lfs3_t lfs3;
|
||||
lfs3_format(&lfs3, LFS3_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfs3_mount(&lfs3, LFS3_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create entries
|
||||
for (lfs3_size_t i = 0; i < N; i++) {
|
||||
@@ -588,7 +588,7 @@ code = '''
|
||||
lfs3_t lfs3;
|
||||
lfs3_format(&lfs3, LFS3_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfs3_mount(&lfs3, LFS3_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
bool sim[N];
|
||||
for (lfs3_size_t i = 0; i < N; i++) {
|
||||
@@ -697,7 +697,7 @@ code = '''
|
||||
lfs3_t lfs3;
|
||||
lfs3_format(&lfs3, LFS3_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfs3_mount(&lfs3, LFS3_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
lfs3_data_t data;
|
||||
|
||||
// create 2 large entries that needs to be uninlined and split
|
||||
@@ -791,7 +791,7 @@ code = '''
|
||||
lfs3_t lfs3;
|
||||
lfs3_format(&lfs3, LFS3_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfs3_mount(&lfs3, LFS3_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
lfs3_data_t data;
|
||||
|
||||
// create 2 large entries that needs to be uninlined and split
|
||||
@@ -887,7 +887,7 @@ code = '''
|
||||
lfs3_t lfs3;
|
||||
lfs3_format(&lfs3, LFS3_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfs3_mount(&lfs3, LFS3_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
lfs3_data_t data;
|
||||
|
||||
// create 2 large entries that needs to be uninlined and split
|
||||
@@ -964,7 +964,7 @@ code = '''
|
||||
lfs3_t lfs3;
|
||||
lfs3_format(&lfs3, LFS3_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfs3_mount(&lfs3, LFS3_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
lfs3_data_t data;
|
||||
|
||||
// create 2 large entries that needs to be uninlined and split
|
||||
@@ -1084,7 +1084,7 @@ code = '''
|
||||
lfs3_t lfs3;
|
||||
lfs3_format(&lfs3, LFS3_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfs3_mount(&lfs3, LFS3_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
lfs3_data_t data;
|
||||
|
||||
// create 2 large entries that needs to be uninlined and split
|
||||
@@ -1206,7 +1206,7 @@ code = '''
|
||||
lfs3_t lfs3;
|
||||
lfs3_format(&lfs3, LFS3_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfs3_mount(&lfs3, LFS3_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
bool sim[N];
|
||||
for (lfs3_size_t i = 0; i < N; i++) {
|
||||
@@ -1343,7 +1343,7 @@ code = '''
|
||||
lfs3_t lfs3;
|
||||
lfs3_format(&lfs3, LFS3_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfs3_mount(&lfs3, LFS3_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
lfs3_data_t data;
|
||||
|
||||
// create a 2 large rattrs that needs to be uninlined
|
||||
@@ -1469,7 +1469,7 @@ code = '''
|
||||
lfs3_t lfs3;
|
||||
lfs3_format(&lfs3, LFS3_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfs3_mount(&lfs3, LFS3_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
lfs3_data_t data;
|
||||
|
||||
// create 2 large entries that needs to be uninlined and split
|
||||
@@ -1609,7 +1609,7 @@ code = '''
|
||||
lfs3_t lfs3;
|
||||
lfs3_format(&lfs3, LFS3_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfs3_mount(&lfs3, LFS3_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
lfs3_data_t data;
|
||||
|
||||
// create 2 large entries that needs to be uninlined and split
|
||||
@@ -1749,7 +1749,7 @@ code = '''
|
||||
lfs3_t lfs3;
|
||||
lfs3_format(&lfs3, LFS3_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfs3_mount(&lfs3, LFS3_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
lfs3_data_t data;
|
||||
|
||||
// prepare mroot with an entry
|
||||
@@ -1832,7 +1832,7 @@ code = '''
|
||||
lfs3_t lfs3;
|
||||
lfs3_format(&lfs3, LFS3_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfs3_mount(&lfs3, LFS3_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
lfs3_data_t data;
|
||||
|
||||
// prepare mroot with an entry
|
||||
@@ -1970,7 +1970,7 @@ code = '''
|
||||
lfs3_t lfs3;
|
||||
lfs3_format(&lfs3, LFS3_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfs3_mount(&lfs3, LFS3_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
lfs3_data_t data;
|
||||
|
||||
// prepare mroot with an entry
|
||||
@@ -2081,7 +2081,7 @@ code = '''
|
||||
lfs3_t lfs3;
|
||||
lfs3_format(&lfs3, LFS3_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfs3_mount(&lfs3, LFS3_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
lfs3_data_t data;
|
||||
|
||||
// create 2 large entries that needs to be uninlined and split
|
||||
@@ -2226,7 +2226,7 @@ code = '''
|
||||
lfs3_t lfs3;
|
||||
lfs3_format(&lfs3, LFS3_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfs3_mount(&lfs3, LFS3_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
lfs3_data_t data;
|
||||
|
||||
// create 2 large entries that needs to be uninlined and split
|
||||
@@ -2388,7 +2388,7 @@ code = '''
|
||||
lfs3_t lfs3;
|
||||
lfs3_format(&lfs3, LFS3_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfs3_mount(&lfs3, LFS3_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
lfs3_data_t data;
|
||||
|
||||
// create 2 large entries that needs to be uninlined and split
|
||||
@@ -2495,7 +2495,7 @@ code = '''
|
||||
lfs3_t lfs3;
|
||||
lfs3_format(&lfs3, LFS3_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfs3_mount(&lfs3, LFS3_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// force mroot to compact once, so the second compact below will
|
||||
// trigger a relocation
|
||||
@@ -2588,7 +2588,7 @@ code = '''
|
||||
lfs3_t lfs3;
|
||||
lfs3_format(&lfs3, LFS3_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfs3_mount(&lfs3, LFS3_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// force mroot to compact once, so the second compact below will
|
||||
// trigger a relocation
|
||||
@@ -2695,7 +2695,7 @@ code = '''
|
||||
lfs3_t lfs3;
|
||||
lfs3_format(&lfs3, LFS3_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfs3_mount(&lfs3, LFS3_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
bool sim[N];
|
||||
for (lfs3_size_t i = 0; i < N; i++) {
|
||||
@@ -2857,7 +2857,7 @@ code = '''
|
||||
lfs3_t lfs3;
|
||||
lfs3_format(&lfs3, LFS3_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfs3_mount(&lfs3, LFS3_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// setup our neighbors
|
||||
lfs3_handle_t left = {.flags=0};
|
||||
@@ -2917,7 +2917,7 @@ code = '''
|
||||
lfs3_t lfs3;
|
||||
lfs3_format(&lfs3, LFS3_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfs3_mount(&lfs3, LFS3_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// setup our neighbors
|
||||
lfs3_handle_t left = {.flags=0};
|
||||
@@ -2967,7 +2967,7 @@ code = '''
|
||||
lfs3_t lfs3;
|
||||
lfs3_format(&lfs3, LFS3_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfs3_mount(&lfs3, LFS3_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// setup our neighbors
|
||||
lfs3_handle_t left = {.flags=0};
|
||||
@@ -3019,7 +3019,7 @@ code = '''
|
||||
lfs3_t lfs3;
|
||||
lfs3_format(&lfs3, LFS3_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfs3_mount(&lfs3, LFS3_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// setup our neighbors
|
||||
lfs3_handle_t left = {.flags=0};
|
||||
@@ -3096,7 +3096,7 @@ code = '''
|
||||
lfs3_t lfs3;
|
||||
lfs3_format(&lfs3, LFS3_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfs3_mount(&lfs3, LFS3_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// setup our neighbors
|
||||
lfs3_handle_t left = {.flags=0};
|
||||
@@ -3187,7 +3187,7 @@ code = '''
|
||||
lfs3_t lfs3;
|
||||
lfs3_format(&lfs3, LFS3_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfs3_mount(&lfs3, LFS3_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// setup our neighbors
|
||||
lfs3_handle_t left = {.flags=0};
|
||||
@@ -3245,7 +3245,7 @@ code = '''
|
||||
lfs3_t lfs3;
|
||||
lfs3_format(&lfs3, LFS3_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfs3_mount(&lfs3, LFS3_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// setup our neighbors
|
||||
lfs3_handle_t left = {.flags=0};
|
||||
@@ -3342,7 +3342,7 @@ code = '''
|
||||
lfs3_t lfs3;
|
||||
lfs3_format(&lfs3, LFS3_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfs3_mount(&lfs3, LFS3_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// setup our neighbors
|
||||
lfs3_handle_t left = {.flags=0};
|
||||
@@ -3437,7 +3437,7 @@ code = '''
|
||||
lfs3_t lfs3;
|
||||
lfs3_format(&lfs3, LFS3_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfs3_mount(&lfs3, LFS3_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// setup our neighbors
|
||||
lfs3_handle_t left = {.flags=0};
|
||||
@@ -3547,7 +3547,7 @@ code = '''
|
||||
lfs3_t lfs3;
|
||||
lfs3_format(&lfs3, LFS3_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfs3_mount(&lfs3, LFS3_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// setup our neighbors
|
||||
lfs3_handle_t left = {.flags=0};
|
||||
@@ -3651,7 +3651,7 @@ code = '''
|
||||
lfs3_t lfs3;
|
||||
lfs3_format(&lfs3, LFS3_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfs3_mount(&lfs3, LFS3_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// insert at least one entry
|
||||
lfs3_mdir_t mdir;
|
||||
@@ -3757,7 +3757,7 @@ code = '''
|
||||
lfs3_t lfs3;
|
||||
lfs3_format(&lfs3, LFS3_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfs3_mount(&lfs3, LFS3_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
lfs3_data_t data;
|
||||
|
||||
// create a 2 large rattrs that needs to be uninlined
|
||||
@@ -3897,7 +3897,7 @@ code = '''
|
||||
lfs3_t lfs3;
|
||||
lfs3_format(&lfs3, LFS3_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfs3_mount(&lfs3, LFS3_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
lfs3_data_t data;
|
||||
|
||||
// create 2 large entries that needs to be uninlined and split
|
||||
@@ -4049,7 +4049,7 @@ code = '''
|
||||
lfs3_t lfs3;
|
||||
lfs3_format(&lfs3, LFS3_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfs3_mount(&lfs3, LFS3_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
lfs3_data_t data;
|
||||
|
||||
// create 2 large entries that needs to be uninlined and split
|
||||
@@ -4234,7 +4234,7 @@ code = '''
|
||||
lfs3_t lfs3;
|
||||
lfs3_format(&lfs3, LFS3_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfs3_mount(&lfs3, LFS3_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// insert at least one entry
|
||||
lfs3_mdir_t mdir;
|
||||
@@ -4353,7 +4353,7 @@ code = '''
|
||||
lfs3_t lfs3;
|
||||
lfs3_format(&lfs3, LFS3_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfs3_mount(&lfs3, LFS3_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
// create entries
|
||||
for (lfs3_size_t i = 0; i < N; i++) {
|
||||
@@ -4505,7 +4505,7 @@ code = '''
|
||||
lfs3_t lfs3;
|
||||
lfs3_format(&lfs3, LFS3_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfs3_mount(&lfs3, LFS3_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
bool sim[N];
|
||||
for (lfs3_size_t i = 0; i < N; i++) {
|
||||
@@ -4678,7 +4678,7 @@ code = '''
|
||||
lfs3_t lfs3;
|
||||
lfs3_format(&lfs3, LFS3_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfs3_mount(&lfs3, LFS3_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
|
||||
lfs3_mdir_commit(&lfs3, &lfs3.mroot, LFS3_RATTRS(
|
||||
LFS3_RATTR_MPTR(
|
||||
@@ -4998,7 +4998,7 @@ code = '''
|
||||
lfs3_t lfs3;
|
||||
lfs3_format(&lfs3, LFS3_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfs3_mount(&lfs3, LFS3_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
lfs3_data_t data;
|
||||
|
||||
// prepare mroot with an entry
|
||||
@@ -5058,7 +5058,7 @@ code = '''
|
||||
lfs3_t lfs3;
|
||||
lfs3_format(&lfs3, LFS3_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfs3_mount(&lfs3, LFS3_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs3_alloc_ckpoint(&lfs3, NULL);
|
||||
lfs3_alloc_ckpoint(&lfs3);
|
||||
lfs3_data_t data;
|
||||
|
||||
// prepare mroot with an entry
|
||||
|
||||
Reference in New Issue
Block a user