diff options
-rw-r--r-- | src/server/fileutil.c | 2 | ||||
-rw-r--r-- | src/server/image.c | 4 |
2 files changed, 5 insertions, 1 deletions
diff --git a/src/server/fileutil.c b/src/server/fileutil.c index ea247f0..0cb1894 100644 --- a/src/server/fileutil.c +++ b/src/server/fileutil.c @@ -64,7 +64,7 @@ uint64_t file_freeDiskSpace(const char * const path) if ( (statvfs( path, &fiData )) < 0 ) { return 0; } - return ((uint64_t)fiData.f_bfree * (uint64_t)fiData.f_bsize * 95LL) / 100LL; // Assume 5% root reservation is active + return ((uint64_t)fiData.f_bavail * (uint64_t)fiData.f_bsize); } time_t file_lastModification(const char * const file) diff --git a/src/server/image.c b/src/server/image.c index a5ce4bd..d31ab15 100644 --- a/src/server/image.c +++ b/src/server/image.c @@ -1170,6 +1170,10 @@ static int image_ensureDiskSpace(uint64_t size) { for (;;) { const uint64_t available = file_freeDiskSpace( _basePath ); + if ( available == 0 ) { + memlogf( "[WARNING] Could not get free disk space, will assume there is enough space left... ;-)\n" ); + return TRUE; + } if ( available > size ) return TRUE; if ( dnbd3_serverUptime() < 10 * 3600 ) { memlogf( "[INFO] Only %dMiB free, %dMiB requested, but server uptime < 10 hours...", (int)(available / (1024 * 1024)), |