diff --git a/src/system/kernel/vm/VMAnonymousCache.cpp b/src/system/kernel/vm/VMAnonymousCache.cpp index 8a92a6f95b..1912c7da66 100644 --- a/src/system/kernel/vm/VMAnonymousCache.cpp +++ b/src/system/kernel/vm/VMAnonymousCache.cpp @@ -16,17 +16,21 @@ #include #include -#include -#include #include +#include + +#include +#include +#include +#include #include +#include +#include +#include #include #include #include #include -#include -#include -#include #if ENABLE_SWAP_SUPPORT @@ -765,13 +769,19 @@ swap_init_post_modules() dprintf("Can't open/create /var/swap: %s\n", strerror(errno)); return; } - close(fd); - if (truncate("/var/swap", size) < 0) { + struct stat stat; + stat.st_size = size; + if (_kern_write_stat(fd, NULL, false, &stat, sizeof(struct stat), + B_STAT_SIZE | B_STAT_SIZE_INSECURE) != B_OK) { dprintf("Failed to resize /var/swap to %lld bytes: %s\n", size, strerror(errno)); } + close(fd); + // TODO: if we don't keep the file open, O_NOCACHE is going to be + // removed - we must not do this while we're using the swap file + swap_file_add("/var/swap"); }