Skip to content

Commit b8abbab

Browse files
authored
Merge pull request #5761 from geky/littlefs-fix-lookahead-rewind
littlefs: Fix issue with immediate exhaustion and small unaligned storage
2 parents 6b034fb + 5e7c097 commit b8abbab

File tree

3 files changed

+10
-12
lines changed

3 files changed

+10
-12
lines changed

.travis.yml

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -142,11 +142,10 @@ matrix:
142142
# Run local littlefs tests
143143
- CFLAGS="-Wno-format" make -C$LITTLEFS/littlefs test QUIET=1
144144
# Run local littlefs tests with set of variations
145-
- CFLAGS="-Wno-format -DLFS_READ_SIZE=64 -DLFS_PROG_SIZE=64" make -C$LITTLEFS/littlefs test QUIET=1
146-
- CFLAGS="-Wno-format -DLFS_READ_SIZE=1 -DLFS_PROG_SIZE=1" make -C$LITTLEFS/littlefs test QUIET=1
147-
- CFLAGS="-Wno-format -DLFS_READ_SIZE=512 -DLFS_PROG_SIZE=512" make -C$LITTLEFS/littlefs test QUIET=1
148-
- CFLAGS="-Wno-format -DLFS_BLOCK_COUNT=1023" make -C$LITTLEFS/littlefs test QUIET=1
149-
- CFLAGS="-Wno-format -DLFS_LOOKAHEAD=2048" make -C$LITTLEFS/littlefs test QUIET=1
145+
- CFLAGS="-Wno-format -DLFS_READ_SIZE=64 -DLFS_PROG_SIZE=64" make -C$LITTLEFS/littlefs test QUIET=1
146+
- CFLAGS="-Wno-format -DLFS_READ_SIZE=1 -DLFS_PROG_SIZE=1" make -C$LITTLEFS/littlefs test QUIET=1
147+
- CFLAGS="-Wno-format -DLFS_READ_SIZE=512 -DLFS_PROG_SIZE=512" make -C$LITTLEFS/littlefs test QUIET=1
148+
- CFLAGS="-Wno-format -DLFS_BLOCK_COUNT=1023 -DLFS_LOOKAHEAD=2048" make -C$LITTLEFS/littlefs test QUIET=1
150149
# Self-hosting littlefs fuzz test with littlefs-fuse
151150
- make -Clittlefs_fuse
152151
- littlefs_fuse/lfs --format /dev/loop0

features/filesystem/littlefs/littlefs/.travis.yml

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,9 @@ script:
1212
- make test QUIET=1
1313

1414
# run tests with a few different configurations
15-
- CFLAGS="-DLFS_READ_SIZE=1 -DLFS_PROG_SIZE=1" make test QUIET=1
16-
- CFLAGS="-DLFS_READ_SIZE=512 -DLFS_PROG_SIZE=512" make test QUIET=1
17-
- CFLAGS="-DLFS_BLOCK_COUNT=1023" make test QUIET=1
18-
- CFLAGS="-DLFS_LOOKAHEAD=2048" make test QUIET=1
15+
- CFLAGS="-DLFS_READ_SIZE=1 -DLFS_PROG_SIZE=1" make test QUIET=1
16+
- CFLAGS="-DLFS_READ_SIZE=512 -DLFS_PROG_SIZE=512" make test QUIET=1
17+
- CFLAGS="-DLFS_BLOCK_COUNT=1023 -DLFS_LOOKAHEAD=2048" make test QUIET=1
1918

2019
# self-host with littlefs-fuse for fuzz test
2120
- make -C littlefs-fuse

features/filesystem/littlefs/littlefs/lfs.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2039,9 +2039,9 @@ int lfs_mount(lfs_t *lfs, const struct lfs_config *cfg) {
20392039
return err;
20402040
}
20412041

2042-
// setup free lookahead
2043-
lfs->free.begin = -lfs->cfg->lookahead;
2044-
lfs->free.off = lfs->cfg->lookahead;
2042+
// setup free lookahead, rewind so first allocation triggers a scan
2043+
lfs->free.begin = -lfs_min(lfs->cfg->lookahead, lfs->cfg->block_count);
2044+
lfs->free.off = -lfs->free.begin;
20452045
lfs->free.end = lfs->free.begin + lfs->free.off + lfs->cfg->block_count;
20462046

20472047
// load superblock

0 commit comments

Comments
 (0)