Moved revision count noise behind ifdef LFS_NOISY
littlefs is intentionally designed to not rely on noise, even with cksum
collisions (hello, perturb bit!). So it makes sense for this to be an
optional feature, even if it's a small one.
Disabling revision count noise by default also helps with testing. The
whole point of revision count noise is to make cksum collisions less
likely, which is a bit counterproductive when that's something we want
to test!
This doesn't really change the revision count encoding:
vvvvrrrr rrrrrrnn nnnnnnnn nnnnnnnn
'-.''----.----''---------.--------'
'------|---------------|---------- 4-bit relocation revision
'---------------|---------- recycle-bits recycle counter
'---------- pseudorandom noise (optional)
I considered moving the recycle-bits down when we're not adding noise,
but the extra logic just isn't worth making the revision count a bit
more human-readable.
---
This saves a small bit of code in the default build, at the cost of some
code for the runtime checks in the LFS_NOISY build. Though I'm hoping
future config work will let users opt-out of these runtime checks:
code stack ctx
before: 38548 2624 640
default after: 38508 (-0.1%) 2624 (+0.0%) 640 (+0.0%)
LFS_NOISY after: 38568 (+0.1%) 2624 (+0.0%) 640 (+0.0%)
Honestly the thing I'm more worried about is using one of our precious
mount flags for this... There's not that many bits left!
This commit is contained in:
+139
-128
@@ -5,12 +5,23 @@ after = ['test_rbyd', 'test_btree']
|
||||
# of the disk for these tests
|
||||
defines.LOOKAHEAD_SIZE = 'BLOCK_COUNT / 8'
|
||||
|
||||
# test with and without revision count noise
|
||||
defines.NOISY = [false, true]
|
||||
defines.F_FLAGS = '''
|
||||
((NOISY) ? LFS_IFDEF_NOISY(LFS_F_NOISY, -1) : 0)
|
||||
'''
|
||||
defines.M_FLAGS = '''
|
||||
((NOISY) ? LFS_IFDEF_NOISY(LFS_M_NOISY, -1) : 0)
|
||||
'''
|
||||
if = 'LFS_IFDEF_NOISY(true, !NOISY)'
|
||||
|
||||
|
||||
# test a single mroot
|
||||
[cases.test_mtree_mroot]
|
||||
code = '''
|
||||
lfs_t lfs;
|
||||
lfsr_format(&lfs, LFS_F_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_format(&lfs, LFS_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfsr_unmount(&lfs) => 0;
|
||||
'''
|
||||
|
||||
@@ -20,8 +31,8 @@ defines.N = [1, 3]
|
||||
in = 'lfs.c'
|
||||
code = '''
|
||||
lfs_t lfs;
|
||||
lfsr_format(&lfs, LFS_F_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_format(&lfs, LFS_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs_alloc_ckpoint(&lfs);
|
||||
|
||||
for (lfs_size_t i = 0; i < N; i++) {
|
||||
@@ -43,7 +54,7 @@ code = '''
|
||||
|
||||
|
||||
// check things stay sane after remount
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
|
||||
for (lfs_size_t i = 0; i < N; i++) {
|
||||
lfsr_data_t data;
|
||||
@@ -62,8 +73,8 @@ defines.N = [1, 3]
|
||||
in = 'lfs.c'
|
||||
code = '''
|
||||
lfs_t lfs;
|
||||
lfsr_format(&lfs, LFS_F_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_format(&lfs, LFS_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs_alloc_ckpoint(&lfs);
|
||||
|
||||
for (lfs_size_t i = 0; i < N; i++) {
|
||||
@@ -88,7 +99,7 @@ code = '''
|
||||
|
||||
|
||||
// check things stay sane after remount
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
|
||||
for (lfs_size_t i = 0; i < N; i++) {
|
||||
lfsr_data_t data;
|
||||
@@ -107,8 +118,8 @@ defines.N = [5, 5000]
|
||||
in = 'lfs.c'
|
||||
code = '''
|
||||
lfs_t lfs;
|
||||
lfsr_format(&lfs, LFS_F_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_format(&lfs, LFS_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs_alloc_ckpoint(&lfs);
|
||||
|
||||
for (lfs_size_t i = 0; i < N; i++) {
|
||||
@@ -134,7 +145,7 @@ code = '''
|
||||
|
||||
|
||||
// check things stay sane after remount
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
|
||||
lfsr_mdir_lookup(&lfs, &lfs.mroot, LFSR_TAG_ATTR(1), &data) => 0;
|
||||
lfsr_data_read(&lfs, &data, buffer, 4) => 1;
|
||||
@@ -153,8 +164,8 @@ defines.SIZE = 'BLOCK_SIZE / 4'
|
||||
in = 'lfs.c'
|
||||
code = '''
|
||||
lfs_t lfs;
|
||||
lfsr_format(&lfs, LFS_F_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_format(&lfs, LFS_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs_alloc_ckpoint(&lfs);
|
||||
lfsr_data_t data;
|
||||
|
||||
@@ -197,7 +208,7 @@ code = '''
|
||||
|
||||
// check things stay sane after remount
|
||||
lfsr_unmount(&lfs) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
|
||||
// assert mdirs were unininlined
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (1 << lfs.mdir_bits));
|
||||
@@ -228,8 +239,8 @@ defines.SIZE = 'BLOCK_SIZE / 4'
|
||||
in = 'lfs.c'
|
||||
code = '''
|
||||
lfs_t lfs;
|
||||
lfsr_format(&lfs, LFS_F_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_format(&lfs, LFS_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs_alloc_ckpoint(&lfs);
|
||||
lfsr_data_t data;
|
||||
|
||||
@@ -280,7 +291,7 @@ code = '''
|
||||
|
||||
// check things stay sane after remount
|
||||
lfsr_unmount(&lfs) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
|
||||
// assert mdirs were unininlined and split
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits));
|
||||
@@ -313,8 +324,8 @@ defines.SIZE = 'BLOCK_SIZE / 4'
|
||||
in = 'lfs.c'
|
||||
code = '''
|
||||
lfs_t lfs;
|
||||
lfsr_format(&lfs, LFS_F_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_format(&lfs, LFS_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs_alloc_ckpoint(&lfs);
|
||||
lfsr_data_t data;
|
||||
|
||||
@@ -393,7 +404,7 @@ code = '''
|
||||
|
||||
// check things stay sane after remount
|
||||
lfsr_unmount(&lfs) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
|
||||
// assert mdir was split correctly
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (3 << lfs.mdir_bits));
|
||||
@@ -438,8 +449,8 @@ defines.FORCE_COMPACTION = [false, true]
|
||||
in = 'lfs.c'
|
||||
code = '''
|
||||
lfs_t lfs;
|
||||
lfsr_format(&lfs, LFS_F_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_format(&lfs, LFS_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs_alloc_ckpoint(&lfs);
|
||||
|
||||
// create entries
|
||||
@@ -488,7 +499,7 @@ code = '''
|
||||
|
||||
// check things stay sane after remount
|
||||
lfsr_unmount(&lfs) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
|
||||
// try looking up each entry
|
||||
lfsr_mtree_lookup(&lfs, 0, &mdir) => 0;
|
||||
@@ -520,8 +531,8 @@ fuzz = 'SEED'
|
||||
in = 'lfs.c'
|
||||
code = '''
|
||||
lfs_t lfs;
|
||||
lfsr_format(&lfs, LFS_F_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_format(&lfs, LFS_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs_alloc_ckpoint(&lfs);
|
||||
|
||||
bool sim[N];
|
||||
@@ -589,7 +600,7 @@ code = '''
|
||||
|
||||
// check things stay sane after remount
|
||||
lfsr_unmount(&lfs) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
|
||||
// try looking up each entry
|
||||
lfsr_mtree_lookup(&lfs, 0, &mdir) => 0;
|
||||
@@ -624,8 +635,8 @@ defines.SIZE = 'BLOCK_SIZE / 4'
|
||||
in = 'lfs.c'
|
||||
code = '''
|
||||
lfs_t lfs;
|
||||
lfsr_format(&lfs, LFS_F_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_format(&lfs, LFS_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs_alloc_ckpoint(&lfs);
|
||||
lfsr_data_t data;
|
||||
|
||||
@@ -683,7 +694,7 @@ code = '''
|
||||
|
||||
// check things stay sane after remount
|
||||
lfsr_unmount(&lfs) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
|
||||
// assert mdir was dropped
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (1 << lfs.mdir_bits));
|
||||
@@ -710,8 +721,8 @@ defines.SIZE = 'BLOCK_SIZE / 4'
|
||||
in = 'lfs.c'
|
||||
code = '''
|
||||
lfs_t lfs;
|
||||
lfsr_format(&lfs, LFS_F_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_format(&lfs, LFS_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs_alloc_ckpoint(&lfs);
|
||||
lfsr_data_t data;
|
||||
|
||||
@@ -771,7 +782,7 @@ code = '''
|
||||
|
||||
// check things stay sane after remount
|
||||
lfsr_unmount(&lfs) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
|
||||
// assert mdir was dropped
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (1 << lfs.mdir_bits));
|
||||
@@ -798,8 +809,8 @@ defines.SIZE = 'BLOCK_SIZE / 4'
|
||||
in = 'lfs.c'
|
||||
code = '''
|
||||
lfs_t lfs;
|
||||
lfsr_format(&lfs, LFS_F_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_format(&lfs, LFS_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs_alloc_ckpoint(&lfs);
|
||||
lfsr_data_t data;
|
||||
|
||||
@@ -846,7 +857,7 @@ code = '''
|
||||
|
||||
// check things stay sane after remount
|
||||
lfsr_unmount(&lfs) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
|
||||
// assert mdir was dropped
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (1 << lfs.mdir_bits));
|
||||
@@ -869,8 +880,8 @@ defines.SIZE = 'BLOCK_SIZE / 4'
|
||||
in = 'lfs.c'
|
||||
code = '''
|
||||
lfs_t lfs;
|
||||
lfsr_format(&lfs, LFS_F_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_format(&lfs, LFS_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs_alloc_ckpoint(&lfs);
|
||||
lfsr_data_t data;
|
||||
|
||||
@@ -944,7 +955,7 @@ code = '''
|
||||
|
||||
// check things stay sane after remount
|
||||
lfsr_unmount(&lfs) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
|
||||
// assert split/drop worked out
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits));
|
||||
@@ -977,8 +988,8 @@ defines.SIZE = 'BLOCK_SIZE / 4'
|
||||
in = 'lfs.c'
|
||||
code = '''
|
||||
lfs_t lfs;
|
||||
lfsr_format(&lfs, LFS_F_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_format(&lfs, LFS_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs_alloc_ckpoint(&lfs);
|
||||
lfsr_data_t data;
|
||||
|
||||
@@ -1052,7 +1063,7 @@ code = '''
|
||||
|
||||
// check things stay sane after remount
|
||||
lfsr_unmount(&lfs) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
|
||||
// assert split/drop worked out
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits));
|
||||
@@ -1087,8 +1098,8 @@ fuzz = 'SEED'
|
||||
in = 'lfs.c'
|
||||
code = '''
|
||||
lfs_t lfs;
|
||||
lfsr_format(&lfs, LFS_F_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_format(&lfs, LFS_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs_alloc_ckpoint(&lfs);
|
||||
|
||||
bool sim[N];
|
||||
@@ -1182,7 +1193,7 @@ code = '''
|
||||
|
||||
// check things stay sane after remount
|
||||
lfsr_unmount(&lfs) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
|
||||
// try looking up each entry
|
||||
lfsr_mtree_lookup(&lfs, 0, &mdir) => 0;
|
||||
@@ -1219,8 +1230,8 @@ defines.BLOCK_RECYCLES = 0
|
||||
in = 'lfs.c'
|
||||
code = '''
|
||||
lfs_t lfs;
|
||||
lfsr_format(&lfs, LFS_F_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_format(&lfs, LFS_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs_alloc_ckpoint(&lfs);
|
||||
lfsr_data_t data;
|
||||
|
||||
@@ -1290,7 +1301,7 @@ code = '''
|
||||
|
||||
// check things stay sane after remount
|
||||
lfsr_unmount(&lfs) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
|
||||
// assert mdirs were unininlined
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (1 << lfs.mdir_bits));
|
||||
@@ -1333,8 +1344,8 @@ defines.BLOCK_RECYCLES = 0
|
||||
in = 'lfs.c'
|
||||
code = '''
|
||||
lfs_t lfs;
|
||||
lfsr_format(&lfs, LFS_F_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_format(&lfs, LFS_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs_alloc_ckpoint(&lfs);
|
||||
lfsr_data_t data;
|
||||
|
||||
@@ -1414,7 +1425,7 @@ code = '''
|
||||
|
||||
// check things stay sane after remount
|
||||
lfsr_unmount(&lfs) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
|
||||
// assert mdirs were unininlined and split
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits));
|
||||
@@ -1459,8 +1470,8 @@ defines.BLOCK_RECYCLES = 0
|
||||
in = 'lfs.c'
|
||||
code = '''
|
||||
lfs_t lfs;
|
||||
lfsr_format(&lfs, LFS_F_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_format(&lfs, LFS_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs_alloc_ckpoint(&lfs);
|
||||
lfsr_data_t data;
|
||||
|
||||
@@ -1540,7 +1551,7 @@ code = '''
|
||||
|
||||
// check things stay sane after remount
|
||||
lfsr_unmount(&lfs) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
|
||||
// assert mdirs were unininlined and split
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits));
|
||||
@@ -1585,8 +1596,8 @@ defines.BLOCK_RECYCLES = 0
|
||||
in = 'lfs.c'
|
||||
code = '''
|
||||
lfs_t lfs;
|
||||
lfsr_format(&lfs, LFS_F_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_format(&lfs, LFS_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs_alloc_ckpoint(&lfs);
|
||||
lfsr_data_t data;
|
||||
|
||||
@@ -1629,7 +1640,7 @@ code = '''
|
||||
|
||||
// check things stay sane after remount
|
||||
lfsr_unmount(&lfs) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
|
||||
// assert that our rat is still in the mroot
|
||||
lfsr_mtree_lookup(&lfs, (0 << lfs.mdir_bits)+1, &mdir) => 0;
|
||||
@@ -1660,8 +1671,8 @@ defines.PROG_SIZE = 'BLOCK_SIZE'
|
||||
in = 'lfs.c'
|
||||
code = '''
|
||||
lfs_t lfs;
|
||||
lfsr_format(&lfs, LFS_F_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_format(&lfs, LFS_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs_alloc_ckpoint(&lfs);
|
||||
lfsr_data_t data;
|
||||
|
||||
@@ -1738,7 +1749,7 @@ code = '''
|
||||
|
||||
// check things stay sane after remount
|
||||
lfsr_unmount(&lfs) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
|
||||
// assert that our rat is still in the mroot
|
||||
lfsr_mtree_lookup(&lfs, (0 << lfs.mdir_bits)+1, &mdir) => 0;
|
||||
@@ -1782,8 +1793,8 @@ defines.BLOCK_RECYCLES = 0
|
||||
in = 'lfs.c'
|
||||
code = '''
|
||||
lfs_t lfs;
|
||||
lfsr_format(&lfs, LFS_F_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_format(&lfs, LFS_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs_alloc_ckpoint(&lfs);
|
||||
lfsr_data_t data;
|
||||
|
||||
@@ -1845,7 +1856,7 @@ code = '''
|
||||
|
||||
// check things stay sane after remount
|
||||
lfsr_unmount(&lfs) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
|
||||
// assert that our rat is still in the mroot
|
||||
lfsr_mtree_lookup(&lfs, (0 << lfs.mdir_bits)+1, &mdir) => 0;
|
||||
@@ -1881,8 +1892,8 @@ defines.BLOCK_RECYCLES = 0
|
||||
in = 'lfs.c'
|
||||
code = '''
|
||||
lfs_t lfs;
|
||||
lfsr_format(&lfs, LFS_F_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_format(&lfs, LFS_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs_alloc_ckpoint(&lfs);
|
||||
lfsr_data_t data;
|
||||
|
||||
@@ -1967,7 +1978,7 @@ code = '''
|
||||
|
||||
// check things stay sane after remount
|
||||
lfsr_unmount(&lfs) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
|
||||
// assert mdirs were unininlined and split
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits));
|
||||
@@ -2012,8 +2023,8 @@ defines.BLOCK_RECYCLES = 0
|
||||
in = 'lfs.c'
|
||||
code = '''
|
||||
lfs_t lfs;
|
||||
lfsr_format(&lfs, LFS_F_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_format(&lfs, LFS_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs_alloc_ckpoint(&lfs);
|
||||
lfsr_data_t data;
|
||||
|
||||
@@ -2107,7 +2118,7 @@ code = '''
|
||||
|
||||
// check things stay sane after remount
|
||||
lfsr_unmount(&lfs) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
|
||||
// assert mdir was split correctly
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (3 << lfs.mdir_bits));
|
||||
@@ -2156,8 +2167,8 @@ defines.BLOCK_RECYCLES = 0
|
||||
in = 'lfs.c'
|
||||
code = '''
|
||||
lfs_t lfs;
|
||||
lfsr_format(&lfs, LFS_F_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_format(&lfs, LFS_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs_alloc_ckpoint(&lfs);
|
||||
lfsr_data_t data;
|
||||
|
||||
@@ -2226,7 +2237,7 @@ code = '''
|
||||
|
||||
// check things stay sane after remount
|
||||
lfsr_unmount(&lfs) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
|
||||
// assert mdir was dropped
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (1 << lfs.mdir_bits));
|
||||
@@ -2255,8 +2266,8 @@ defines.BLOCK_RECYCLES = 0
|
||||
in = 'lfs.c'
|
||||
code = '''
|
||||
lfs_t lfs;
|
||||
lfsr_format(&lfs, LFS_F_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_format(&lfs, LFS_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs_alloc_ckpoint(&lfs);
|
||||
|
||||
// force mroot to compact once, so the second compact below will
|
||||
@@ -2307,7 +2318,7 @@ code = '''
|
||||
|
||||
// check things stay sane after remount
|
||||
lfsr_unmount(&lfs) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
|
||||
// assert mdirs were unininlined
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (1 << lfs.mdir_bits));
|
||||
@@ -2340,8 +2351,8 @@ defines.BLOCK_RECYCLES = 0
|
||||
in = 'lfs.c'
|
||||
code = '''
|
||||
lfs_t lfs;
|
||||
lfsr_format(&lfs, LFS_F_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_format(&lfs, LFS_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs_alloc_ckpoint(&lfs);
|
||||
|
||||
// force mroot to compact once, so the second compact below will
|
||||
@@ -2400,7 +2411,7 @@ code = '''
|
||||
|
||||
// check things stay sane after remount
|
||||
lfsr_unmount(&lfs) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
|
||||
// assert mdirs were unininlined and split
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits));
|
||||
@@ -2437,8 +2448,8 @@ fuzz = 'SEED'
|
||||
in = 'lfs.c'
|
||||
code = '''
|
||||
lfs_t lfs;
|
||||
lfsr_format(&lfs, LFS_F_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_format(&lfs, LFS_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs_alloc_ckpoint(&lfs);
|
||||
|
||||
bool sim[N];
|
||||
@@ -2561,7 +2572,7 @@ code = '''
|
||||
|
||||
// check things stay sane after remount
|
||||
lfsr_unmount(&lfs) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
|
||||
// try looking up each entry
|
||||
lfsr_mtree_lookup(&lfs, 0, &mdir) => 0;
|
||||
@@ -2593,8 +2604,8 @@ code = '''
|
||||
in = 'lfs.c'
|
||||
code = '''
|
||||
lfs_t lfs;
|
||||
lfsr_format(&lfs, LFS_F_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_format(&lfs, LFS_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs_alloc_ckpoint(&lfs);
|
||||
|
||||
// setup our neighbors
|
||||
@@ -2652,8 +2663,8 @@ code = '''
|
||||
in = 'lfs.c'
|
||||
code = '''
|
||||
lfs_t lfs;
|
||||
lfsr_format(&lfs, LFS_F_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_format(&lfs, LFS_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs_alloc_ckpoint(&lfs);
|
||||
|
||||
// setup our neighbors
|
||||
@@ -2702,8 +2713,8 @@ code = '''
|
||||
in = 'lfs.c'
|
||||
code = '''
|
||||
lfs_t lfs;
|
||||
lfsr_format(&lfs, LFS_F_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_format(&lfs, LFS_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs_alloc_ckpoint(&lfs);
|
||||
|
||||
// setup our neighbors
|
||||
@@ -2754,8 +2765,8 @@ defines.SIZE = 'BLOCK_SIZE / 4'
|
||||
in = 'lfs.c'
|
||||
code = '''
|
||||
lfs_t lfs;
|
||||
lfsr_format(&lfs, LFS_F_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_format(&lfs, LFS_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs_alloc_ckpoint(&lfs);
|
||||
|
||||
// setup our neighbors
|
||||
@@ -2827,8 +2838,8 @@ defines.SIZE = 'BLOCK_SIZE / 4'
|
||||
in = 'lfs.c'
|
||||
code = '''
|
||||
lfs_t lfs;
|
||||
lfsr_format(&lfs, LFS_F_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_format(&lfs, LFS_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs_alloc_ckpoint(&lfs);
|
||||
|
||||
// setup our neighbors
|
||||
@@ -2912,8 +2923,8 @@ defines.BLOCK_RECYCLES = 0
|
||||
in = 'lfs.c'
|
||||
code = '''
|
||||
lfs_t lfs;
|
||||
lfsr_format(&lfs, LFS_F_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_format(&lfs, LFS_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs_alloc_ckpoint(&lfs);
|
||||
|
||||
// setup our neighbors
|
||||
@@ -2970,8 +2981,8 @@ defines.BLOCK_RECYCLES = 0
|
||||
in = 'lfs.c'
|
||||
code = '''
|
||||
lfs_t lfs;
|
||||
lfsr_format(&lfs, LFS_F_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_format(&lfs, LFS_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs_alloc_ckpoint(&lfs);
|
||||
|
||||
// setup our neighbors
|
||||
@@ -3059,8 +3070,8 @@ defines.BLOCK_RECYCLES = 0
|
||||
in = 'lfs.c'
|
||||
code = '''
|
||||
lfs_t lfs;
|
||||
lfsr_format(&lfs, LFS_F_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_format(&lfs, LFS_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs_alloc_ckpoint(&lfs);
|
||||
|
||||
// setup our neighbors
|
||||
@@ -3146,8 +3157,8 @@ defines.SIZE = 'BLOCK_SIZE / 4'
|
||||
in = 'lfs.c'
|
||||
code = '''
|
||||
lfs_t lfs;
|
||||
lfsr_format(&lfs, LFS_F_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_format(&lfs, LFS_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs_alloc_ckpoint(&lfs);
|
||||
|
||||
// setup our neighbors
|
||||
@@ -3248,8 +3259,8 @@ defines.SIZE = 'BLOCK_SIZE / 4'
|
||||
in = 'lfs.c'
|
||||
code = '''
|
||||
lfs_t lfs;
|
||||
lfsr_format(&lfs, LFS_F_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_format(&lfs, LFS_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs_alloc_ckpoint(&lfs);
|
||||
|
||||
// setup our neighbors
|
||||
@@ -3346,8 +3357,8 @@ defines.CKMETA = [false, true]
|
||||
in = 'lfs.c'
|
||||
code = '''
|
||||
lfs_t lfs;
|
||||
lfsr_format(&lfs, LFS_F_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_format(&lfs, LFS_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs_alloc_ckpoint(&lfs);
|
||||
|
||||
// insert at least one entry
|
||||
@@ -3430,7 +3441,7 @@ code = '''
|
||||
|
||||
// check things stay sane after remount
|
||||
lfsr_unmount(&lfs) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
|
||||
// assert that our entry is still in the mtree
|
||||
lfsr_mtree_namelookup(&lfs, 0, "a", 1,
|
||||
@@ -3449,8 +3460,8 @@ defines.SIZE = 'BLOCK_SIZE / 4'
|
||||
in = 'lfs.c'
|
||||
code = '''
|
||||
lfs_t lfs;
|
||||
lfsr_format(&lfs, LFS_F_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_format(&lfs, LFS_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs_alloc_ckpoint(&lfs);
|
||||
lfsr_data_t data;
|
||||
|
||||
@@ -3554,7 +3565,7 @@ code = '''
|
||||
|
||||
// check things stay sane after remount
|
||||
lfsr_unmount(&lfs) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
|
||||
// assert mdirs were unininlined
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (1 << lfs.mdir_bits));
|
||||
@@ -3582,8 +3593,8 @@ defines.SIZE = 'BLOCK_SIZE / 4'
|
||||
in = 'lfs.c'
|
||||
code = '''
|
||||
lfs_t lfs;
|
||||
lfsr_format(&lfs, LFS_F_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_format(&lfs, LFS_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs_alloc_ckpoint(&lfs);
|
||||
lfsr_data_t data;
|
||||
|
||||
@@ -3695,7 +3706,7 @@ code = '''
|
||||
|
||||
// check things stay sane after remount
|
||||
lfsr_unmount(&lfs) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
|
||||
// assert mdirs were unininlined and split
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (2 << lfs.mdir_bits));
|
||||
@@ -3725,8 +3736,8 @@ defines.SIZE = 'BLOCK_SIZE / 4'
|
||||
in = 'lfs.c'
|
||||
code = '''
|
||||
lfs_t lfs;
|
||||
lfsr_format(&lfs, LFS_F_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_format(&lfs, LFS_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs_alloc_ckpoint(&lfs);
|
||||
lfsr_data_t data;
|
||||
|
||||
@@ -3861,7 +3872,7 @@ code = '''
|
||||
|
||||
// check things stay sane after remount
|
||||
lfsr_unmount(&lfs) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
|
||||
// assert mdir was split correctly
|
||||
assert(lfsr_mtree_weight_(&lfs.mtree) == (3 << lfs.mdir_bits));
|
||||
@@ -3897,8 +3908,8 @@ defines.BLOCK_RECYCLES = 0
|
||||
in = 'lfs.c'
|
||||
code = '''
|
||||
lfs_t lfs;
|
||||
lfsr_format(&lfs, LFS_F_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_format(&lfs, LFS_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs_alloc_ckpoint(&lfs);
|
||||
|
||||
// insert at least one entry
|
||||
@@ -3993,7 +4004,7 @@ code = '''
|
||||
|
||||
// check things stay sane after remount
|
||||
lfsr_unmount(&lfs) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
|
||||
// assert that our entry is still in the mtree
|
||||
lfsr_mtree_namelookup(&lfs, 0, "a", 1,
|
||||
@@ -4013,8 +4024,8 @@ defines.FORCE_COMPACTION = [false, true]
|
||||
in = 'lfs.c'
|
||||
code = '''
|
||||
lfs_t lfs;
|
||||
lfsr_format(&lfs, LFS_F_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_format(&lfs, LFS_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs_alloc_ckpoint(&lfs);
|
||||
|
||||
// create entries
|
||||
@@ -4127,7 +4138,7 @@ code = '''
|
||||
|
||||
// check things stay sane after remount
|
||||
lfsr_unmount(&lfs) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
|
||||
// try looking up each entry
|
||||
lfsr_mtree_lookup(&lfs, 0, &mdir) => 0;
|
||||
@@ -4159,8 +4170,8 @@ fuzz = 'SEED'
|
||||
in = 'lfs.c'
|
||||
code = '''
|
||||
lfs_t lfs;
|
||||
lfsr_format(&lfs, LFS_F_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_format(&lfs, LFS_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs_alloc_ckpoint(&lfs);
|
||||
|
||||
bool sim[N];
|
||||
@@ -4293,7 +4304,7 @@ code = '''
|
||||
|
||||
// check things stay sane after remount
|
||||
lfsr_unmount(&lfs) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
|
||||
// try looking up each entry
|
||||
lfsr_mtree_lookup(&lfs, 0, &mdir) => 0;
|
||||
@@ -4326,8 +4337,8 @@ code = '''
|
||||
in = 'lfs.c'
|
||||
code = '''
|
||||
lfs_t lfs;
|
||||
lfsr_format(&lfs, LFS_F_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_format(&lfs, LFS_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs_alloc_ckpoint(&lfs);
|
||||
|
||||
uint8_t mptr_buf[LFSR_MPTR_DSIZE];
|
||||
@@ -4385,7 +4396,7 @@ code = '''
|
||||
[cases.test_mtree_magic]
|
||||
code = '''
|
||||
lfs_t lfs;
|
||||
lfsr_format(&lfs, LFS_F_RDWR, CFG) => 0;
|
||||
lfsr_format(&lfs, LFS_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
|
||||
// check our magic string
|
||||
//
|
||||
@@ -4407,8 +4418,8 @@ defines.BLOCK_RECYCLES = 0
|
||||
in = 'lfs.c'
|
||||
code = '''
|
||||
lfs_t lfs;
|
||||
lfsr_format(&lfs, LFS_F_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_format(&lfs, LFS_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs_alloc_ckpoint(&lfs);
|
||||
lfsr_data_t data;
|
||||
|
||||
@@ -4464,8 +4475,8 @@ defines.PROG_SIZE = 'BLOCK_SIZE'
|
||||
in = 'lfs.c'
|
||||
code = '''
|
||||
lfs_t lfs;
|
||||
lfsr_format(&lfs, LFS_F_RDWR, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR, CFG) => 0;
|
||||
lfsr_format(&lfs, LFS_F_RDWR | F_FLAGS, CFG) => 0;
|
||||
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
|
||||
lfs_alloc_ckpoint(&lfs);
|
||||
lfsr_data_t data;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user