util/disk_cache: use posix_fallocate() for index files
authorJuston Li <justonli@google.com>
Thu, 23 Mar 2023 20:06:55 +0000 (13:06 -0700)
committerMarge Bot <emma+marge@anholt.net>
Thu, 30 Mar 2023 01:09:10 +0000 (01:09 +0000)
commit88d074cb8f3879b4fb1e3574038f9355628a8f66
tree75badd51c2d6c27ddba336f410ee62deee878927
parentba670f0cdfd99bb3c0f46b111191388d324a0f35
util/disk_cache: use posix_fallocate() for index files

ftruncate() allocates disk space lazily. If the disk is full and it is
unable to allocate disk space when accesed via mmap(), it will crash
with a SIGBUS.

Switch to posix_fallocate(), which ensures disk space is allocated
otherwise it fails if there isn't enough disk space. The disk cache
won't be enabled in this case.

For normal cases, a small increase in disk usage as the 1.3MB index
file will be fully allocated when initialized now.

fallback to ftruncate() if posix_fallocate() isn't found.

Signed-off-by: Juston Li <justonli@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22097>
meson.build
src/util/disk_cache_os.c