t: Restricted LFS_ERR_BUSY to only LFS_T_EXCL
So now lfsr_traversal_read will only return LFS_ERR_BUSY if LFS_T_EXCL
was provided to lfsr_traversal_open.
This means it's no longer possible to opportunistically traverse blocks,
_and_ detect mutation in the same traversal (though I suppose you could
open multiple traversals for this?), but on the flipside this
potentially frees up the implementation a bit.
This motivation for this is that LFS_ERR_BUSY is potentially confusing
and annoying to handle if you don't care about mutation.
code stack
before: 34566 2624
after: 34558 (-0.0%) 2624 (+0.0%)
This commit is contained in:
@@ -9532,10 +9532,7 @@ done:;
|
|||||||
lfs_alloc_markfree(lfs);
|
lfs_alloc_markfree(lfs);
|
||||||
}
|
}
|
||||||
|
|
||||||
// return BUSY if we're dirty, NOENT if we're clean
|
return LFS_ERR_NOENT;
|
||||||
return (lfsr_f_isdirty(t->mt.o.flags))
|
|
||||||
? LFS_ERR_BUSY
|
|
||||||
: LFS_ERR_NOENT;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int lfsr_traversal_rewind_(lfs_t *lfs, lfsr_traversal_t *t) {
|
static int lfsr_traversal_rewind_(lfs_t *lfs, lfsr_traversal_t *t) {
|
||||||
|
|||||||
@@ -1058,8 +1058,8 @@ int lfsr_traversal_close(lfs_t *lfs, lfsr_traversal_t *traversal);
|
|||||||
//
|
//
|
||||||
// Fills out the tinfo structure.
|
// Fills out the tinfo structure.
|
||||||
//
|
//
|
||||||
// Returns 0 on success, LFS_ERR_NOENT at the end of traversal, LFS_ERR_BUSY
|
// Returns 0 on success, LFS_ERR_NOENT at the end of traversal, or a
|
||||||
// if filesystem has been modified, or a negative error code on failure.
|
// negative error code on failure.
|
||||||
int lfsr_traversal_read(lfs_t *lfs, lfsr_traversal_t *traversal,
|
int lfsr_traversal_read(lfs_t *lfs, lfsr_traversal_t *traversal,
|
||||||
struct lfs_tinfo *tinfo);
|
struct lfs_tinfo *tinfo);
|
||||||
|
|
||||||
|
|||||||
+67
-55
@@ -1691,8 +1691,7 @@ code = '''
|
|||||||
LFS_O_WRONLY | LFS_O_CREAT | LFS_O_EXCL) => 0;
|
LFS_O_WRONLY | LFS_O_CREAT | LFS_O_EXCL) => 0;
|
||||||
lfsr_file_close(&lfs, &file) => 0;
|
lfsr_file_close(&lfs, &file) => 0;
|
||||||
|
|
||||||
// read should immediately error
|
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_NOENT;
|
||||||
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_BUSY;
|
|
||||||
lfsr_traversal_close(&lfs, &t) => 0;
|
lfsr_traversal_close(&lfs, &t) => 0;
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
@@ -1708,8 +1707,7 @@ code = '''
|
|||||||
lfsr_file_close(&lfs, &file) => 0;
|
lfsr_file_close(&lfs, &file) => 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// final read should return BUSY
|
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_NOENT;
|
||||||
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_BUSY;
|
|
||||||
lfsr_traversal_close(&lfs, &t) => 0;
|
lfsr_traversal_close(&lfs, &t) => 0;
|
||||||
|
|
||||||
done:;
|
done:;
|
||||||
@@ -1822,9 +1820,15 @@ code = '''
|
|||||||
if (WHEN == 1) {
|
if (WHEN == 1) {
|
||||||
lfsr_mkdir(&lfs, "spider") => 0;
|
lfsr_mkdir(&lfs, "spider") => 0;
|
||||||
|
|
||||||
// read should immediately error
|
if (EXCL) {
|
||||||
|
// read should immediately error
|
||||||
|
struct lfs_tinfo tinfo;
|
||||||
|
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_BUSY;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
struct lfs_tinfo tinfo;
|
struct lfs_tinfo tinfo;
|
||||||
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_BUSY;
|
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_NOENT;
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1843,8 +1847,7 @@ code = '''
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// final read should return BUSY
|
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_NOENT;
|
||||||
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_BUSY;
|
|
||||||
done:;
|
done:;
|
||||||
lfsr_traversal_close(&lfs, &t) => 0;
|
lfsr_traversal_close(&lfs, &t) => 0;
|
||||||
|
|
||||||
@@ -1895,9 +1898,15 @@ code = '''
|
|||||||
if (WHEN == 1) {
|
if (WHEN == 1) {
|
||||||
lfsr_remove(&lfs, "spider") => 0;
|
lfsr_remove(&lfs, "spider") => 0;
|
||||||
|
|
||||||
// read should immediately error
|
if (EXCL) {
|
||||||
|
// read should immediately error
|
||||||
|
struct lfs_tinfo tinfo;
|
||||||
|
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_BUSY;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
struct lfs_tinfo tinfo;
|
struct lfs_tinfo tinfo;
|
||||||
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_BUSY;
|
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_NOENT;
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1916,8 +1925,7 @@ code = '''
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// final read should return BUSY
|
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_NOENT;
|
||||||
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_BUSY;
|
|
||||||
done:;
|
done:;
|
||||||
lfsr_traversal_close(&lfs, &t) => 0;
|
lfsr_traversal_close(&lfs, &t) => 0;
|
||||||
|
|
||||||
@@ -1968,9 +1976,15 @@ code = '''
|
|||||||
if (WHEN == 1) {
|
if (WHEN == 1) {
|
||||||
lfsr_rename(&lfs, "spider", "scorpion") => 0;
|
lfsr_rename(&lfs, "spider", "scorpion") => 0;
|
||||||
|
|
||||||
// read should immediately error
|
if (EXCL) {
|
||||||
|
// read should immediately error
|
||||||
|
struct lfs_tinfo tinfo;
|
||||||
|
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_BUSY;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
struct lfs_tinfo tinfo;
|
struct lfs_tinfo tinfo;
|
||||||
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_BUSY;
|
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_NOENT;
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1989,8 +2003,7 @@ code = '''
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// final read should return BUSY
|
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_NOENT;
|
||||||
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_BUSY;
|
|
||||||
done:;
|
done:;
|
||||||
lfsr_traversal_close(&lfs, &t) => 0;
|
lfsr_traversal_close(&lfs, &t) => 0;
|
||||||
|
|
||||||
@@ -2050,8 +2063,11 @@ code = '''
|
|||||||
// step traversal
|
// step traversal
|
||||||
struct lfs_tinfo tinfo;
|
struct lfs_tinfo tinfo;
|
||||||
int err = lfsr_traversal_read(&lfs, &t, &tinfo);
|
int err = lfsr_traversal_read(&lfs, &t, &tinfo);
|
||||||
assert(!err || err == LFS_ERR_BUSY);
|
assert(!err
|
||||||
if (err == LFS_ERR_BUSY) {
|
|| (!EXCL && err == LFS_ERR_NOENT)
|
||||||
|
|| (EXCL && err == LFS_ERR_BUSY));
|
||||||
|
if (err == LFS_ERR_NOENT
|
||||||
|
|| err == LFS_ERR_BUSY) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2124,8 +2140,11 @@ code = '''
|
|||||||
// step traversal
|
// step traversal
|
||||||
struct lfs_tinfo tinfo;
|
struct lfs_tinfo tinfo;
|
||||||
int err = lfsr_traversal_read(&lfs, &t, &tinfo);
|
int err = lfsr_traversal_read(&lfs, &t, &tinfo);
|
||||||
assert(!err || err == LFS_ERR_BUSY);
|
assert(!err
|
||||||
if (err == LFS_ERR_BUSY) {
|
|| (!EXCL && err == LFS_ERR_NOENT)
|
||||||
|
|| (EXCL && err == LFS_ERR_BUSY));
|
||||||
|
if (err == LFS_ERR_NOENT
|
||||||
|
|| err == LFS_ERR_BUSY) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2213,7 +2232,7 @@ code = '''
|
|||||||
lfsr_file_close(&lfs, &file) => 0;
|
lfsr_file_close(&lfs, &file) => 0;
|
||||||
|
|
||||||
// we should be at end of traversal now
|
// we should be at end of traversal now
|
||||||
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_BUSY;
|
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_NOENT;
|
||||||
lfsr_traversal_close(&lfs, &t) => 0;
|
lfsr_traversal_close(&lfs, &t) => 0;
|
||||||
|
|
||||||
// check the file contents
|
// check the file contents
|
||||||
@@ -2298,7 +2317,7 @@ code = '''
|
|||||||
lfsr_file_close(&lfs, &file) => 0;
|
lfsr_file_close(&lfs, &file) => 0;
|
||||||
|
|
||||||
// we should be at end of traversal now
|
// we should be at end of traversal now
|
||||||
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_BUSY;
|
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_NOENT;
|
||||||
lfsr_traversal_close(&lfs, &t) => 0;
|
lfsr_traversal_close(&lfs, &t) => 0;
|
||||||
|
|
||||||
// check the file contents
|
// check the file contents
|
||||||
@@ -2379,7 +2398,7 @@ code = '''
|
|||||||
lfsr_file_close(&lfs, &file) => 0;
|
lfsr_file_close(&lfs, &file) => 0;
|
||||||
|
|
||||||
// we should be at end of traversal now
|
// we should be at end of traversal now
|
||||||
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_BUSY;
|
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_NOENT;
|
||||||
lfsr_traversal_close(&lfs, &t) => 0;
|
lfsr_traversal_close(&lfs, &t) => 0;
|
||||||
|
|
||||||
// check the file contents
|
// check the file contents
|
||||||
@@ -2452,7 +2471,7 @@ code = '''
|
|||||||
lfsr_file_write(&lfs, &file1, wbuf1, SIZE) => SIZE;
|
lfsr_file_write(&lfs, &file1, wbuf1, SIZE) => SIZE;
|
||||||
|
|
||||||
// we should be at end of traversal now
|
// we should be at end of traversal now
|
||||||
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_BUSY;
|
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_NOENT;
|
||||||
lfsr_traversal_close(&lfs, &t) => 0;
|
lfsr_traversal_close(&lfs, &t) => 0;
|
||||||
|
|
||||||
lfsr_file_close(&lfs, &file1) => 0;
|
lfsr_file_close(&lfs, &file1) => 0;
|
||||||
@@ -2544,7 +2563,7 @@ code = '''
|
|||||||
lfsr_traversal_read(&lfs, &t, &tinfo) => 0;
|
lfsr_traversal_read(&lfs, &t, &tinfo) => 0;
|
||||||
assert(tinfo.btype == LFS_BTYPE_DATA);
|
assert(tinfo.btype == LFS_BTYPE_DATA);
|
||||||
// we should be at end of traversal now
|
// we should be at end of traversal now
|
||||||
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_BUSY;
|
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_NOENT;
|
||||||
lfsr_traversal_close(&lfs, &t) => 0;
|
lfsr_traversal_close(&lfs, &t) => 0;
|
||||||
|
|
||||||
lfsr_file_close(&lfs, &file1) => 0;
|
lfsr_file_close(&lfs, &file1) => 0;
|
||||||
@@ -2624,7 +2643,7 @@ code = '''
|
|||||||
lfsr_file_write(&lfs, &file1, wbuf1, SIZE) => SIZE;
|
lfsr_file_write(&lfs, &file1, wbuf1, SIZE) => SIZE;
|
||||||
|
|
||||||
// we should be at end of traversal now
|
// we should be at end of traversal now
|
||||||
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_BUSY;
|
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_NOENT;
|
||||||
lfsr_traversal_close(&lfs, &t) => 0;
|
lfsr_traversal_close(&lfs, &t) => 0;
|
||||||
|
|
||||||
lfsr_file_close(&lfs, &file1) => 0;
|
lfsr_file_close(&lfs, &file1) => 0;
|
||||||
@@ -2701,8 +2720,7 @@ code = '''
|
|||||||
lfsr_file_close(&lfs, &file1) => 0;
|
lfsr_file_close(&lfs, &file1) => 0;
|
||||||
|
|
||||||
// we should be at end of traversal now
|
// we should be at end of traversal now
|
||||||
lfsr_traversal_read(&lfs, &t, &tinfo)
|
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_NOENT;
|
||||||
=> (DESYNC) ? LFS_ERR_NOENT : LFS_ERR_BUSY;
|
|
||||||
lfsr_traversal_close(&lfs, &t) => 0;
|
lfsr_traversal_close(&lfs, &t) => 0;
|
||||||
|
|
||||||
lfsr_file_close(&lfs, &file2) => 0;
|
lfsr_file_close(&lfs, &file2) => 0;
|
||||||
@@ -2798,12 +2816,9 @@ code = '''
|
|||||||
assert(tinfo.btype == LFS_BTYPE_DATA);
|
assert(tinfo.btype == LFS_BTYPE_DATA);
|
||||||
lfsr_traversal_read(&lfs, &t, &tinfo) => 0;
|
lfsr_traversal_read(&lfs, &t, &tinfo) => 0;
|
||||||
assert(tinfo.btype == LFS_BTYPE_DATA);
|
assert(tinfo.btype == LFS_BTYPE_DATA);
|
||||||
// we should be at end of traversal now
|
|
||||||
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_NOENT;
|
|
||||||
} else {
|
|
||||||
// we should be at end of traversal now
|
|
||||||
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_BUSY;
|
|
||||||
}
|
}
|
||||||
|
// we should be at end of traversal now
|
||||||
|
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_NOENT;
|
||||||
lfsr_traversal_close(&lfs, &t) => 0;
|
lfsr_traversal_close(&lfs, &t) => 0;
|
||||||
|
|
||||||
lfsr_file_close(&lfs, &file2) => 0;
|
lfsr_file_close(&lfs, &file2) => 0;
|
||||||
@@ -2892,12 +2907,9 @@ code = '''
|
|||||||
assert(tinfo.btype == LFS_BTYPE_DATA);
|
assert(tinfo.btype == LFS_BTYPE_DATA);
|
||||||
lfsr_traversal_read(&lfs, &t, &tinfo) => 0;
|
lfsr_traversal_read(&lfs, &t, &tinfo) => 0;
|
||||||
assert(tinfo.btype == LFS_BTYPE_DATA);
|
assert(tinfo.btype == LFS_BTYPE_DATA);
|
||||||
// we should be at end of traversal now
|
|
||||||
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_NOENT;
|
|
||||||
} else {
|
|
||||||
// we should be at end of traversal now
|
|
||||||
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_BUSY;
|
|
||||||
}
|
}
|
||||||
|
// we should be at end of traversal now
|
||||||
|
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_NOENT;
|
||||||
lfsr_traversal_close(&lfs, &t) => 0;
|
lfsr_traversal_close(&lfs, &t) => 0;
|
||||||
|
|
||||||
lfsr_file_close(&lfs, &file2) => 0;
|
lfsr_file_close(&lfs, &file2) => 0;
|
||||||
@@ -2978,7 +2990,7 @@ code = '''
|
|||||||
lfsr_remove(&lfs, "spider") => 0;
|
lfsr_remove(&lfs, "spider") => 0;
|
||||||
|
|
||||||
// we should be at end of traversal now
|
// we should be at end of traversal now
|
||||||
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_BUSY;
|
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_NOENT;
|
||||||
lfsr_traversal_close(&lfs, &t) => 0;
|
lfsr_traversal_close(&lfs, &t) => 0;
|
||||||
|
|
||||||
// check the file contents
|
// check the file contents
|
||||||
@@ -3048,7 +3060,7 @@ code = '''
|
|||||||
lfsr_rename(&lfs, "spider", "tarantula") => 0;
|
lfsr_rename(&lfs, "spider", "tarantula") => 0;
|
||||||
|
|
||||||
// we should be at end of traversal now
|
// we should be at end of traversal now
|
||||||
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_BUSY;
|
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_NOENT;
|
||||||
lfsr_traversal_close(&lfs, &t) => 0;
|
lfsr_traversal_close(&lfs, &t) => 0;
|
||||||
|
|
||||||
// check the file contents
|
// check the file contents
|
||||||
@@ -3118,7 +3130,7 @@ code = '''
|
|||||||
lfsr_rename(&lfs, "tarantula", "spider") => 0;
|
lfsr_rename(&lfs, "tarantula", "spider") => 0;
|
||||||
|
|
||||||
// we should be at end of traversal now
|
// we should be at end of traversal now
|
||||||
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_BUSY;
|
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_NOENT;
|
||||||
lfsr_traversal_close(&lfs, &t) => 0;
|
lfsr_traversal_close(&lfs, &t) => 0;
|
||||||
|
|
||||||
// check the file contents
|
// check the file contents
|
||||||
@@ -3190,7 +3202,7 @@ code = '''
|
|||||||
}
|
}
|
||||||
|
|
||||||
// we should be at end of traversal now
|
// we should be at end of traversal now
|
||||||
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_BUSY;
|
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_NOENT;
|
||||||
lfsr_traversal_close(&lfs, &t) => 0;
|
lfsr_traversal_close(&lfs, &t) => 0;
|
||||||
|
|
||||||
// check the file contents
|
// check the file contents
|
||||||
@@ -3280,7 +3292,7 @@ code = '''
|
|||||||
}
|
}
|
||||||
|
|
||||||
// we should be at end of traversal now
|
// we should be at end of traversal now
|
||||||
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_BUSY;
|
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_NOENT;
|
||||||
lfsr_traversal_close(&lfs, &t) => 0;
|
lfsr_traversal_close(&lfs, &t) => 0;
|
||||||
|
|
||||||
// check the file contents
|
// check the file contents
|
||||||
@@ -3380,7 +3392,7 @@ code = '''
|
|||||||
}
|
}
|
||||||
|
|
||||||
// we should be at end of traversal now
|
// we should be at end of traversal now
|
||||||
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_BUSY;
|
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_NOENT;
|
||||||
lfsr_traversal_close(&lfs, &t) => 0;
|
lfsr_traversal_close(&lfs, &t) => 0;
|
||||||
|
|
||||||
// check the file contents
|
// check the file contents
|
||||||
@@ -3460,7 +3472,7 @@ code = '''
|
|||||||
}
|
}
|
||||||
|
|
||||||
// we should be at end of traversal now
|
// we should be at end of traversal now
|
||||||
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_BUSY;
|
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_NOENT;
|
||||||
lfsr_traversal_close(&lfs, &t) => 0;
|
lfsr_traversal_close(&lfs, &t) => 0;
|
||||||
|
|
||||||
// check the file contents
|
// check the file contents
|
||||||
@@ -3541,7 +3553,7 @@ code = '''
|
|||||||
}
|
}
|
||||||
|
|
||||||
// we should be at end of traversal now
|
// we should be at end of traversal now
|
||||||
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_BUSY;
|
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_NOENT;
|
||||||
lfsr_traversal_close(&lfs, &t) => 0;
|
lfsr_traversal_close(&lfs, &t) => 0;
|
||||||
|
|
||||||
// check the file contents
|
// check the file contents
|
||||||
@@ -3645,7 +3657,7 @@ code = '''
|
|||||||
lfsr_traversal_read(&lfs, &t, &tinfo) => 0;
|
lfsr_traversal_read(&lfs, &t, &tinfo) => 0;
|
||||||
assert(tinfo.btype == LFS_BTYPE_DATA);
|
assert(tinfo.btype == LFS_BTYPE_DATA);
|
||||||
// we should be at end of traversal now
|
// we should be at end of traversal now
|
||||||
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_BUSY;
|
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_NOENT;
|
||||||
lfsr_traversal_close(&lfs, &t) => 0;
|
lfsr_traversal_close(&lfs, &t) => 0;
|
||||||
|
|
||||||
// check the file contents
|
// check the file contents
|
||||||
@@ -3740,7 +3752,7 @@ code = '''
|
|||||||
}
|
}
|
||||||
|
|
||||||
// we should be at end of traversal now
|
// we should be at end of traversal now
|
||||||
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_BUSY;
|
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_NOENT;
|
||||||
lfsr_traversal_close(&lfs, &t) => 0;
|
lfsr_traversal_close(&lfs, &t) => 0;
|
||||||
|
|
||||||
// check the file contents
|
// check the file contents
|
||||||
@@ -3896,7 +3908,7 @@ code = '''
|
|||||||
lfsr_traversal_read(&lfs, &t, &tinfo) => 0;
|
lfsr_traversal_read(&lfs, &t, &tinfo) => 0;
|
||||||
assert(tinfo.btype == LFS_BTYPE_DATA);
|
assert(tinfo.btype == LFS_BTYPE_DATA);
|
||||||
// we should be at end of traversal now
|
// we should be at end of traversal now
|
||||||
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_BUSY;
|
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_NOENT;
|
||||||
lfsr_traversal_close(&lfs, &t) => 0;
|
lfsr_traversal_close(&lfs, &t) => 0;
|
||||||
|
|
||||||
// check the file contents
|
// check the file contents
|
||||||
@@ -4056,7 +4068,7 @@ code = '''
|
|||||||
lfsr_traversal_read(&lfs, &t, &tinfo) => 0;
|
lfsr_traversal_read(&lfs, &t, &tinfo) => 0;
|
||||||
assert(tinfo.btype == LFS_BTYPE_DATA);
|
assert(tinfo.btype == LFS_BTYPE_DATA);
|
||||||
// we should be at end of traversal now
|
// we should be at end of traversal now
|
||||||
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_BUSY;
|
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_NOENT;
|
||||||
lfsr_traversal_close(&lfs, &t) => 0;
|
lfsr_traversal_close(&lfs, &t) => 0;
|
||||||
|
|
||||||
// check the file contents
|
// check the file contents
|
||||||
@@ -4221,7 +4233,7 @@ code = '''
|
|||||||
lfsr_traversal_read(&lfs, &t, &tinfo) => 0;
|
lfsr_traversal_read(&lfs, &t, &tinfo) => 0;
|
||||||
assert(tinfo.btype == LFS_BTYPE_DATA);
|
assert(tinfo.btype == LFS_BTYPE_DATA);
|
||||||
// we should be at end of traversal now
|
// we should be at end of traversal now
|
||||||
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_BUSY;
|
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_NOENT;
|
||||||
lfsr_traversal_close(&lfs, &t) => 0;
|
lfsr_traversal_close(&lfs, &t) => 0;
|
||||||
|
|
||||||
// check the file contents
|
// check the file contents
|
||||||
@@ -4385,7 +4397,7 @@ code = '''
|
|||||||
lfsr_traversal_read(&lfs, &t, &tinfo) => 0;
|
lfsr_traversal_read(&lfs, &t, &tinfo) => 0;
|
||||||
assert(tinfo.btype == LFS_BTYPE_DATA);
|
assert(tinfo.btype == LFS_BTYPE_DATA);
|
||||||
// we should be at end of traversal now
|
// we should be at end of traversal now
|
||||||
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_BUSY;
|
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_NOENT;
|
||||||
lfsr_traversal_close(&lfs, &t) => 0;
|
lfsr_traversal_close(&lfs, &t) => 0;
|
||||||
|
|
||||||
// check the file contents
|
// check the file contents
|
||||||
@@ -4548,7 +4560,7 @@ code = '''
|
|||||||
lfsr_traversal_read(&lfs, &t, &tinfo) => 0;
|
lfsr_traversal_read(&lfs, &t, &tinfo) => 0;
|
||||||
assert(tinfo.btype == LFS_BTYPE_DATA);
|
assert(tinfo.btype == LFS_BTYPE_DATA);
|
||||||
// we should be at end of traversal now
|
// we should be at end of traversal now
|
||||||
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_BUSY;
|
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_NOENT;
|
||||||
lfsr_traversal_close(&lfs, &t) => 0;
|
lfsr_traversal_close(&lfs, &t) => 0;
|
||||||
|
|
||||||
// check the file contents
|
// check the file contents
|
||||||
@@ -4718,7 +4730,7 @@ code = '''
|
|||||||
lfsr_traversal_read(&lfs, &t, &tinfo) => 0;
|
lfsr_traversal_read(&lfs, &t, &tinfo) => 0;
|
||||||
assert(tinfo.btype == LFS_BTYPE_DATA);
|
assert(tinfo.btype == LFS_BTYPE_DATA);
|
||||||
// we should be at end of traversal now
|
// we should be at end of traversal now
|
||||||
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_BUSY;
|
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_NOENT;
|
||||||
lfsr_traversal_close(&lfs, &t) => 0;
|
lfsr_traversal_close(&lfs, &t) => 0;
|
||||||
|
|
||||||
// check the file contents
|
// check the file contents
|
||||||
@@ -4891,7 +4903,7 @@ code = '''
|
|||||||
lfsr_traversal_read(&lfs, &t, &tinfo) => 0;
|
lfsr_traversal_read(&lfs, &t, &tinfo) => 0;
|
||||||
assert(tinfo.btype == LFS_BTYPE_DATA);
|
assert(tinfo.btype == LFS_BTYPE_DATA);
|
||||||
// we should be at end of traversal now
|
// we should be at end of traversal now
|
||||||
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_BUSY;
|
lfsr_traversal_read(&lfs, &t, &tinfo) => LFS_ERR_NOENT;
|
||||||
lfsr_traversal_close(&lfs, &t) => 0;
|
lfsr_traversal_close(&lfs, &t) => 0;
|
||||||
|
|
||||||
// check the file contents
|
// check the file contents
|
||||||
|
|||||||
Reference in New Issue
Block a user