From e7ad62c1b1627f7bab2524a4c30f1833f6b6767d Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Thu, 1 Aug 2013 19:35:48 +0200 Subject: [SERVER] Fix create_image() by adding fallback solutions for fallocate() --- src/server/helper.c | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src/server/helper.c') diff --git a/src/server/helper.c b/src/server/helper.c index b028ad1..65239ea 100644 --- a/src/server/helper.c +++ b/src/server/helper.c @@ -162,3 +162,12 @@ int mkdir_p(const char* path) if ( mkdir( buffer, 0750 ) != 0 && errno != EEXIST ) return FALSE; return TRUE; } + +int file_alloc(int fd, uint64_t offset, uint64_t size) +{ + if ( fallocate( fd, 0, offset, size ) == 0 ) return TRUE; // fast way + if ( posix_fallocate( fd, offset, size ) == 0 ) return TRUE; // slow way + if ( lseek( fd, offset + size - 1, SEEK_SET ) != offset ) return FALSE; // dumb way + if ( write( fd, "", 1 ) != 1 ) return FALSE; + return TRUE; +} -- cgit v1.2.3-55-g7522