util: add a disk_cache_remove() function
authorTimothy Arceri <timothy.arceri@collabora.com>
Tue, 26 Apr 2016 04:56:22 +0000 (14:56 +1000)
committerTimothy Arceri <tarceri@itsqueeze.com>
Thu, 9 Feb 2017 01:22:56 +0000 (12:22 +1100)
This will be used to remove cache items created with old versions
of Mesa or other invalid cache items from the cache.

V2: rename stub function (cache_* funtions were renamed disk_cache_*)
in master.

Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
src/util/disk_cache.c
src/util/disk_cache.h

index 551ceebd3b89ee3c7de2f4fcdc791d075fbc1ec0..7451b083398d856917d57ab136fe57c4170dd90f 100644 (file)
@@ -537,6 +537,28 @@ evict_random_item(struct disk_cache *cache)
       p_atomic_add(cache->size, - size);
 }
 
+void
+disk_cache_remove(struct disk_cache *cache, cache_key key)
+{
+   struct stat sb;
+
+   char *filename = get_cache_file(cache, key);
+   if (filename == NULL) {
+      return;
+   }
+
+   if (stat(filename, &sb) == -1) {
+      ralloc_free(filename);
+      return;
+   }
+
+   unlink(filename);
+   ralloc_free(filename);
+
+   if (sb.st_size)
+      p_atomic_add(cache->size, - sb.st_size);
+}
+
 void
 disk_cache_put(struct disk_cache *cache,
           cache_key key,
index 7e9cb809b597738b7a5d07e25768589371e9c59c..1f2bf3d9e7d30e302d77ee41d7cf6039ea1fbb20 100644 (file)
@@ -77,6 +77,12 @@ disk_cache_create(void);
 void
 disk_cache_destroy(struct disk_cache *cache);
 
+/**
+ * Remove the item in the cache under the name \key.
+ */
+void
+disk_cache_remove(struct disk_cache *cache, cache_key key);
+
 /**
  * Store an item in the cache under the name \key.
  *
@@ -151,6 +157,12 @@ disk_cache_put(struct disk_cache *cache, cache_key key,
    return;
 }
 
+static inline void
+disk_cache_remove(struct program_cache *cache, cache_key key)
+{
+   return;
+}
+
 static inline uint8_t *
 disk_cache_get(struct disk_cache *cache, cache_key key, size_t *size)
 {