t: Renamed LFS_T_CKDATA -> LFS_T_CK, implies LFS_T_CKMETA

It really doesn't make sense to check data and not check metadata. We're
already traversing the metadata, so validating it adds very little
overhead, and how can we trust our data if we can't trust our metadata?

This renames LFS_T_CKDATA -> LFS_T_CK, which now also implies
LFS_T_CKMETA. This implication is done explicitly in lfsr_mtree_traverse
instead of doing anything fancy with flags.

Implying LFS_T_CKMETA also means one less configuration to support.

Code changes:

           code          stack
  before: 34524           2640
  after:  34528 (+0.0%)   2640 (+0.0%)
This commit is contained in:
Christopher Haster
2024-06-24 00:21:37 -05:00
parent b665ee3a8d
commit ff0271ecbe
3 changed files with 118 additions and 118 deletions
+5 -5
View File
@@ -8188,8 +8188,8 @@ static inline bool lfsr_t_isckmeta(uint32_t flags) {
return flags & LFS_T_CKMETA;
}
static inline bool lfsr_t_isckdata(uint32_t flags) {
return flags & LFS_T_CKDATA;
static inline bool lfsr_t_isck(uint32_t flags) {
return flags & LFS_T_CK;
}
static inline bool lfsr_f_isdirty(uint32_t flags) {
@@ -8497,7 +8497,7 @@ static int lfsr_mtree_traverse(lfs_t *lfs,
}
// validate btree nodes? note mdirs are already validated
if (lfsr_t_isckmeta(mt->flags)
if ((lfsr_t_isckmeta(mt->flags) || lfsr_t_isck(mt->flags))
&& mtinfo->tag == LFSR_TAG_BRANCH) {
err = lfsr_rbyd_fetchck(lfs, &mtinfo->u.rbyd,
mtinfo->u.rbyd.blocks[0], mtinfo->u.rbyd.trunk,
@@ -8508,7 +8508,7 @@ static int lfsr_mtree_traverse(lfs_t *lfs,
}
// validate data blocks?
if (lfsr_t_isckdata(mt->flags)
if (lfsr_t_isck(mt->flags)
&& mtinfo->tag == LFSR_TAG_BLOCK) {
err = lfsr_bptr_ck(lfs, &mtinfo->u.bptr);
if (err) {
@@ -12576,7 +12576,7 @@ int lfsr_traversal_open(lfs_t *lfs, lfsr_traversal_t *t, uint32_t flags) {
LFS_ASSERT(!lfsr_omdir_isopen(lfs, &t->o));
// some flags don't make sense when only traversing the mtree
LFS_ASSERT(!lfsr_t_ismtreeonly(flags) || !lfsr_t_islookahead(flags));
LFS_ASSERT(!lfsr_t_ismtreeonly(flags) || !lfsr_t_isckdata(flags));
LFS_ASSERT(!lfsr_t_ismtreeonly(flags) || !lfsr_t_isck(flags));
// these flags are internal and shouldn't be provided by the user
LFS_ASSERT(!lfsr_f_isdirty(flags));
+2 -2
View File
@@ -174,10 +174,10 @@ enum lfs_traversal_flags {
LFS_T_LOOKAHEAD = 0x0040, // Populate lookahead buffer
LFS_T_COMPACT = 0x0080, // Compact metadata logs
LFS_T_CKMETA = 0x0100, // Check metadata checksums
LFS_T_CKDATA = 0x0200, // Check data checksums
LFS_T_CK = 0x0200, // Check metadata + data checksums
// TODO
// LFS_T_REPAIRMETA = 0x0400, // Repair metadata blocks
// LFS_T_REPAIRDATA = 0x0800, // Repair data blocks
// LFS_T_REPAIR = 0x0800, // Repair metadata + data blocks
// internally used flags
LFS_F_DIRTY = 0x1000, // Filesystem has been modified
+111 -111
View File
@@ -10,7 +10,7 @@ after = [
# a simple traversal test
[cases.test_traversal_simple]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.CK = [false, true]
defines.LOOKAHEAD = [false, true]
code = '''
lfs_t lfs;
@@ -21,7 +21,7 @@ code = '''
lfsr_traversal_t t;
lfsr_traversal_open(&lfs, &t,
((CKMETA) ? LFS_T_CKMETA : 0)
| ((CKDATA) ? LFS_T_CKDATA : 0)
| ((CK) ? LFS_T_CK : 0)
| ((LOOKAHEAD) ? LFS_T_LOOKAHEAD : 0)) => 0;
struct lfs_tinfo tinfo;
lfsr_traversal_read(&lfs, &t, &tinfo) => 0;
@@ -39,7 +39,7 @@ code = '''
# can we rewind?
[cases.test_traversal_rewind]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.CK = [false, true]
defines.LOOKAHEAD = [false, true]
code = '''
lfs_t lfs;
@@ -50,7 +50,7 @@ code = '''
lfsr_traversal_t t;
lfsr_traversal_open(&lfs, &t,
((CKMETA) ? LFS_T_CKMETA : 0)
| ((CKDATA) ? LFS_T_CKDATA : 0)
| ((CK) ? LFS_T_CK : 0)
| ((LOOKAHEAD) ? LFS_T_LOOKAHEAD : 0)) => 0;
struct lfs_tinfo tinfo;
lfsr_traversal_read(&lfs, &t, &tinfo) => 0;
@@ -77,7 +77,7 @@ code = '''
# test that we don't get extra anything after end of traversal
[cases.test_traversal_idempotent]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.CK = [false, true]
defines.LOOKAHEAD = [false, true]
code = '''
lfs_t lfs;
@@ -88,7 +88,7 @@ code = '''
lfsr_traversal_t t;
lfsr_traversal_open(&lfs, &t,
((CKMETA) ? LFS_T_CKMETA : 0)
| ((CKDATA) ? LFS_T_CKDATA : 0)
| ((CK) ? LFS_T_CK : 0)
| ((LOOKAHEAD) ? LFS_T_LOOKAHEAD : 0)) => 0;
struct lfs_tinfo tinfo;
lfsr_traversal_read(&lfs, &t, &tinfo) => 0;
@@ -117,7 +117,7 @@ code = '''
[cases.test_traversal_clobber_dirs]
defines.N = [1, 2, 4, 8, 16, 32, 64, 128, 256, 512]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.CK = [false, true]
code = '''
lfs_t lfs;
lfsr_format(&lfs, CFG) => 0;
@@ -137,7 +137,7 @@ code = '''
lfsr_traversal_t t;
lfsr_traversal_open(&lfs, &t,
((CKMETA) ? LFS_T_CKMETA : 0)
| ((CKDATA) ? LFS_T_CKDATA : 0)) => 0;
| ((CK) ? LFS_T_CK : 0)) => 0;
for (lfs_block_t i = 0;; i++) {
// a bit hacky, but this catches infinite loops
assert(i < 2*BLOCK_COUNT);
@@ -226,7 +226,7 @@ defines.SIZE = [
'8*BLOCK_SIZE',
]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.CK = [false, true]
if = '(SIZE*N)/BLOCK_SIZE <= 32'
code = '''
lfs_t lfs;
@@ -258,7 +258,7 @@ code = '''
lfsr_traversal_t t;
lfsr_traversal_open(&lfs, &t,
((CKMETA) ? LFS_T_CKMETA : 0)
| ((CKDATA) ? LFS_T_CKDATA : 0)) => 0;
| ((CK) ? LFS_T_CK : 0)) => 0;
for (lfs_block_t i = 0;; i++) {
// a bit hacky, but this catches infinite loops
assert(i < 2*BLOCK_COUNT);
@@ -341,7 +341,7 @@ defines.SIZE = [
'8*BLOCK_SIZE',
]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.CK = [false, true]
if = '(SIZE*N)/BLOCK_SIZE <= 32'
code = '''
lfs_t lfs;
@@ -372,7 +372,7 @@ code = '''
lfsr_traversal_t t;
lfsr_traversal_open(&lfs, &t,
((CKMETA) ? LFS_T_CKMETA : 0)
| ((CKDATA) ? LFS_T_CKDATA : 0)) => 0;
| ((CK) ? LFS_T_CK : 0)) => 0;
for (lfs_block_t i = 0;; i++) {
// a bit hacky, but this catches infinite loops
assert(i < 2*BLOCK_COUNT);
@@ -468,7 +468,7 @@ code = '''
[cases.test_traversal_rewind_clobber_dirs]
defines.N = [1, 2, 4, 8, 16, 32, 64, 128, 256, 512]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.CK = [false, true]
code = '''
lfs_t lfs;
lfsr_format(&lfs, CFG) => 0;
@@ -488,7 +488,7 @@ code = '''
lfsr_traversal_t t;
lfsr_traversal_open(&lfs, &t,
((CKMETA) ? LFS_T_CKMETA : 0)
| ((CKDATA) ? LFS_T_CKDATA : 0)) => 0;
| ((CK) ? LFS_T_CK : 0)) => 0;
lfs_block_t r = 0;
for (lfs_block_t i = 0;; i++) {
// a bit hacky, but this catches infinite loops
@@ -586,7 +586,7 @@ defines.SIZE = [
'8*BLOCK_SIZE',
]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.CK = [false, true]
if = '(SIZE*N)/BLOCK_SIZE <= 32'
code = '''
lfs_t lfs;
@@ -618,7 +618,7 @@ code = '''
lfsr_traversal_t t;
lfsr_traversal_open(&lfs, &t,
((CKMETA) ? LFS_T_CKMETA : 0)
| ((CKDATA) ? LFS_T_CKDATA : 0)) => 0;
| ((CK) ? LFS_T_CK : 0)) => 0;
lfs_block_t r = 0;
for (lfs_block_t i = 0;; i++) {
// a bit hacky, but this catches infinite loops
@@ -710,7 +710,7 @@ defines.SIZE = [
'8*BLOCK_SIZE',
]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.CK = [false, true]
if = '(SIZE*N)/BLOCK_SIZE <= 32'
code = '''
lfs_t lfs;
@@ -741,7 +741,7 @@ code = '''
lfsr_traversal_t t;
lfsr_traversal_open(&lfs, &t,
((CKMETA) ? LFS_T_CKMETA : 0)
| ((CKDATA) ? LFS_T_CKDATA : 0)) => 0;
| ((CK) ? LFS_T_CK : 0)) => 0;
lfs_block_t r = 0;
for (lfs_block_t i = 0;; i++) {
// a bit hacky, but this catches infinite loops
@@ -928,7 +928,7 @@ defines.SIZE = [
'8*BLOCK_SIZE',
]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.CK = [false, true]
if = '(SIZE*N)/BLOCK_SIZE <= 32'
code = '''
for (lfs_block_t i = 0;; i += 2) {
@@ -1024,7 +1024,7 @@ defines.SIZE = [
'8*BLOCK_SIZE',
]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.CK = [false, true]
if = '(SIZE*N)/BLOCK_SIZE <= 32'
code = '''
for (lfs_block_t i = 0;; i += 2) {
@@ -1200,7 +1200,7 @@ defines.SIZE = [
'8*BLOCK_SIZE',
]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.CK = [false, true]
if = '(SIZE*N)/BLOCK_SIZE <= 32'
code = '''
for (lfs_block_t i = 0;; i++) {
@@ -1294,7 +1294,7 @@ defines.SIZE = [
'8*BLOCK_SIZE',
]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.CK = [false, true]
if = '(SIZE*N)/BLOCK_SIZE <= 32'
code = '''
for (lfs_block_t i = 0;; i++) {
@@ -1438,7 +1438,7 @@ code = '''
clobbered:;
// traverse again, we should detect the clobbered metadata
lfsr_traversal_open(&lfs, &t, LFS_T_CKDATA) => 0;
lfsr_traversal_open(&lfs, &t, LFS_T_CK) => 0;
for (lfs_block_t j = 0;; j++) {
assert(j < 2*BLOCK_COUNT);
@@ -1469,7 +1469,7 @@ defines.SIZE = [
'8*BLOCK_SIZE',
]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.CK = [false, true]
if = '(SIZE*N)/BLOCK_SIZE <= 32'
code = '''
for (lfs_block_t i = 0;; i++) {
@@ -1533,7 +1533,7 @@ code = '''
clobbered:;
// traverse again, we should detect the clobbered metadata
lfsr_traversal_open(&lfs, &t, LFS_T_CKDATA) => 0;
lfsr_traversal_open(&lfs, &t, LFS_T_CK) => 0;
for (lfs_block_t j = 0;; j++) {
assert(j < 2*BLOCK_COUNT);
@@ -1564,7 +1564,7 @@ defines.SIZE = [
'8*BLOCK_SIZE',
]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.CK = [false, true]
if = '(SIZE*N)/BLOCK_SIZE <= 32'
code = '''
for (lfs_block_t i = 0;; i++) {
@@ -1630,7 +1630,7 @@ code = '''
clobbered:;
// traverse again, we should detect the clobbered metadata
lfsr_traversal_open(&lfs, &t, LFS_T_CKDATA) => 0;
lfsr_traversal_open(&lfs, &t, LFS_T_CK) => 0;
for (lfs_block_t j = 0;; j++) {
assert(j < 2*BLOCK_COUNT);
@@ -1659,7 +1659,7 @@ done:;
[cases.test_traversal_mutation]
defines.WHEN = [0, 1, 2]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.CK = [false, true]
defines.LOOKAHEAD = [false, true]
code = '''
lfs_t lfs;
@@ -1670,7 +1670,7 @@ code = '''
lfsr_traversal_t t;
lfsr_traversal_open(&lfs, &t,
((CKMETA) ? LFS_T_CKMETA : 0)
| ((CKDATA) ? LFS_T_CKDATA : 0)
| ((CK) ? LFS_T_CK : 0)
| ((LOOKAHEAD) ? LFS_T_LOOKAHEAD : 0)) => 0;
if (WHEN == 0) {
@@ -1717,7 +1717,7 @@ done:;
[cases.test_traversal_mutation_excl]
defines.WHEN = [0, 1, 2]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.CK = [false, true]
defines.LOOKAHEAD = [false, true]
code = '''
lfs_t lfs;
@@ -1729,7 +1729,7 @@ code = '''
lfsr_traversal_open(&lfs, &t,
LFS_T_EXCL
| ((CKMETA) ? LFS_T_CKMETA : 0)
| ((CKDATA) ? LFS_T_CKDATA : 0)
| ((CK) ? LFS_T_CK : 0)
| ((LOOKAHEAD) ? LFS_T_LOOKAHEAD : 0)) => 0;
if (WHEN == 0) {
@@ -1785,7 +1785,7 @@ done:;
# test that we don't get extra anything after end of traversal
[cases.test_traversal_mutation_idempotent]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.CK = [false, true]
defines.LOOKAHEAD = [false, true]
code = '''
lfs_t lfs;
@@ -1796,7 +1796,7 @@ code = '''
lfsr_traversal_t t;
lfsr_traversal_open(&lfs, &t,
((CKMETA) ? LFS_T_CKMETA : 0)
| ((CKDATA) ? LFS_T_CKDATA : 0)
| ((CK) ? LFS_T_CK : 0)
| ((LOOKAHEAD) ? LFS_T_LOOKAHEAD : 0)) => 0;
struct lfs_tinfo tinfo;
lfsr_traversal_read(&lfs, &t, &tinfo) => 0;
@@ -1837,7 +1837,7 @@ code = '''
[cases.test_traversal_mutation_excl_idempotent]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.CK = [false, true]
defines.LOOKAHEAD = [false, true]
code = '''
lfs_t lfs;
@@ -1849,7 +1849,7 @@ code = '''
lfsr_traversal_open(&lfs, &t,
LFS_T_EXCL
| ((CKMETA) ? LFS_T_CKMETA : 0)
| ((CKDATA) ? LFS_T_CKDATA : 0)
| ((CK) ? LFS_T_CK : 0)
| ((LOOKAHEAD) ? LFS_T_LOOKAHEAD : 0)) => 0;
struct lfs_tinfo tinfo;
lfsr_traversal_read(&lfs, &t, &tinfo) => 0;
@@ -1892,7 +1892,7 @@ code = '''
defines.WHEN = [0, 1, 2]
defines.EXCL = [false, true]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.CK = [false, true]
defines.LOOKAHEAD = [false, true]
code = '''
lfs_t lfs;
@@ -1904,7 +1904,7 @@ code = '''
lfsr_traversal_open(&lfs, &t,
((EXCL) ? LFS_T_EXCL : 0)
| ((CKMETA) ? LFS_T_CKMETA : 0)
| ((CKDATA) ? LFS_T_CKDATA : 0)
| ((CK) ? LFS_T_CK : 0)
| ((LOOKAHEAD) ? LFS_T_LOOKAHEAD : 0)) => 0;
if (WHEN == 0) {
@@ -1964,7 +1964,7 @@ done:;
defines.WHEN = [0, 1, 2]
defines.EXCL = [false, true]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.CK = [false, true]
defines.LOOKAHEAD = [false, true]
code = '''
lfs_t lfs;
@@ -1982,7 +1982,7 @@ code = '''
lfsr_traversal_open(&lfs, &t,
((EXCL) ? LFS_T_EXCL : 0)
| ((CKMETA) ? LFS_T_CKMETA : 0)
| ((CKDATA) ? LFS_T_CKDATA : 0)
| ((CK) ? LFS_T_CK : 0)
| ((LOOKAHEAD) ? LFS_T_LOOKAHEAD : 0)) => 0;
if (WHEN == 0) {
@@ -2042,7 +2042,7 @@ done:;
defines.WHEN = [0, 1, 2]
defines.EXCL = [false, true]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.CK = [false, true]
defines.LOOKAHEAD = [false, true]
code = '''
lfs_t lfs;
@@ -2060,7 +2060,7 @@ code = '''
lfsr_traversal_open(&lfs, &t,
((EXCL) ? LFS_T_EXCL : 0)
| ((CKMETA) ? LFS_T_CKMETA : 0)
| ((CKDATA) ? LFS_T_CKDATA : 0)
| ((CK) ? LFS_T_CK : 0)
| ((LOOKAHEAD) ? LFS_T_LOOKAHEAD : 0)) => 0;
if (WHEN == 0) {
@@ -2120,7 +2120,7 @@ done:;
[cases.test_traversal_mutation_fwrite]
defines.EXCL = [false, true]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.CK = [false, true]
defines.LOOKAHEAD = [false, true]
defines.SIZE = [
'FILE_BUFFER_SIZE/2',
@@ -2153,7 +2153,7 @@ code = '''
lfsr_traversal_open(&lfs, &t,
((EXCL) ? LFS_T_EXCL : 0)
| ((CKMETA) ? LFS_T_CKMETA : 0)
| ((CKDATA) ? LFS_T_CKDATA : 0)
| ((CK) ? LFS_T_CK : 0)
| ((LOOKAHEAD) ? LFS_T_LOOKAHEAD : 0)) => 0;
while (true) {
@@ -2193,7 +2193,7 @@ code = '''
[cases.test_traversal_mutation_fwrite_open]
defines.EXCL = [false, true]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.CK = [false, true]
defines.LOOKAHEAD = [false, true]
defines.SIZE = [
'FILE_BUFFER_SIZE/2',
@@ -2229,7 +2229,7 @@ code = '''
lfsr_traversal_open(&lfs, &t,
((EXCL) ? LFS_T_EXCL : 0)
| ((CKMETA) ? LFS_T_CKMETA : 0)
| ((CKDATA) ? LFS_T_CKDATA : 0)
| ((CK) ? LFS_T_CK : 0)
| ((LOOKAHEAD) ? LFS_T_LOOKAHEAD : 0)) => 0;
while (true) {
@@ -2280,7 +2280,7 @@ code = '''
#
[cases.test_traversal_mutation_file_bsprout]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.CK = [false, true]
defines.LOOKAHEAD = [false, true]
defines.SIZE = 'FILE_BUFFER_SIZE/2'
defines.TRUNC = [false, true]
@@ -2315,7 +2315,7 @@ code = '''
lfsr_traversal_t t;
lfsr_traversal_open(&lfs, &t,
((CKMETA) ? LFS_T_CKMETA : 0)
| ((CKDATA) ? LFS_T_CKDATA : 0)
| ((CK) ? LFS_T_CK : 0)
| ((LOOKAHEAD) ? LFS_T_LOOKAHEAD : 0)) => 0;
// traverse mroot
@@ -2358,7 +2358,7 @@ code = '''
[cases.test_traversal_mutation_file_btree]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.CK = [false, true]
defines.LOOKAHEAD = [false, true]
defines.SIZE = '2*BLOCK_SIZE'
defines.INLINE_SIZE = 0
@@ -2394,7 +2394,7 @@ code = '''
lfsr_traversal_t t;
lfsr_traversal_open(&lfs, &t,
((CKMETA) ? LFS_T_CKMETA : 0)
| ((CKDATA) ? LFS_T_CKDATA : 0)
| ((CK) ? LFS_T_CK : 0)
| ((LOOKAHEAD) ? LFS_T_LOOKAHEAD : 0)) => 0;
// traverse mroot
@@ -2443,7 +2443,7 @@ code = '''
[cases.test_traversal_mutation_file_bshrub]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.CK = [false, true]
defines.LOOKAHEAD = [false, true]
defines.SIZE = '2*BLOCK_SIZE'
defines.TRUNC = [false, true]
@@ -2478,7 +2478,7 @@ code = '''
lfsr_traversal_t t;
lfsr_traversal_open(&lfs, &t,
((CKMETA) ? LFS_T_CKMETA : 0)
| ((CKDATA) ? LFS_T_CKDATA : 0)
| ((CK) ? LFS_T_CK : 0)
| ((LOOKAHEAD) ? LFS_T_LOOKAHEAD : 0)) => 0;
// traverse mroot
@@ -2524,7 +2524,7 @@ code = '''
[cases.test_traversal_mutation_orphan_bsprout]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.CK = [false, true]
defines.LOOKAHEAD = [false, true]
defines.SIZE = 'FILE_BUFFER_SIZE/2'
code = '''
@@ -2557,7 +2557,7 @@ code = '''
lfsr_traversal_t t;
lfsr_traversal_open(&lfs, &t,
((CKMETA) ? LFS_T_CKMETA : 0)
| ((CKDATA) ? LFS_T_CKDATA : 0)
| ((CK) ? LFS_T_CK : 0)
| ((LOOKAHEAD) ? LFS_T_LOOKAHEAD : 0)) => 0;
// traverse mroot
@@ -2601,7 +2601,7 @@ code = '''
[cases.test_traversal_mutation_orphan_btree]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.CK = [false, true]
defines.LOOKAHEAD = [false, true]
defines.SIZE = '2*BLOCK_SIZE'
defines.INLINE_SIZE = 0
@@ -2635,7 +2635,7 @@ code = '''
lfsr_traversal_t t;
lfsr_traversal_open(&lfs, &t,
((CKMETA) ? LFS_T_CKMETA : 0)
| ((CKDATA) ? LFS_T_CKDATA : 0)
| ((CK) ? LFS_T_CK : 0)
| ((LOOKAHEAD) ? LFS_T_LOOKAHEAD : 0)) => 0;
// traverse mroot
@@ -2693,7 +2693,7 @@ code = '''
[cases.test_traversal_mutation_orphan_bshrub]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.CK = [false, true]
defines.LOOKAHEAD = [false, true]
defines.SIZE = '2*BLOCK_SIZE'
code = '''
@@ -2726,7 +2726,7 @@ code = '''
lfsr_traversal_t t;
lfsr_traversal_open(&lfs, &t,
((CKMETA) ? LFS_T_CKMETA : 0)
| ((CKDATA) ? LFS_T_CKDATA : 0)
| ((CK) ? LFS_T_CK : 0)
| ((LOOKAHEAD) ? LFS_T_LOOKAHEAD : 0)) => 0;
// traverse mroot
@@ -2773,7 +2773,7 @@ code = '''
[cases.test_traversal_mutation_close_bsprout]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.CK = [false, true]
defines.LOOKAHEAD = [false, true]
defines.SIZE = 'FILE_BUFFER_SIZE/2'
defines.DESYNC = [false, true]
@@ -2807,7 +2807,7 @@ code = '''
lfsr_traversal_t t;
lfsr_traversal_open(&lfs, &t,
((CKMETA) ? LFS_T_CKMETA : 0)
| ((CKDATA) ? LFS_T_CKDATA : 0)
| ((CK) ? LFS_T_CK : 0)
| ((LOOKAHEAD) ? LFS_T_LOOKAHEAD : 0)) => 0;
// traverse mroot
@@ -2854,7 +2854,7 @@ code = '''
[cases.test_traversal_mutation_close_btree]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.CK = [false, true]
defines.LOOKAHEAD = [false, true]
defines.SIZE = '2*BLOCK_SIZE'
defines.INLINE_SIZE = 0
@@ -2889,7 +2889,7 @@ code = '''
lfsr_traversal_t t;
lfsr_traversal_open(&lfs, &t,
((CKMETA) ? LFS_T_CKMETA : 0)
| ((CKDATA) ? LFS_T_CKDATA : 0)
| ((CK) ? LFS_T_CK : 0)
| ((LOOKAHEAD) ? LFS_T_LOOKAHEAD : 0)) => 0;
// traverse mroot
@@ -2952,7 +2952,7 @@ code = '''
[cases.test_traversal_mutation_close_bshrub]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.CK = [false, true]
defines.LOOKAHEAD = [false, true]
defines.SIZE = '2*BLOCK_SIZE'
defines.DESYNC = [false, true]
@@ -2986,7 +2986,7 @@ code = '''
lfsr_traversal_t t;
lfsr_traversal_open(&lfs, &t,
((CKMETA) ? LFS_T_CKMETA : 0)
| ((CKDATA) ? LFS_T_CKDATA : 0)
| ((CK) ? LFS_T_CK : 0)
| ((LOOKAHEAD) ? LFS_T_LOOKAHEAD : 0)) => 0;
// traverse mroot
@@ -3043,7 +3043,7 @@ code = '''
[cases.test_traversal_mutation_rm_bshrub]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.CK = [false, true]
defines.LOOKAHEAD = [false, true]
defines.SIZE = '2*BLOCK_SIZE'
code = '''
@@ -3077,7 +3077,7 @@ code = '''
lfsr_traversal_t t;
lfsr_traversal_open(&lfs, &t,
((CKMETA) ? LFS_T_CKMETA : 0)
| ((CKDATA) ? LFS_T_CKDATA : 0)
| ((CK) ? LFS_T_CK : 0)
| ((LOOKAHEAD) ? LFS_T_LOOKAHEAD : 0)) => 0;
// traverse mroot
@@ -3113,7 +3113,7 @@ code = '''
[cases.test_traversal_mutation_mv_src_bshrub]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.CK = [false, true]
defines.LOOKAHEAD = [false, true]
defines.SIZE = '2*BLOCK_SIZE'
code = '''
@@ -3147,7 +3147,7 @@ code = '''
lfsr_traversal_t t;
lfsr_traversal_open(&lfs, &t,
((CKMETA) ? LFS_T_CKMETA : 0)
| ((CKDATA) ? LFS_T_CKDATA : 0)
| ((CK) ? LFS_T_CK : 0)
| ((LOOKAHEAD) ? LFS_T_LOOKAHEAD : 0)) => 0;
// traverse mroot
@@ -3183,7 +3183,7 @@ code = '''
[cases.test_traversal_mutation_mv_dst_bshrub]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.CK = [false, true]
defines.LOOKAHEAD = [false, true]
defines.SIZE = '2*BLOCK_SIZE'
code = '''
@@ -3217,7 +3217,7 @@ code = '''
lfsr_traversal_t t;
lfsr_traversal_open(&lfs, &t,
((CKMETA) ? LFS_T_CKMETA : 0)
| ((CKDATA) ? LFS_T_CKDATA : 0)
| ((CK) ? LFS_T_CK : 0)
| ((LOOKAHEAD) ? LFS_T_LOOKAHEAD : 0)) => 0;
// traverse mroot
@@ -3253,7 +3253,7 @@ code = '''
[cases.test_traversal_mutation_mroot_split]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.CK = [false, true]
defines.LOOKAHEAD = [false, true]
defines.SIZE = '2*BLOCK_SIZE'
code = '''
@@ -3287,7 +3287,7 @@ code = '''
lfsr_traversal_t t;
lfsr_traversal_open(&lfs, &t,
((CKMETA) ? LFS_T_CKMETA : 0)
| ((CKDATA) ? LFS_T_CKDATA : 0)
| ((CK) ? LFS_T_CK : 0)
| ((LOOKAHEAD) ? LFS_T_LOOKAHEAD : 0)) => 0;
// traverse mroot
@@ -3328,7 +3328,7 @@ code = '''
[cases.test_traversal_mutation_mroot_split_bshrub_l]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.CK = [false, true]
defines.LOOKAHEAD = [false, true]
defines.SIZE = '2*BLOCK_SIZE'
code = '''
@@ -3371,7 +3371,7 @@ code = '''
lfsr_traversal_t t;
lfsr_traversal_open(&lfs, &t,
((CKMETA) ? LFS_T_CKMETA : 0)
| ((CKDATA) ? LFS_T_CKDATA : 0)
| ((CK) ? LFS_T_CK : 0)
| ((LOOKAHEAD) ? LFS_T_LOOKAHEAD : 0)) => 0;
// traverse mroot
@@ -3423,7 +3423,7 @@ code = '''
[cases.test_traversal_mutation_mroot_split_bshrub_r]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.CK = [false, true]
defines.LOOKAHEAD = [false, true]
defines.SIZE = '2*BLOCK_SIZE'
code = '''
@@ -3466,7 +3466,7 @@ code = '''
lfsr_traversal_t t;
lfsr_traversal_open(&lfs, &t,
((CKMETA) ? LFS_T_CKMETA : 0)
| ((CKDATA) ? LFS_T_CKDATA : 0)
| ((CK) ? LFS_T_CK : 0)
| ((LOOKAHEAD) ? LFS_T_LOOKAHEAD : 0)) => 0;
// traverse mroot
@@ -3523,7 +3523,7 @@ code = '''
[cases.test_traversal_mutation_mroot_extend]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.CK = [false, true]
defines.LOOKAHEAD = [false, true]
defines.SIZE = '2*BLOCK_SIZE'
# force early relocations
@@ -3559,7 +3559,7 @@ code = '''
lfsr_traversal_t t;
lfsr_traversal_open(&lfs, &t,
((CKMETA) ? LFS_T_CKMETA : 0)
| ((CKDATA) ? LFS_T_CKDATA : 0)
| ((CK) ? LFS_T_CK : 0)
| ((LOOKAHEAD) ? LFS_T_LOOKAHEAD : 0)) => 0;
// traverse mroot
@@ -3598,7 +3598,7 @@ code = '''
[cases.test_traversal_mutation_mroot_extend_bshrub]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.CK = [false, true]
defines.LOOKAHEAD = [false, true]
defines.SIZE = '2*BLOCK_SIZE'
# force early relocations
@@ -3634,7 +3634,7 @@ code = '''
lfsr_traversal_t t;
lfsr_traversal_open(&lfs, &t,
((CKMETA) ? LFS_T_CKMETA : 0)
| ((CKDATA) ? LFS_T_CKDATA : 0)
| ((CK) ? LFS_T_CK : 0)
| ((LOOKAHEAD) ? LFS_T_LOOKAHEAD : 0)) => 0;
// traverse mroot
@@ -3679,7 +3679,7 @@ code = '''
[cases.test_traversal_mutation_mroot_relocate]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.CK = [false, true]
defines.LOOKAHEAD = [false, true]
defines.SIZE = '2*BLOCK_SIZE'
# force early relocations
@@ -3724,7 +3724,7 @@ code = '''
lfsr_traversal_t t;
lfsr_traversal_open(&lfs, &t,
((CKMETA) ? LFS_T_CKMETA : 0)
| ((CKDATA) ? LFS_T_CKDATA : 0)
| ((CK) ? LFS_T_CK : 0)
| ((LOOKAHEAD) ? LFS_T_LOOKAHEAD : 0)) => 0;
// traverse mroot
@@ -3783,7 +3783,7 @@ code = '''
[cases.test_traversal_mutation_mroot_relocate_bshrub]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.CK = [false, true]
defines.LOOKAHEAD = [false, true]
defines.SIZE = '2*BLOCK_SIZE'
# force early relocations
@@ -3828,7 +3828,7 @@ code = '''
lfsr_traversal_t t;
lfsr_traversal_open(&lfs, &t,
((CKMETA) ? LFS_T_CKMETA : 0)
| ((CKDATA) ? LFS_T_CKDATA : 0)
| ((CK) ? LFS_T_CK : 0)
| ((LOOKAHEAD) ? LFS_T_LOOKAHEAD : 0)) => 0;
// traverse mroots
@@ -3878,7 +3878,7 @@ code = '''
[cases.test_traversal_mutation_mtree_split]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.CK = [false, true]
defines.LOOKAHEAD = [false, true]
defines.SIZE = '2*BLOCK_SIZE'
code = '''
@@ -3952,7 +3952,7 @@ code = '''
lfsr_traversal_t t;
lfsr_traversal_open(&lfs, &t,
((CKMETA) ? LFS_T_CKMETA : 0)
| ((CKDATA) ? LFS_T_CKDATA : 0)
| ((CK) ? LFS_T_CK : 0)
| ((LOOKAHEAD) ? LFS_T_LOOKAHEAD : 0)) => 0;
// traverse mroot
@@ -4044,7 +4044,7 @@ code = '''
[cases.test_traversal_mutation_mtree_split_bshrub_l]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.CK = [false, true]
defines.LOOKAHEAD = [false, true]
defines.SIZE = '2*BLOCK_SIZE'
code = '''
@@ -4118,7 +4118,7 @@ code = '''
lfsr_traversal_t t;
lfsr_traversal_open(&lfs, &t,
((CKMETA) ? LFS_T_CKMETA : 0)
| ((CKDATA) ? LFS_T_CKDATA : 0)
| ((CK) ? LFS_T_CK : 0)
| ((LOOKAHEAD) ? LFS_T_LOOKAHEAD : 0)) => 0;
// traverse mroot
@@ -4204,7 +4204,7 @@ code = '''
[cases.test_traversal_mutation_mtree_split_bshrub_r]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.CK = [false, true]
defines.LOOKAHEAD = [false, true]
defines.SIZE = '2*BLOCK_SIZE'
code = '''
@@ -4278,7 +4278,7 @@ code = '''
lfsr_traversal_t t;
lfsr_traversal_open(&lfs, &t,
((CKMETA) ? LFS_T_CKMETA : 0)
| ((CKDATA) ? LFS_T_CKDATA : 0)
| ((CK) ? LFS_T_CK : 0)
| ((LOOKAHEAD) ? LFS_T_LOOKAHEAD : 0)) => 0;
// traverse mroot
@@ -4369,7 +4369,7 @@ code = '''
[cases.test_traversal_mutation_mtree_extend]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.CK = [false, true]
defines.LOOKAHEAD = [false, true]
defines.SIZE = '2*BLOCK_SIZE'
code = '''
@@ -4449,7 +4449,7 @@ code = '''
lfsr_traversal_t t;
lfsr_traversal_open(&lfs, &t,
((CKMETA) ? LFS_T_CKMETA : 0)
| ((CKDATA) ? LFS_T_CKDATA : 0)
| ((CK) ? LFS_T_CK : 0)
| ((LOOKAHEAD) ? LFS_T_LOOKAHEAD : 0)) => 0;
// traverse mroot
@@ -4533,7 +4533,7 @@ code = '''
[cases.test_traversal_mutation_mtree_extend_bshrub]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.CK = [false, true]
defines.LOOKAHEAD = [false, true]
defines.SIZE = '2*BLOCK_SIZE'
code = '''
@@ -4613,7 +4613,7 @@ code = '''
lfsr_traversal_t t;
lfsr_traversal_open(&lfs, &t,
((CKMETA) ? LFS_T_CKMETA : 0)
| ((CKDATA) ? LFS_T_CKDATA : 0)
| ((CK) ? LFS_T_CK : 0)
| ((LOOKAHEAD) ? LFS_T_LOOKAHEAD : 0)) => 0;
// traverse mroot
@@ -4696,7 +4696,7 @@ code = '''
[cases.test_traversal_mutation_mtree_relocate]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.CK = [false, true]
defines.LOOKAHEAD = [false, true]
defines.SIZE = '2*BLOCK_SIZE'
# force early relocations
@@ -4781,7 +4781,7 @@ code = '''
lfsr_traversal_t t;
lfsr_traversal_open(&lfs, &t,
((CKMETA) ? LFS_T_CKMETA : 0)
| ((CKDATA) ? LFS_T_CKDATA : 0)
| ((CK) ? LFS_T_CK : 0)
| ((LOOKAHEAD) ? LFS_T_LOOKAHEAD : 0)) => 0;
// traverse mroot
@@ -4866,7 +4866,7 @@ code = '''
[cases.test_traversal_mutation_mtree_relocate_bshrub]
defines.CKMETA = [false, true]
defines.CKDATA = [false, true]
defines.CK = [false, true]
defines.LOOKAHEAD = [false, true]
defines.SIZE = '2*BLOCK_SIZE'
# force early relocations
@@ -4951,7 +4951,7 @@ code = '''
lfsr_traversal_t t;
lfsr_traversal_open(&lfs, &t,
((CKMETA) ? LFS_T_CKMETA : 0)
| ((CKDATA) ? LFS_T_CKDATA : 0)
| ((CK) ? LFS_T_CK : 0)
| ((LOOKAHEAD) ? LFS_T_LOOKAHEAD : 0)) => 0;
// traverse mroots
@@ -5049,7 +5049,7 @@ code = '''
defines.STEPS = [1, 2, 4, 8, 16, 32, 64, 128]
defines.EXCL = [false, true]
defines.CKMETA = [true]
defines.CKDATA = [true]
defines.CK = [true]
defines.LOOKAHEAD = [false, true]
defines.N = [1, 2, 4, 8, 16, 32, 64, 128, 256]
code = '''
@@ -5063,7 +5063,7 @@ code = '''
lfsr_traversal_open(&lfs, &t,
((EXCL) ? LFS_T_EXCL : 0)
| ((CKMETA) ? LFS_T_CKMETA : 0)
| ((CKDATA) ? LFS_T_CKDATA : 0)
| ((CK) ? LFS_T_CK : 0)
| ((LOOKAHEAD) ? LFS_T_LOOKAHEAD : 0)) => 0;
// make this many directories
@@ -5155,7 +5155,7 @@ code = '''
defines.STEPS = [1, 2, 4, 8, 16, 32, 64, 128]
defines.EXCL = [false, true]
defines.CKMETA = [true]
defines.CKDATA = [true]
defines.CK = [true]
defines.LOOKAHEAD = [false, true]
defines.N = [1, 2, 4, 8, 16, 32, 64, 128, 256]
defines.OPS = '2*N'
@@ -5176,7 +5176,7 @@ code = '''
lfsr_traversal_open(&lfs, &t,
((EXCL) ? LFS_T_EXCL : 0)
| ((CKMETA) ? LFS_T_CKMETA : 0)
| ((CKDATA) ? LFS_T_CKDATA : 0)
| ((CK) ? LFS_T_CK : 0)
| ((LOOKAHEAD) ? LFS_T_LOOKAHEAD : 0)) => 0;
uint32_t prng = SEED;
@@ -5332,7 +5332,7 @@ code = '''
defines.STEPS = [1, 2, 4, 8, 16, 32, 64, 128]
defines.EXCL = [false, true]
defines.CKMETA = [true]
defines.CKDATA = [true]
defines.CK = [true]
defines.LOOKAHEAD = [false, true]
defines.N = [1, 2, 4, 8, 16, 32, 64]
defines.SIZE = [
@@ -5356,7 +5356,7 @@ code = '''
lfsr_traversal_open(&lfs, &t,
((EXCL) ? LFS_T_EXCL : 0)
| ((CKMETA) ? LFS_T_CKMETA : 0)
| ((CKDATA) ? LFS_T_CKDATA : 0)
| ((CK) ? LFS_T_CK : 0)
| ((LOOKAHEAD) ? LFS_T_LOOKAHEAD : 0)) => 0;
// create this many files
@@ -5432,7 +5432,7 @@ code = '''
defines.STEPS = [1, 2, 4, 8, 16, 32, 64, 128]
defines.EXCL = [false, true]
defines.CKMETA = [true]
defines.CKDATA = [true]
defines.CK = [true]
defines.LOOKAHEAD = [false, true]
defines.N = [1, 2, 4, 8, 16, 32, 64]
defines.OPS = '2*N'
@@ -5464,7 +5464,7 @@ code = '''
lfsr_traversal_open(&lfs, &t,
((EXCL) ? LFS_T_EXCL : 0)
| ((CKMETA) ? LFS_T_CKMETA : 0)
| ((CKDATA) ? LFS_T_CKDATA : 0)
| ((CK) ? LFS_T_CK : 0)
| ((LOOKAHEAD) ? LFS_T_LOOKAHEAD : 0)) => 0;
uint32_t prng = SEED;
@@ -5671,7 +5671,7 @@ code = '''
defines.STEPS = [1, 2, 4, 8, 16, 32, 64, 128]
defines.EXCL = [false, true]
defines.CKMETA = [true]
defines.CKDATA = [true]
defines.CK = [true]
defines.LOOKAHEAD = [false, true]
defines.OPS = 20
defines.SIZE = [
@@ -5735,7 +5735,7 @@ code = '''
lfsr_traversal_open(&lfs, &t,
((EXCL) ? LFS_T_EXCL : 0)
| ((CKMETA) ? LFS_T_CKMETA : 0)
| ((CKDATA) ? LFS_T_CKDATA : 0)
| ((CK) ? LFS_T_CK : 0)
| ((LOOKAHEAD) ? LFS_T_LOOKAHEAD : 0)) => 0;
for (lfs_size_t i = 0; i < OPS; i++) {
@@ -5830,7 +5830,7 @@ code = '''
defines.STEPS = [1, 2, 4, 8, 16, 32, 64, 128]
defines.EXCL = [false, true]
defines.CKMETA = [true]
defines.CKDATA = [true]
defines.CK = [true]
defines.LOOKAHEAD = [false, true]
defines.N = [1, 2, 4, 8, 16, 32, 64]
defines.OPS = '2*N'
@@ -5872,7 +5872,7 @@ code = '''
lfsr_traversal_open(&lfs, &t,
((EXCL) ? LFS_T_EXCL : 0)
| ((CKMETA) ? LFS_T_CKMETA : 0)
| ((CKDATA) ? LFS_T_CKDATA : 0)
| ((CK) ? LFS_T_CK : 0)
| ((LOOKAHEAD) ? LFS_T_LOOKAHEAD : 0)) => 0;
uint32_t prng = SEED;
@@ -6197,7 +6197,7 @@ code = '''
defines.STEPS = [1, 2, 4, 8, 16, 32, 64, 128]
defines.EXCL = [false, true]
defines.CKMETA = [true]
defines.CKDATA = [true]
defines.CK = [true]
defines.LOOKAHEAD = [false, true]
defines.N = [1, 2, 4, 8, 16, 32, 64]
defines.OPS = '2*N'
@@ -6240,7 +6240,7 @@ code = '''
lfsr_traversal_open(&lfs, &t,
((EXCL) ? LFS_T_EXCL : 0)
| ((CKMETA) ? LFS_T_CKMETA : 0)
| ((CKDATA) ? LFS_T_CKDATA : 0)
| ((CK) ? LFS_T_CK : 0)
| ((LOOKAHEAD) ? LFS_T_LOOKAHEAD : 0)) => 0;
uint32_t prng = SEED;