summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/util/disk_cache.c18
1 files changed, 8 insertions, 10 deletions
diff --git a/src/util/disk_cache.c b/src/util/disk_cache.c
index e015e56f5e2..30756bc4284 100644
--- a/src/util/disk_cache.c
+++ b/src/util/disk_cache.c
@@ -812,6 +812,13 @@ cache_put(void *job, int thread_index)
if (filename == NULL)
goto done;
+ /* If the cache is too large, evict something else first. */
+ while (*dc_job->cache->size + dc_job->size > dc_job->cache->max_size &&
+ i < 8) {
+ evict_lru_item(dc_job->cache);
+ i++;
+ }
+
/* Write to a temporary file to allow for an atomic rename to the
* final destination filename, (to prevent any readers from seeing
* a partially written file).
@@ -856,16 +863,7 @@ cache_put(void *job, int thread_index)
* not in the cache, and is also not being written out to the cache
* by some other process.
*
- * Before we do that, if the cache is too large, evict something
- * else first.
- */
- while ((*dc_job->cache->size + dc_job->size > dc_job->cache->max_size) &&
- i < 8) {
- evict_lru_item(dc_job->cache);
- i++;
- }
-
- /* Create CRC of the data and store at the start of the file. We will
+ * Create CRC of the data and store at the start of the file. We will
* read this when restoring the cache and use it to check for corruption.
*/
struct cache_entry_file_data cf_data;