summaryrefslogtreecommitdiff
path: root/src/cache
diff options
context:
space:
mode:
authorAndrew Opalach <andrew@akon.city> 2026-09-14 08:57:42 -0400
committerAndrew Opalach <andrew@akon.city> 2026-09-14 08:57:42 -0400
commit8f208c26b6fa1a9f3372679c047cab559c06e26b (patch)
tree323d894d6ff8e1ed1445c40cb1e2f5d3cee5e8e8 /src/cache
parentc66c7c64ebd16287b892f8a780cffcabafba3799 (diff)
downloadcamu-8f208c26b6fa1a9f3372679c047cab559c06e26b.tar.gz
camu-8f208c26b6fa1a9f3372679c047cab559c06e26b.tar.bz2
camu-8f208c26b6fa1a9f3372679c047cab559c06e26b.zip
Server-side fixes from DIRECT_MODE testing
Signed-off-by: Andrew Opalach <andrew@akon.city>
Diffstat (limited to 'src/cache')
-rw-r--r--src/cache/backings/file.c1
-rw-r--r--src/cache/backings/file_common.h10
-rw-r--r--src/cache/backings/file_mapped.c1
3 files changed, 8 insertions, 4 deletions
diff --git a/src/cache/backings/file.c b/src/cache/backings/file.c
index c98c8d5..61506a8 100644
--- a/src/cache/backings/file.c
+++ b/src/cache/backings/file.c
@@ -100,6 +100,7 @@ struct cch_backing *cch_backing_file_create(str *path, size_t size)
nn_mutex_init(&file->mutex);
return (struct cch_backing *)file;
err:
+ al_array_free(file->backing.available);
al_free(file);
return NULL;
}
diff --git a/src/cache/backings/file_common.h b/src/cache/backings/file_common.h
index 6dd4e96..8b4797d 100644
--- a/src/cache/backings/file_common.h
+++ b/src/cache/backings/file_common.h
@@ -35,14 +35,16 @@ static bool file_open_internal(struct cch_backing_file *file, str *path, size_t
if (!nn_file_wrap_fd(&file->file, fd)) {
return false;
}
- } else {
- if (!nn_file_open(&file->file, path, flags)) {
- return false;
- }
+ } else if (!nn_file_open(&file->file, path, flags)) {
+ return false;
}
size_t filesize = file->file.size;
if (!size) {
file->backing.size = filesize;
+ if (!filesize) {
+ nn_file_close(&file->file);
+ return false;
+ }
cch_backing_fill_range(&file->backing, 0, filesize);
} else if (filesize < size) {
nn_file_truncate(&file->file, size);
diff --git a/src/cache/backings/file_mapped.c b/src/cache/backings/file_mapped.c
index 24ac005..021c304 100644
--- a/src/cache/backings/file_mapped.c
+++ b/src/cache/backings/file_mapped.c
@@ -91,6 +91,7 @@ struct cch_backing *cch_backing_file_create(str *path, size_t size)
nn_mutex_init(&file->mutex);
return (struct cch_backing *)file;
err:
+ al_array_free(file->backing.available);
al_free(file);
return NULL;
}