mirror of
https://github.com/eledio-devices/thirdparty-littlefs.git
synced 2025-11-01 00:38:29 +01:00
WIP: Removed outlining in file sync
This commit is contained in:
47
lfs.c
47
lfs.c
@@ -1631,33 +1631,17 @@ static int lfs_dir_compact(lfs_t *lfs,
|
||||
|
||||
// TODO huh?
|
||||
LFS_ASSERT(commit.off % lfs->cfg->prog_size == 0);
|
||||
// update gstate
|
||||
lfs->gdelta = (lfs_gstate_t){0};
|
||||
if (!relocated) {
|
||||
lfs->gdisk = lfs->gstate;
|
||||
}
|
||||
|
||||
// TODO here??
|
||||
if (relocated) {
|
||||
// update references if we relocated
|
||||
LFS_DEBUG("Relocating %"PRIx32" %"PRIx32" -> %"PRIx32" %"PRIx32,
|
||||
oldpair[0], oldpair[1], dir->pair[0], dir->pair[1]);
|
||||
err = lfs_fs_relocate(lfs, oldpair, dir->pair);
|
||||
if (err) {
|
||||
// TODO make better
|
||||
dir->pair[1] = oldpair[1]; //
|
||||
return err;
|
||||
}
|
||||
LFS_DEBUG("Relocated %"PRIx32" %"PRIx32" -> %"PRIx32" %"PRIx32,
|
||||
oldpair[0], oldpair[1], dir->pair[0], dir->pair[1]);
|
||||
}
|
||||
|
||||
// successful compaction, swap dir pair to indicate most recent
|
||||
lfs_pair_swap(dir->pair);
|
||||
dir->rev = nrev;
|
||||
dir->count = end - begin;
|
||||
dir->off = commit.off;
|
||||
dir->etag = commit.ptag;
|
||||
// update gstate
|
||||
lfs->gdelta = (lfs_gstate_t){0};
|
||||
if (!relocated) {
|
||||
lfs->gdisk = lfs->gstate;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -1685,6 +1669,21 @@ relocate:
|
||||
continue;
|
||||
}
|
||||
|
||||
// TODO here??
|
||||
if (relocated) {
|
||||
// update references if we relocated
|
||||
LFS_DEBUG("Relocating %"PRIx32" %"PRIx32" -> %"PRIx32" %"PRIx32,
|
||||
oldpair[0], oldpair[1], dir->pair[0], dir->pair[1]);
|
||||
int err = lfs_fs_relocate(lfs, oldpair, dir->pair);
|
||||
if (err) {
|
||||
// TODO make better
|
||||
//dir->pair[1] = oldpair[1]; //
|
||||
return err;
|
||||
}
|
||||
LFS_DEBUG("Relocated %"PRIx32" %"PRIx32" -> %"PRIx32" %"PRIx32,
|
||||
oldpair[0], oldpair[1], dir->pair[0], dir->pair[1]);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -2739,9 +2738,9 @@ int lfs_file_sync(lfs_t *lfs, lfs_file_t *file) {
|
||||
{LFS_MKTAG(LFS_FROM_USERATTRS, file->id,
|
||||
file->cfg->attr_count), file->cfg->attrs}));
|
||||
if (err) {
|
||||
if (err == LFS_ERR_NOSPC && (file->flags & LFS_F_INLINE)) {
|
||||
goto relocate;
|
||||
}
|
||||
// if (err == LFS_ERR_NOSPC && (file->flags & LFS_F_INLINE)) {
|
||||
// goto relocate;
|
||||
// }
|
||||
file->flags |= LFS_F_ERRED;
|
||||
LFS_TRACE("lfs_file_sync -> %d", err);
|
||||
return err;
|
||||
|
||||
Reference in New Issue
Block a user