From 7ad2d58ed0f7133ce37bba838bdcb5650e89ff86 Mon Sep 17 00:00:00 2001 From: Christopher Haster Date: Sun, 18 Mar 2018 20:36:48 -0500 Subject: [PATCH] WIP Fixed issue with modifying dir after append in update --- lfs.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/lfs.c b/lfs.c index 56559cc..94e43b1 100644 --- a/lfs.c +++ b/lfs.c @@ -846,7 +846,12 @@ static int lfs_dir_update(lfs_t *lfs, lfs_dir_t *dir, } // remove old entry - err = lfs_dir_remove(lfs, dir, &oldentry); + err = lfs_dir_fetch(lfs, &olddir, olddir.pair); + if (err) { + return err; + } + + err = lfs_dir_remove(lfs, &olddir, &oldentry); if (err) { return err; } @@ -1830,8 +1835,9 @@ lfs_ssize_t lfs_file_write(lfs_t *lfs, lfs_file_t *file, // TODO combine with block allocation? // TODO need to move out if no longer fits in block also // TODO store INLINE_MAX in superblock? - if ((file->pos + nsize >= LFS_INLINE_MAX) || - (file->pos + nsize >= lfs->cfg->read_size)) { + if ((file->flags & LFS_F_INLINE) && ( + (file->pos + nsize >= LFS_INLINE_MAX) || + (file->pos + nsize >= lfs->cfg->read_size))) { int err = lfs_file_relocate(lfs, file); if (err) { file->flags |= LFS_F_ERRED;