Răsfoiți Sursa

Merge pull request #266 from FreddieChopin/revert-bypass-cache

Revert "Don't bypass cache in `lfs_cache_prog()` and `lfs_cache_read()`"
Christopher Haster 5 ani în urmă
părinte
comite
6121495444
1 a modificat fișierele cu 15 adăugiri și 0 ștergeri
  1. 15 0
      lfs.c

+ 15 - 0
lfs.c

@@ -71,6 +71,21 @@ static int lfs_bd_read(lfs_t *lfs,
             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
         LFS_ASSERT(block < lfs->cfg->block_count);
         rcache->block = block;