Skip to content

Commit

Permalink
Squashed 'littlefs/' changes from c733d9e..3513ff1
Browse files Browse the repository at this point in the history
3513ff1 Merge pull request #911 from littlefs-project/fix-release-structs
8a22bd6 Merge pull request #910 from littlefs-project/fix-superblock-expansion-thresh
9b82db7 Merge pull request #898 from zchen24/patch-1
99b84ee Update DESIGN.md, fix minor typo
e91a29d Fixed struct sizes missing from generated release notes
b9b95ab Increase threshold for superblock expansion from ~50% -> ~88% full
10bcff1 Update DESIGN.md minor typo

git-subtree-dir: littlefs
git-subtree-split: 3513ff1afc1d67adb2e6f492f0b9bc0d798fcb0d
  • Loading branch information
geky-bot committed Dec 21, 2023
1 parent f7a270e commit 530ff95
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 6 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ jobs:
table[$i,$j]=$c_camel
((j+=1))
for s in code stack struct
for s in code stack structs
do
f=sizes/thumb${c:+-$c}.$s.csv
[ -e $f ] && table[$i,$j]=$( \
Expand Down
4 changes: 2 additions & 2 deletions DESIGN.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ This leaves us with three major requirements for an embedded filesystem.
RAM to temporarily store filesystem metadata.

For ROM, this means we need to keep our design simple and reuse code paths
were possible. For RAM we have a stronger requirement, all RAM usage is
where possible. For RAM we have a stronger requirement, all RAM usage is
bounded. This means RAM usage does not grow as the filesystem changes in
size or number of files. This creates a unique challenge as even presumably
simple operations, such as traversing the filesystem, become surprisingly
Expand Down Expand Up @@ -626,7 +626,7 @@ log₂_n_ pointers that skip to different preceding elements of the
skip-list.

The name comes from heavy use of the [CTZ instruction][wikipedia-ctz], which
lets us calculate the power-of-two factors efficiently. For a give block _n_,
lets us calculate the power-of-two factors efficiently. For a given block _n_,
that block contains ctz(_n_)+1 pointers.

```
Expand Down
8 changes: 5 additions & 3 deletions lfs.c
Original file line number Diff line number Diff line change
Expand Up @@ -2151,9 +2151,11 @@ static int lfs_dir_splittingcompact(lfs_t *lfs, lfs_mdir_t *dir,
return size;
}

// do we have extra space? littlefs can't reclaim this space
// by itself, so expand cautiously
if ((lfs_size_t)size < lfs->block_count/2) {
// littlefs cannot reclaim expanded superblocks, so expand cautiously
//
// if our filesystem is more than ~88% full, don't expand, this is
// somewhat arbitrary
if (lfs->block_count - size > lfs->block_count/8) {
LFS_DEBUG("Expanding superblock at rev %"PRIu32, dir->rev);
int err = lfs_dir_split(lfs, dir, attrs, attrcount,
source, begin, end);
Expand Down

0 comments on commit 530ff95

Please sign in to comment.