Whamcloud - gitweb
LU-12355 llite: MS_* flags and SB_* flags split
[fs/lustre-release.git] / lustre / autoconf / lustre-core.m4
index cc4e8b6..2242af4 100644 (file)
@@ -579,34 +579,6 @@ super_ops_evict_inode, [
 ]) # LC_SBOPS_EVICT_INODE
 
 #
-# LC_FILE_FSYNC
-#
-# 2.6.35 file_operations.fsync taken 2 arguments.
-# 3.0.0 file_operations.fsync takes 4 arguments.
-#
-AC_DEFUN([LC_FILE_FSYNC], [
-LB_CHECK_COMPILE([if 'file_operations.fsync' takes 4 arguments],
-file_ops_fsync_4args, [
-       #include <linux/fs.h>
-],[
-       ((struct file_operations *)0)->fsync(NULL, 0, 0, 0);
-],[
-       AC_DEFINE(HAVE_FILE_FSYNC_4ARGS, 1,
-               [file_operations.fsync takes 4 arguments])
-],[
-       LB_CHECK_COMPILE([if 'file_operations.fsync' takes 2 arguments],
-       file_ops_fsync_2args, [
-               #include <linux/fs.h>
-       ],[
-               ((struct file_operations *)0)->fsync(NULL, 0);
-       ],[
-               AC_DEFINE(HAVE_FILE_FSYNC_2ARGS, 1,
-                       [file_operations.fsync takes 2 arguments])
-       ])
-])
-]) # LC_FILE_FSYNC
-
-#
 # LC_KERNEL_LOCKED
 #
 # 2.6.37 remove kernel_locked
@@ -3040,6 +3012,23 @@ current_time, [
 ]) # LIBCFS_CURRENT_TIME
 
 #
+# Kernel version 4.12-rc3 85787090a21eb749d8b347eaf9ff1a455637473c
+# changed struct super_block s_uuid into a proper uuid_t
+#
+AC_DEFUN([LC_SUPER_BLOCK_S_UUID], [
+LB_CHECK_COMPILE([if 'struct super_block' s_uuid is uuid_t],
+super_block_s_uuid, [
+       #include <linux/fs.h>
+],[
+       struct super_block sb;
+
+       uuid_parse(NULL, &sb.s_uuid);
+],[
+       AC_DEFINE(HAVE_S_UUID_AS_UUID_T, 1, ['s_uuid' is an uuid_t])
+])
+]) # LC_SUPER_BLOCK_S_UUID
+
+#
 # LC_SUPER_SETUP_BDI_NAME
 #
 # Kernel version 4.12 commit 9594caf216dc0fe3e318b34af0127276db661241
@@ -3075,6 +3064,28 @@ bi_status, [
 ]) # LC_BI_STATUS
 
 #
+# LC_UAPI_LINUX_MOUNT_H
+#
+# kernel 4.20 commit e262e32d6bde0f77fb0c95d977482fc872c51996
+# vfs: Suppress MS_* flag defs within the kernel ...
+#
+AC_DEFUN([LC_UAPI_LINUX_MOUNT_H], [
+tmp_flags="$EXTRA_KCFLAGS"
+EXTRA_KCFLAGS="-Werror"
+LB_CHECK_COMPILE([if MS_RDONLY was moved to uapi/linux/mount.h],
+uapi_linux_mount, [
+       #include <uapi/linux/mount.h>
+],[
+       int x = MS_RDONLY;
+       (void)x;
+],[
+       AC_DEFINE(HAVE_UAPI_LINUX_MOUNT_H, 1,
+               [if MS_RDONLY was moved to uapi/linux/mount.h])
+])
+EXTRA_KCFLAGS="$tmp_flags"
+]) # LC_UAPI_LINUX_MOUNT_H
+
+#
 # LC_BIO_INTEGRITY_ENABLED
 #
 # 4.13 removed bio_integrity_enabled
@@ -3148,10 +3159,21 @@ i_pages, [
 #
 # LC_INODE_TIMESPEC64
 #
+# kernel 4.17-rc7 commit 8efd6894ff089adeeac7cb9f32125b85d963d1bc
+# fs: add timespec64_truncate()
 # kernel 4.18 commit 95582b00838837fc07e042979320caf917ce3fe6
 # inode timestamps switched to timespec64
+# kernel 4.19-rc2 commit 976516404ff3fab2a8caa8bd6f5efc1437fed0b8
+# y2038: remove unused time interfaces
+# ...
+#  timespec_trunc
+# ...
+# When inode times are timespec64 stop using the deprecated
+# time interfaces.
 #
 AC_DEFUN([LC_INODE_TIMESPEC64], [
+tmp_flags="$EXTRA_KCFLAGS"
+EXTRA_KCFLAGS="-Werror"
 LB_CHECK_COMPILE([if inode timestamps are struct timespec64],
 inode_timespec64, [
        #include <linux/fs.h>
@@ -3159,11 +3181,13 @@ inode_timespec64, [
        struct inode inode = {};
        struct timespec64 ts = {};
 
-       inode.i_atime = ts;
+       inode.i_atime = timespec64_trunc(ts, 1);
+       (void)inode;
 ],[
        AC_DEFINE(HAVE_INODE_TIMESPEC64, 1,
                [inode times are using timespec64])
 ])
+EXTRA_KCFLAGS="$tmp_flags"
 ]) # LC_INODE_TIMESPEC64
 
 #
@@ -3198,7 +3222,6 @@ AC_DEFUN([LC_PROG_LINUX], [
        LC_HAVE_ADD_WAIT_QUEUE_EXCLUSIVE
 
        # 2.6.35, 3.0.0
-       LC_FILE_FSYNC
        LC_EXPORT_SIMPLE_SETATTR
        LC_EXPORT_TRUNCATE_COMPLETE_PAGE
 
@@ -3405,6 +3428,7 @@ AC_DEFUN([LC_PROG_LINUX], [
 
        # 4.12
        LC_CURRENT_TIME
+       LC_SUPER_BLOCK_S_UUID
        LC_SUPER_SETUP_BDI_NAME
        LC_BI_STATUS
 
@@ -3421,6 +3445,9 @@ AC_DEFUN([LC_PROG_LINUX], [
        # 4.18
        LC_INODE_TIMESPEC64
 
+       # 5.0
+       LC_UAPI_LINUX_MOUNT_H
+
        # kernel patch to extend integrity interface
        LC_BIO_INTEGRITY_PREP_FN
 
@@ -3457,17 +3484,21 @@ AC_ARG_ENABLE([mpitests],
                case $enableval in
                yes)
                        MPICC_WRAPPER="mpicc"
+                       MPI_BIN=$(eval which $MPICC_WRAPPER | xargs dirname)
                        ;;
                no)
                        enable_mpitests="no"
+                       MPI_BIN=""
                        ;;
                *)
                        MPICC_WRAPPER=$enableval
+                       MPI_BIN=$(eval echo $MPICC_WRAPPER | xargs dirname)
                        ;;
                esac
        ], [
                enable_mpitests="yes"
                MPICC_WRAPPER="mpicc"
+               MPI_BIN=$(eval which $MPICC_WRAPPER | xargs dirname)
        ])
 
        if test "x$enable_mpitests" != "xno"; then
@@ -3486,6 +3517,7 @@ AC_ARG_ENABLE([mpitests],
                enable_mpitests=$lb_cv_mpi_tests
                CC=$oldcc
        fi
+       AC_SUBST(MPI_BIN)
        AC_SUBST(MPICC_WRAPPER)
 ]) # LB_CONFIG_MPITESTS