mirror of
				https://github.com/eledio-devices/thirdparty-littlefs.git
				synced 2025-10-31 08:42:40 +01:00 
			
		
		
		
	Revert "Don't bypass cache in lfs_cache_prog() and lfs_cache_read()"
				
					
				
			This reverts commit fdd239fe21.
Bypassing cache turned out to be a mistake which causes more problems
than it solves. Device driver should deal with alignment if this is
required - trying to do that in a file system is not a viable solution
anyway.
			
			
This commit is contained in:
		
							
								
								
									
										15
									
								
								lfs.c
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								lfs.c
									
									
									
									
									
								
							| @@ -71,6 +71,21 @@ static int lfs_bd_read(lfs_t *lfs, | |||||||
|             diff = lfs_min(diff, rcache->off-off); |             diff = lfs_min(diff, rcache->off-off); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  |         if (size >= hint && off % lfs->cfg->read_size == 0 && | ||||||
|  |                 size >= lfs->cfg->read_size) { | ||||||
|  |             // bypass cache? | ||||||
|  |             diff = lfs_aligndown(diff, lfs->cfg->read_size); | ||||||
|  |             int err = lfs->cfg->read(lfs->cfg, block, off, data, diff); | ||||||
|  |             if (err) { | ||||||
|  |                 return err; | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             data += diff; | ||||||
|  |             off += diff; | ||||||
|  |             size -= diff; | ||||||
|  |             continue; | ||||||
|  |         } | ||||||
|  |  | ||||||
|         // load to cache, first condition can no longer fail |         // load to cache, first condition can no longer fail | ||||||
|         LFS_ASSERT(block < lfs->cfg->block_count); |         LFS_ASSERT(block < lfs->cfg->block_count); | ||||||
|         rcache->block = block; |         rcache->block = block; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user