summaryrefslogtreecommitdiff
path: root/src/cache/backings
diff options
context:
space:
mode:
Diffstat (limited to 'src/cache/backings')
-rw-r--r--src/cache/backings/file_common.c3
-rw-r--r--src/cache/backings/file_mapped.c1
2 files changed, 3 insertions, 1 deletions
diff --git a/src/cache/backings/file_common.c b/src/cache/backings/file_common.c
index c0b54c0..232580a 100644
--- a/src/cache/backings/file_common.c
+++ b/src/cache/backings/file_common.c
@@ -9,7 +9,8 @@ static off_t file_backing_get_size_estimate(struct cch_backing *backing)
static bool file_open_internal(struct cch_backing_file *file, str *path, size_t size)
{
- if (!aki_file_open(&file->file, path, size != 0)) return false;
+ s32 flags = size != 0 ? AKI_FILE_CREATE : 0;
+ if (!aki_file_open(&file->file, path, flags)) return false;
file->filesize = aki_file_get_filesize(&file->file);
if (!size) {
file->size = file->filesize;
diff --git a/src/cache/backings/file_mapped.c b/src/cache/backings/file_mapped.c
index 1b06ad2..4277c21 100644
--- a/src/cache/backings/file_mapped.c
+++ b/src/cache/backings/file_mapped.c
@@ -43,6 +43,7 @@ static void file_backing_resize(struct cch_backing *backing, size_t size)
aki_mutex_lock(&file->mutex);
file->size = size;
if ((off_t)size > file->filesize) {
+ // TODO: Unmap, truncate, map?
file->u.map = aki_file_mremap(&file->file, size, file->u.map);
aki_file_truncate(&file->file, size);
file->filesize = size;