summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--firmware/common/dircache.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/firmware/common/dircache.c b/firmware/common/dircache.c
index 42585e1..e8f149c 100644
--- a/firmware/common/dircache.c
+++ b/firmware/common/dircache.c
@@ -1884,10 +1884,12 @@ static void build_volumes(void)
dircache.reserve_used = reserve_used;
if (DIRCACHE_STUFFED(reserve_used))
- dircache.last_size = 0; /* reset */
- else if (dircache.size > dircache.last_size ||
- dircache.last_size - dircache.size > DIRCACHE_RESERVE)
- dircache.last_size = dircache.size;
+ dircache.last_size = 0; /* reset */
+ else if (dircache.size > dircache.last_size)
+ dircache.last_size = dircache.size; /* grow */
+ else if (!dircache_runinfo.suspended &&
+ dircache.last_size - dircache.size > DIRCACHE_RESERVE)
+ dircache.last_size = dircache.size; /* shrink if not suspended */
logf("Done, %ld KiB used", dircache.size / 1024);