summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGrazvydas Ignotas <[email protected]>2017-03-18 22:58:54 +0200
committerTimothy Arceri <[email protected]>2017-03-20 08:24:38 +1100
commit67911fa4b88aedc709a92c1630c1de9ea3a30d1f (patch)
tree78aa03c7b3f475293f1b9ce417c6f27310e66ae7
parentbd93cea69124b91ec278069f2095b4cbfb44cc2f (diff)
util/disk_cache: delete .tmp if target exists
At the time of target file check, .tmp file is already created and file lock is held, so we should remove the .tmp, like in other error paths. With this, piglit no longer leaves large amount of empty .tmp files behind, which waste directory entries and may interfere with eviction. Signed-off-by: Grazvydas Ignotas <[email protected]> Reviewed-by: Timothy Arceri <[email protected]>
-rw-r--r--src/util/disk_cache.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/util/disk_cache.c b/src/util/disk_cache.c
index 79ec63080ca..36b27d95ede 100644
--- a/src/util/disk_cache.c
+++ b/src/util/disk_cache.c
@@ -843,8 +843,10 @@ cache_put(void *job, int thread_index)
* (to ensure the size accounting of the cache doesn't get off).
*/
fd_final = open(filename, O_RDONLY | O_CLOEXEC);
- if (fd_final != -1)
+ if (fd_final != -1) {
+ unlink(filename_tmp);
goto done;
+ }
/* OK, we're now on the hook to write out a file that we know is
* not in the cache, and is also not being written out to the cache