WIP Tweaked inline files to support inline_max == cache_size
This commit is contained in:
@@ -142,7 +142,7 @@ static inline void lfs_cache_zero(lfs_t *lfs, lfs_cache_t *pcache) {
|
||||
|
||||
static int lfs_cache_flush(lfs_t *lfs,
|
||||
lfs_cache_t *pcache, lfs_cache_t *rcache, bool validate) {
|
||||
if (pcache->block != 0xffffffff) {
|
||||
if (pcache->block != 0xffffffff && pcache->block != 0xfffffffe) {
|
||||
LFS_ASSERT(pcache->block < lfs->cfg->block_count);
|
||||
lfs_size_t diff = lfs_alignup(pcache->size, lfs->cfg->prog_size);
|
||||
int err = lfs->cfg->prog(lfs->cfg, pcache->block,
|
||||
@@ -2158,7 +2158,10 @@ static int lfs_file_relocate(lfs_t *lfs, lfs_file_t *file) {
|
||||
return 0;
|
||||
|
||||
relocate:
|
||||
continue;
|
||||
LFS_DEBUG("Bad block at %"PRIu32, nblock);
|
||||
|
||||
// just clear cache and try a new block
|
||||
lfs_cache_drop(lfs, &lfs->pcache);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2397,7 +2400,7 @@ lfs_ssize_t lfs_file_write(lfs_t *lfs, lfs_file_t *file,
|
||||
}
|
||||
|
||||
if ((file->flags & LFS_F_INLINE) &&
|
||||
file->pos + nsize >= lfs->inline_max) {
|
||||
file->pos + nsize > lfs->inline_max) {
|
||||
// inline file doesn't fit anymore
|
||||
file->block = 0xfffffffe;
|
||||
file->off = file->pos;
|
||||
|
||||
+5
-3
@@ -341,6 +341,10 @@ tests/test.py << TEST
|
||||
}
|
||||
lfs_file_close(&lfs, &file[0]) => 0;
|
||||
|
||||
// remount to force reset of lookahead
|
||||
lfs_unmount(&lfs) => 0;
|
||||
lfs_mount(&lfs, &cfg) => 0;
|
||||
|
||||
// open hole
|
||||
lfs_remove(&lfs, "bump") => 0;
|
||||
|
||||
@@ -350,7 +354,7 @@ tests/test.py << TEST
|
||||
for (lfs_size_t i = 0; i < cfg.block_size; i += 2) {
|
||||
memcpy(&buffer[i], "hi", 2);
|
||||
}
|
||||
lfs_file_write(&lfs, &file[0], buffer, cfg.block_size) => LFS_ERR_NOSPC;
|
||||
lfs_file_write(&lfs, &file[0], buffer, 2*cfg.block_size) => LFS_ERR_NOSPC;
|
||||
lfs_file_close(&lfs, &file[0]) => 0;
|
||||
|
||||
lfs_unmount(&lfs) => 0;
|
||||
@@ -388,7 +392,6 @@ tests/test.py << TEST
|
||||
|
||||
// remount to force reset of lookahead
|
||||
lfs_unmount(&lfs) => 0;
|
||||
|
||||
lfs_mount(&lfs, &cfg) => 0;
|
||||
|
||||
// rewrite one file
|
||||
@@ -451,7 +454,6 @@ tests/test.py << TEST
|
||||
|
||||
// remount to force reset of lookahead
|
||||
lfs_unmount(&lfs) => 0;
|
||||
|
||||
lfs_mount(&lfs, &cfg) => 0;
|
||||
|
||||
// rewrite one file with a hole of one block
|
||||
|
||||
Reference in New Issue
Block a user