@@ -278,7 +278,7 @@ static int lfs_alloc_lookahead(void *p, lfs_block_t block) {
278
278
% (lfs_soff_t )(lfs -> cfg -> block_count ))
279
279
+ lfs -> cfg -> block_count ) % lfs -> cfg -> block_count ;
280
280
281
- if (off < lfs -> free . lookahead ) {
281
+ if (off < lfs -> cfg -> lookahead ) {
282
282
lfs -> free .buffer [off / 32 ] |= 1U << (off % 32 );
283
283
}
284
284
@@ -294,7 +294,8 @@ static int lfs_alloc(lfs_t *lfs, lfs_block_t *block) {
294
294
return LFS_ERR_NOSPC ;
295
295
}
296
296
297
- if (lfs -> free .off >= lfs -> free .lookahead ) {
297
+ if (lfs -> free .off >= lfs_min (
298
+ lfs -> cfg -> lookahead , lfs -> cfg -> block_count )) {
298
299
break ;
299
300
}
300
301
@@ -308,11 +309,11 @@ static int lfs_alloc(lfs_t *lfs, lfs_block_t *block) {
308
309
}
309
310
}
310
311
311
- lfs -> free .begin += lfs -> free . lookahead ;
312
+ lfs -> free .begin += lfs_min ( lfs -> cfg -> lookahead , lfs -> cfg -> block_count ) ;
312
313
lfs -> free .off = 0 ;
313
314
314
315
// find mask of free blocks from tree
315
- memset (lfs -> free .buffer , 0 , lfs -> free . lookahead /8 );
316
+ memset (lfs -> free .buffer , 0 , lfs -> cfg -> lookahead /8 );
316
317
int err = lfs_traverse (lfs , lfs_alloc_lookahead , lfs );
317
318
if (err ) {
318
319
return err ;
@@ -1870,13 +1871,12 @@ static int lfs_init(lfs_t *lfs, const struct lfs_config *cfg) {
1870
1871
}
1871
1872
1872
1873
// setup lookahead, round down to nearest 32-bits
1873
- lfs -> free .lookahead = lfs_min (lfs -> cfg -> lookahead , lfs -> cfg -> block_count );
1874
- lfs -> free .lookahead = 32 * (lfs -> free .lookahead / 32 );
1875
- assert (lfs -> free .lookahead > 0 );
1874
+ assert (lfs -> cfg -> lookahead % 32 == 0 );
1875
+ assert (lfs -> cfg -> lookahead > 0 );
1876
1876
if (lfs -> cfg -> lookahead_buffer ) {
1877
1877
lfs -> free .buffer = lfs -> cfg -> lookahead_buffer ;
1878
1878
} else {
1879
- lfs -> free .buffer = malloc (lfs -> free . lookahead /8 );
1879
+ lfs -> free .buffer = malloc (lfs -> cfg -> lookahead /8 );
1880
1880
if (!lfs -> free .buffer ) {
1881
1881
return LFS_ERR_NOMEM ;
1882
1882
}
@@ -1919,10 +1919,10 @@ int lfs_format(lfs_t *lfs, const struct lfs_config *cfg) {
1919
1919
}
1920
1920
1921
1921
// create free lookahead
1922
- memset (lfs -> free .buffer , 0 , lfs -> free . lookahead /8 );
1922
+ memset (lfs -> free .buffer , 0 , lfs -> cfg -> lookahead /8 );
1923
1923
lfs -> free .begin = 0 ;
1924
1924
lfs -> free .off = 0 ;
1925
- lfs -> free .end = lfs -> free .begin + lfs -> cfg -> block_count ;
1925
+ lfs -> free .end = lfs -> free .begin + lfs -> free . off + lfs -> cfg -> block_count ;
1926
1926
1927
1927
// create superblock dir
1928
1928
lfs_alloc_ack (lfs );
@@ -1998,9 +1998,9 @@ int lfs_mount(lfs_t *lfs, const struct lfs_config *cfg) {
1998
1998
}
1999
1999
2000
2000
// setup free lookahead
2001
- lfs -> free .begin = - lfs -> free . lookahead ;
2002
- lfs -> free .off = lfs -> free . lookahead ;
2003
- lfs -> free .end = lfs -> free .begin + lfs -> cfg -> block_count ;
2001
+ lfs -> free .begin = - lfs -> cfg -> lookahead ;
2002
+ lfs -> free .off = lfs -> cfg -> lookahead ;
2003
+ lfs -> free .end = lfs -> free .begin + lfs -> free . off + lfs -> cfg -> block_count ;
2004
2004
2005
2005
// load superblock
2006
2006
lfs_dir_t dir ;
@@ -2027,7 +2027,7 @@ int lfs_mount(lfs_t *lfs, const struct lfs_config *cfg) {
2027
2027
}
2028
2028
2029
2029
if (superblock .d .version > (0x00010001 | 0x0000ffff )) {
2030
- LFS_ERROR ("Invalid version %d.%d\n " ,
2030
+ LFS_ERROR ("Invalid version %d.%d" ,
2031
2031
0xffff & (superblock .d .version >> 16 ),
2032
2032
0xffff & (superblock .d .version >> 0 ));
2033
2033
return LFS_ERR_INVAL ;
0 commit comments