diff options
author | Alan Swanson <[email protected]> | 2017-03-06 16:17:32 +0000 |
---|---|---|
committer | Timothy Arceri <[email protected]> | 2017-03-15 11:15:11 +1100 |
commit | b7e03d87e4b8a89e778c674e0dc0736f189b5d4f (patch) | |
tree | 50f64bf74c6940d26c37e1aed29faaba87ad2690 | |
parent | f1e96714424f516ec3ee7a341fb10068340b0411 (diff) |
util/disk_cache: scale cache according to filesystem size
Select higher of current 1G default or 10% of filesystem where
cache is located.
Acked-by: Timothy Arceri <[email protected]>
Reviewed-by: Grazvydas Ignotas <[email protected]>
-rw-r--r-- | src/util/disk_cache.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/util/disk_cache.c b/src/util/disk_cache.c index 54134441bda..e015e56f5e2 100644 --- a/src/util/disk_cache.c +++ b/src/util/disk_cache.c @@ -31,6 +31,7 @@ #include <sys/file.h> #include <sys/types.h> #include <sys/stat.h> +#include <sys/statvfs.h> #include <sys/mman.h> #include <unistd.h> #include <fcntl.h> @@ -45,6 +46,7 @@ #include "util/mesa-sha1.h" #include "util/ralloc.h" #include "main/errors.h" +#include "util/macros.h" #include "disk_cache.h" @@ -228,6 +230,7 @@ disk_cache_create(const char *gpu_name, const char *timestamp) uint64_t max_size; int fd = -1; struct stat sb; + struct statvfs vfs = { 0 }; size_t size; /* If running as a users other than the real user disable cache */ @@ -389,9 +392,11 @@ disk_cache_create(const char *gpu_name, const char *timestamp) } } - /* Default to 1GB for maximum cache size. */ - if (max_size == 0) - max_size = 1024*1024*1024; + /* Default to 1GB or 10% of filesystem for maximum cache size. */ + if (max_size == 0) { + statvfs(path, &vfs); + max_size = MAX2(1024*1024*1024, vfs.f_blocks * vfs.f_bsize / 10); + } cache->max_size = max_size; |