Update disk cache usage tracking to handle sparse files.
[bluesky.git] / bluesky / cache.c
index 12b8be7..fd4797d 100644 (file)
@@ -328,9 +328,9 @@ void bluesky_cachefile_gc(BlueSkyFS *fs)
          * then we'll just skip the file on this pass. */
         if (g_mutex_trylock(cachefile->lock)) {
             int64_t age = bluesky_get_current_time() - cachefile->atime;
-            g_print("%s addr=%p mapcount=%d refcount=%d atime_age=%f",
+            g_print("%s addr=%p mapcount=%d refcount=%d size=%d atime_age=%f",
                     cachefile->filename, cachefile->addr, cachefile->mapcount,
-                    cachefile->refcount, age / 1e6);
+                    cachefile->refcount, cachefile->disk_used, age / 1e6);
             if (cachefile->fetching)
                 g_print(" (fetching)");
             g_print("\n");
@@ -359,7 +359,7 @@ void bluesky_cachefile_gc(BlueSkyFS *fs)
                             cachefile->filename);
                 }
 
-                g_atomic_int_add(&fs->log->disk_used, -(cachefile->len / 1024));
+                g_atomic_int_add(&fs->log->disk_used, -cachefile->disk_used);
                 g_hash_table_remove(fs->log->mmap_cache, cachefile->filename);
                 bluesky_rangeset_free(cachefile->items);
                 g_mutex_unlock(cachefile->lock);