From edd989039c33fa32215021a0802f6d27623271c7 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Wed, 4 Dec 2013 17:06:19 +0100 Subject: [SERVER] Fix free disk space check --- src/server/fileutil.c | 2 +- src/server/image.c | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) (limited to 'src') 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)), -- cgit v1.2.3-55-g7522