Blob Blame History Raw
From bf9a99963cfbd46962579a5617bff8c20bc8339c Mon Sep 17 00:00:00 2001
From: Piotr Sarna <sarna@skytechnology.pl>
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 <dirent.h>
 #include <errno.h>
 #include <fcntl.h>
+#ifdef LIZARDFS_HAVE_FALLOC_FL_PUNCH_HOLE_IN_LINUX_FALLOC_H
+#  include <linux/falloc.h>
+#endif
 #include <inttypes.h>
 #include <limits.h>
 #include <math.h>
-- 
2.9.3