Skip to content

Commit

Permalink
Take advantage of empty space early in dir search
Browse files Browse the repository at this point in the history
Before, when appending new entries to a directory, we try to find empty space
in the last block of a directory chain. This has a nice side-effect that
the order of directory entries is maintained. However, this isn't strictly
necessary.

We're already scanning the directory chain in order, so other than changes to
directory order, there's no downside to taking advantage of any free
space we come across.
  • Loading branch information
geky committed Oct 10, 2018
1 parent f30ab67 commit e4a0cd9
Showing 1 changed file with 2 additions and 1 deletion.
3 changes: 2 additions & 1 deletion lfs.c
Original file line number Diff line number Diff line change
Expand Up @@ -683,7 +683,8 @@ static int lfs_dir_append(lfs_t *lfs, lfs_dir_t *dir,
lfs_entry_t *entry, struct lfs_region *regions) {
// check if we fit, if top bit is set we do not and move on
while (true) {
if (dir->d.size + lfs_entry_size(entry) <= lfs->cfg->block_size) {
if ((0x7fffffff & dir->d.size) + lfs_entry_size(entry)
<= lfs->cfg->block_size) {
entry->off = dir->d.size - 4;
for (struct lfs_region *r = regions; r; r = r->next) {
r->off += entry->off;
Expand Down

0 comments on commit e4a0cd9

Please sign in to comment.