diff options
author | Simon Rettberg | 2017-10-11 16:00:00 +0200 |
---|---|---|
committer | Simon Rettberg | 2017-10-11 16:00:00 +0200 |
commit | 84b57000a176f676e2b70b29127455524e578f01 (patch) | |
tree | 04f2cd7ab4b867df1f1dce9fcec085c08eeafa4a /src/server/fileutil.c | |
parent | [KERNEL] version check to support pointer to backing_dev_info in request_queue (diff) | |
download | dnbd3-84b57000a176f676e2b70b29127455524e578f01.tar.gz dnbd3-84b57000a176f676e2b70b29127455524e578f01.tar.xz dnbd3-84b57000a176f676e2b70b29127455524e578f01.zip |
[SERVER] rpc: Support querying storage size + available space
Diffstat (limited to 'src/server/fileutil.c')
-rw-r--r-- | src/server/fileutil.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/server/fileutil.c b/src/server/fileutil.c index d68649e..d41dc85 100644 --- a/src/server/fileutil.c +++ b/src/server/fileutil.c @@ -66,13 +66,19 @@ bool file_alloc(int fd, uint64_t offset, uint64_t size) return false; } -int64_t file_freeDiskSpace(const char * const path) +bool file_freeDiskSpace(const char * const path, uint64_t *total, uint64_t *avail) { struct statvfs fiData; - if ( (statvfs( path, &fiData )) < 0 ) { - return -1; + if ( statvfs( path, &fiData ) < 0 ) { + return false; } - return ((int64_t)fiData.f_bavail * (int64_t)fiData.f_bsize); + if ( avail != NULL ) { + *avail = ((uint64_t)fiData.f_bavail * (uint64_t)fiData.f_frsize); + } + if ( total != NULL ) { + *total = ((uint64_t)fiData.f_blocks * (uint64_t)fiData.f_frsize); + } + return true; } time_t file_lastModification(const char * const file) |