summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/littlefs/lfs2.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/lib/littlefs/lfs2.c b/lib/littlefs/lfs2.c
index abdec19d7..6c3c3ece7 100644
--- a/lib/littlefs/lfs2.c
+++ b/lib/littlefs/lfs2.c
@@ -93,6 +93,7 @@ static int lfs2_bd_read(lfs2_t *lfs2,
// bypass cache?
diff = lfs2_aligndown(diff, lfs2->cfg->read_size);
int err = lfs2->cfg->read(lfs2->cfg, block, off, data, diff);
+ LFS2_ASSERT(err <= 0);
if (err) {
return err;
}
@@ -739,6 +740,7 @@ static lfs2_stag_t lfs2_dir_getslice(lfs2_t *lfs2, const lfs2_mdir_t *dir,
int err = lfs2_bd_read(lfs2,
NULL, &lfs2->rcache, sizeof(ntag),
dir->pair[0], off, &ntag, sizeof(ntag));
+ LFS2_ASSERT(err <= 0);
if (err) {
return err;
}
@@ -767,6 +769,7 @@ static lfs2_stag_t lfs2_dir_getslice(lfs2_t *lfs2, const lfs2_mdir_t *dir,
err = lfs2_bd_read(lfs2,
NULL, &lfs2->rcache, diff,
dir->pair[0], off+sizeof(tag)+goff, gbuffer, diff);
+ LFS2_ASSERT(err <= 0);
if (err) {
return err;
}
@@ -828,9 +831,6 @@ static int lfs2_dir_getread(lfs2_t *lfs2, const lfs2_mdir_t *dir,
size -= diff;
continue;
}
-
- // rcache takes priority
- diff = lfs2_min(diff, rcache->off-off);
}
// load to cache, first condition can no longer fail
@@ -1282,6 +1282,7 @@ static lfs2_stag_t lfs2_dir_fetchmatch(lfs2_t *lfs2,
if (err == LFS2_ERR_CORRUPT) {
break;
}
+ return err;
}
lfs2_fcrc_fromle32(&fcrc);
@@ -2267,7 +2268,7 @@ static int lfs2_dir_relocatingcommit(lfs2_t *lfs2, lfs2_mdir_t *dir,
}
}
- if (dir->erased) {
+ if (dir->erased && dir->count < 0xff) {
// try to commit
struct lfs2_commit commit = {
.block = dir->pair[0],
@@ -5225,7 +5226,9 @@ static int lfs2_fs_gc_(lfs2_t *lfs2) {
}
// try to populate the lookahead buffer, unless it's already full
- if (lfs2->lookahead.size < 8*lfs2->cfg->lookahead_size) {
+ if (lfs2->lookahead.size < lfs2_min(
+ 8 * lfs2->cfg->lookahead_size,
+ lfs2->block_count)) {
err = lfs2_alloc_scan(lfs2);
if (err) {
return err;