From bf9a99963cfbd46962579a5617bff8c20bc8339c Mon Sep 17 00:00:00 2001 From: Piotr Sarna Date: Wed, 16 Nov 2016 13:44:41 +0100 Subject: [PATCH] chunkserver: Add alternative include path for fallocate This commit adds another include path for FALLOC_FL_PUNCH_HOLE flag in order to make it work on CentOS 7, and, perhaps, other operating systems. Closes #497 Change-Id: I55666e636cdb2e1f26fae7c8c2729833916d96af --- EnvTests.cmake | 3 +++ config.h.in | 1 + src/chunkserver/hddspacemgr.cc | 7 +++++++ 3 files changed, 11 insertions(+) diff --git a/EnvTests.cmake b/EnvTests.cmake index d0cffb2..2eb86bb 100644 --- a/EnvTests.cmake +++ b/EnvTests.cmake @@ -95,6 +95,9 @@ endif() set(CMAKE_REQUIRED_FLAGS "-D_GNU_SOURCE") check_symbol_exists(FALLOC_FL_PUNCH_HOLE "fcntl.h" LIZARDFS_HAVE_FALLOC_FL_PUNCH_HOLE) +if(NOT LIZARDFS_HAVE_FALLOC_FL_PUNCH_HOLE) + check_symbol_exists(FALLOC_FL_PUNCH_HOLE "linux/falloc.h" LIZARDFS_HAVE_FALLOC_FL_PUNCH_HOLE_IN_LINUX_FALLOC_H) +endif() unset(CMAKE_REQUIRED_FLAGS) set(CMAKE_REQUIRED_FLAGS "-std=c++11") diff --git a/config.h.in b/config.h.in index 6d83be4..10e0d86 100644 --- a/config.h.in +++ b/config.h.in @@ -107,6 +107,7 @@ #cmakedefine LIZARDFS_HAVE_PAM #cmakedefine LIZARDFS_HAVE_FALLOCATE #cmakedefine LIZARDFS_HAVE_FALLOC_FL_PUNCH_HOLE +#cmakedefine LIZARDFS_HAVE_FALLOC_FL_PUNCH_HOLE_IN_LINUX_FALLOC_H /* [CMake] Other */ #cmakedefine HAVE_CRCUTIL diff --git a/src/chunkserver/hddspacemgr.cc b/src/chunkserver/hddspacemgr.cc index 3b3b9ac..1a06727 100644 --- a/src/chunkserver/hddspacemgr.cc +++ b/src/chunkserver/hddspacemgr.cc @@ -19,6 +19,10 @@ #include "common/platform.h" #include "chunkserver/hddspacemgr.h" +#ifdef LIZARDFS_HAVE_FALLOC_FL_PUNCH_HOLE_IN_LINUX_FALLOC_H +# define LIZARDFS_HAVE_FALLOC_FL_PUNCH_HOLE +#endif + #if defined(LIZARDFS_HAVE_FALLOCATE) && defined(LIZARDFS_HAVE_FALLOC_FL_PUNCH_HOLE) && !defined(_GNU_SOURCE) #define _GNU_SOURCE #endif @@ -26,6 +30,9 @@ #include #include #include +#ifdef LIZARDFS_HAVE_FALLOC_FL_PUNCH_HOLE_IN_LINUX_FALLOC_H +# include +#endif #include #include #include -- 2.9.3