lizardfs/0001-chunkserver-Add-altern...

72 lines
2.2 KiB
Diff

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