@@ -93,6 +93,7 @@ static int lfs2_bd_read(lfs2_t *lfs2,
9393 // bypass cache?
9494 diff = lfs2_aligndown (diff , lfs2 -> cfg -> read_size );
9595 int err = lfs2 -> cfg -> read (lfs2 -> cfg , block , off , data , diff );
96+ LFS2_ASSERT (err <= 0 );
9697 if (err ) {
9798 return err ;
9899 }
@@ -739,6 +740,7 @@ static lfs2_stag_t lfs2_dir_getslice(lfs2_t *lfs2, const lfs2_mdir_t *dir,
739740 int err = lfs2_bd_read (lfs2 ,
740741 NULL , & lfs2 -> rcache , sizeof (ntag ),
741742 dir -> pair [0 ], off , & ntag , sizeof (ntag ));
743+ LFS2_ASSERT (err <= 0 );
742744 if (err ) {
743745 return err ;
744746 }
@@ -767,6 +769,7 @@ static lfs2_stag_t lfs2_dir_getslice(lfs2_t *lfs2, const lfs2_mdir_t *dir,
767769 err = lfs2_bd_read (lfs2 ,
768770 NULL , & lfs2 -> rcache , diff ,
769771 dir -> pair [0 ], off + sizeof (tag )+ goff , gbuffer , diff );
772+ LFS2_ASSERT (err <= 0 );
770773 if (err ) {
771774 return err ;
772775 }
@@ -828,9 +831,6 @@ static int lfs2_dir_getread(lfs2_t *lfs2, const lfs2_mdir_t *dir,
828831 size -= diff ;
829832 continue ;
830833 }
831-
832- // rcache takes priority
833- diff = lfs2_min (diff , rcache -> off - off );
834834 }
835835
836836 // load to cache, first condition can no longer fail
@@ -1282,6 +1282,7 @@ static lfs2_stag_t lfs2_dir_fetchmatch(lfs2_t *lfs2,
12821282 if (err == LFS2_ERR_CORRUPT ) {
12831283 break ;
12841284 }
1285+ return err ;
12851286 }
12861287
12871288 lfs2_fcrc_fromle32 (& fcrc );
@@ -2267,7 +2268,7 @@ static int lfs2_dir_relocatingcommit(lfs2_t *lfs2, lfs2_mdir_t *dir,
22672268 }
22682269 }
22692270
2270- if (dir -> erased ) {
2271+ if (dir -> erased && dir -> count < 0xff ) {
22712272 // try to commit
22722273 struct lfs2_commit commit = {
22732274 .block = dir -> pair [0 ],
@@ -5225,7 +5226,9 @@ static int lfs2_fs_gc_(lfs2_t *lfs2) {
52255226 }
52265227
52275228 // try to populate the lookahead buffer, unless it's already full
5228- if (lfs2 -> lookahead .size < 8 * lfs2 -> cfg -> lookahead_size ) {
5229+ if (lfs2 -> lookahead .size < lfs2_min (
5230+ 8 * lfs2 -> cfg -> lookahead_size ,
5231+ lfs2 -> block_count )) {
52295232 err = lfs2_alloc_scan (lfs2 );
52305233 if (err ) {
52315234 return err ;
0 commit comments