summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSimon Rettberg2013-12-04 17:06:19 +0100
committerSimon Rettberg2013-12-04 17:06:19 +0100
commitedd989039c33fa32215021a0802f6d27623271c7 (patch)
treeb08819c48e4e2c6f729513b9f6fdf1aa899705d6 /src
parent[SERVER] Deletion restrictions (diff)
downloaddnbd3-edd989039c33fa32215021a0802f6d27623271c7.tar.gz
dnbd3-edd989039c33fa32215021a0802f6d27623271c7.tar.xz
dnbd3-edd989039c33fa32215021a0802f6d27623271c7.zip
[SERVER] Fix free disk space check
Diffstat (limited to 'src')
-rw-r--r--src/server/fileutil.c2
-rw-r--r--src/server/image.c4
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)),