summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKarel Zak2018-03-20 11:42:34 +0100
committerKarel Zak2018-03-20 11:42:34 +0100
commita0357292b5faca0383ea13626d0564d4da275b06 (patch)
tree7780c1311ea5ee50dd4b5d0107de98007dec4383
parentlibmount: make libmount.h more robust (diff)
downloadkernel-qcow2-util-linux-a0357292b5faca0383ea13626d0564d4da275b06.tar.gz
kernel-qcow2-util-linux-a0357292b5faca0383ea13626d0564d4da275b06.tar.xz
kernel-qcow2-util-linux-a0357292b5faca0383ea13626d0564d4da275b06.zip
fstrim: fix fs.h and mount.h collision
Unfortunately, old version of the file linux/fs.h defines MS_* macros, so the file cannot be included together with sys/mount.h. We include sys/mount.h from libmount.h now. Signed-off-by: Karel Zak <kzak@redhat.com>
-rw-r--r--configure.ac11
-rw-r--r--sys-utils/fstrim.c5
2 files changed, 14 insertions, 2 deletions
diff --git a/configure.ac b/configure.ac
index f828ae59b..0dbabf5d1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -280,6 +280,16 @@ AC_CHECK_HEADERS([ \
utmpx.h \
])
+# There is a collision in old kernel-headers. The both files mount.h and fs.h
+# define MS_* macros. Fixed by kernel commit e462ec50cb5fad19f6003a3d8087f4a0945dd2b1.
+#
+AC_CHECK_HEADERS([linux/fs.h ], [], [],
+ [#ifdef HAVE_SYS_MOUNT_H
+ # include <linux/fs.h>
+ # include <sys/mount.h>
+ #endif
+])
+
AC_CHECK_HEADERS([linux/gsmmux.h ], [], [],
[#ifdef LINUX_GSMMUX_H
# include <linux/gsmmux.h>
@@ -306,7 +316,6 @@ AC_CHECK_HEADERS([langinfo.h],
[AM_CONDITIONAL([HAVE_LANGINFO], [true])],
[AM_CONDITIONAL([HAVE_LANGINFO], [false])])
-
AC_MSG_CHECKING([whether langinfo.h defines ALTMON_x constants])
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#include <langinfo.h>
diff --git a/sys-utils/fstrim.c b/sys-utils/fstrim.c
index 98708d533..ca8cf256d 100644
--- a/sys-utils/fstrim.c
+++ b/sys-utils/fstrim.c
@@ -35,7 +35,10 @@
#include <sys/ioctl.h>
#include <sys/stat.h>
-#include <linux/fs.h>
+
+#ifdef HAVE_SYS_FS_H
+# include <linux/fs.h>
+#endif
#include "nls.h"
#include "strutils.h"