From cf8fd1a70884db0b31e312d0780611f262bb9b45 Mon Sep 17 00:00:00 2001 From: David Sterba Date: Fri, 14 Oct 2016 18:39:40 +0200 Subject: btrfs-progs: build: detect fiemap shared flag but don't fail build The FIEMAP_EXTENT_SHARED fiemap flag was introduced in 2.6.33. If the headers do not provide the definition, the build will fail. The support of the fiemap sharing depends on the running kernel. There are still systems with 2.6.32 kernel headers but running newer versions. To support such environment, don't fail build, provide own defintion of the structure and detect if there's an old kernel in use in the relevant command (btrfs fi du). Reported-by: Abhay Sachan Signed-off-by: David Sterba --- configure.ac | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'configure.ac') diff --git a/configure.ac b/configure.ac index 8fd8f425..9c6df3b9 100644 --- a/configure.ac +++ b/configure.ac @@ -144,8 +144,16 @@ if test "$DISABLE_BTRFSCONVERT" = 0 && test "x$convertfs" = "x"; then AC_MSG_ERROR([no filesystems for convert, use --disable-convert instead]) fi +HAVE_OWN_FIEMAP_EXTENT_SHARED_DEFINE=0 AX_CHECK_DEFINE([linux/fiemap.h], [FIEMAP_EXTENT_SHARED], [], - [AC_MSG_ERROR([no definition of FIEMAP_EXTENT_SHARED found])]) + [HAVE_OWN_FIEMAP_EXTENT_SHARED_DEFINE=1 + AC_MSG_WARN([no definition of FIEMAP_EXTENT_SHARED found, probably old kernel, will use own defintion, 'btrfs fi du' might report wrong numbers])]) + +if test "x$HAVE_OWN_FIEMAP_EXTENT_SHARED_DEFINE" == "x1"; then +AC_DEFINE([HAVE_OWN_FIEMAP_EXTENT_SHARED_DEFINE], [1], [We defined FIEMAP_EXTENT_SHARED]) +else +AC_DEFINE([HAVE_OWN_FIEMAP_EXTENT_SHARED_DEFINE], [0], [We did not define FIEMAP_EXTENT_SHARED]) +fi dnl Define _LIBS= and _CFLAGS= by pkg-config dnl -- cgit v1.2.3