]> git.proxmox.com Git - mirror_zfs-debian.git/blobdiff - config/kernel.m4
Imported Upstream version 0.6.4.2
[mirror_zfs-debian.git] / config / kernel.m4
index 62a9b4299ef41d1d2c24171a27eddd919f9fbc6a..a4e43db442b5fcc515b4e7a19d7755542d8fa2d2 100644 (file)
@@ -6,6 +6,7 @@ AC_DEFUN([ZFS_AC_CONFIG_KERNEL], [
        ZFS_AC_SPL
        ZFS_AC_TEST_MODULE
        ZFS_AC_KERNEL_CONFIG
+       ZFS_AC_KERNEL_DECLARE_EVENT_CLASS
        ZFS_AC_KERNEL_BDEV_BLOCK_DEVICE_OPERATIONS
        ZFS_AC_KERNEL_BLOCK_DEVICE_OPERATIONS_RELEASE_VOID
        ZFS_AC_KERNEL_TYPE_FMODE_T
@@ -17,6 +18,7 @@ AC_DEFUN([ZFS_AC_CONFIG_KERNEL], [
        ZFS_AC_KERNEL_INVALIDATE_BDEV_ARGS
        ZFS_AC_KERNEL_BDEV_LOGICAL_BLOCK_SIZE
        ZFS_AC_KERNEL_BDEV_PHYSICAL_BLOCK_SIZE
+       ZFS_AC_KERNEL_BIO_BVEC_ITER
        ZFS_AC_KERNEL_BIO_FAILFAST
        ZFS_AC_KERNEL_BIO_FAILFAST_DTD
        ZFS_AC_KERNEL_REQ_FAILFAST_MASK
@@ -59,6 +61,7 @@ AC_DEFUN([ZFS_AC_CONFIG_KERNEL], [
        ZFS_AC_KERNEL_INODE_OPERATIONS_GET_ACL
        ZFS_AC_KERNEL_CURRENT_UMASK
        ZFS_AC_KERNEL_SHOW_OPTIONS
+       ZFS_AC_KERNEL_FILE_INODE
        ZFS_AC_KERNEL_FSYNC
        ZFS_AC_KERNEL_EVICT_INODE
        ZFS_AC_KERNEL_DIRTY_INODE_WITH_FLAGS
@@ -76,6 +79,7 @@ AC_DEFUN([ZFS_AC_CONFIG_KERNEL], [
        ZFS_AC_KERNEL_INSERT_INODE_LOCKED
        ZFS_AC_KERNEL_D_MAKE_ROOT
        ZFS_AC_KERNEL_D_OBTAIN_ALIAS
+       ZFS_AC_KERNEL_D_PRUNE_ALIASES
        ZFS_AC_KERNEL_D_SET_D_OP
        ZFS_AC_KERNEL_D_REVALIDATE_NAMEIDATA
        ZFS_AC_KERNEL_CONST_DENTRY_OPERATIONS
@@ -85,15 +89,16 @@ AC_DEFUN([ZFS_AC_CONFIG_KERNEL], [
        ZFS_AC_KERNEL_CALLBACK_SECURITY_INODE_INIT_SECURITY
        ZFS_AC_KERNEL_MOUNT_NODEV
        ZFS_AC_KERNEL_SHRINK
+       ZFS_AC_KERNEL_SHRINK_CONTROL_HAS_NID
        ZFS_AC_KERNEL_S_INSTANCES_LIST_HEAD
        ZFS_AC_KERNEL_S_D_OP
-       ZFS_AC_KERNEL_BDI
        ZFS_AC_KERNEL_BDI_SETUP_AND_REGISTER
        ZFS_AC_KERNEL_SET_NLINK
        ZFS_AC_KERNEL_ELEVATOR_CHANGE
        ZFS_AC_KERNEL_5ARG_SGET
        ZFS_AC_KERNEL_LSEEK_EXECUTE
        ZFS_AC_KERNEL_VFS_ITERATE
+       ZFS_AC_KERNEL_VFS_RW_ITERATE
 
        AS_IF([test "$LINUX_OBJ" != "$LINUX"], [
                KERNELMAKE_PARAMS="$KERNELMAKE_PARAMS O=$LINUX_OBJ"
@@ -104,7 +109,6 @@ AC_DEFUN([ZFS_AC_CONFIG_KERNEL], [
        dnl # -Wall -fno-strict-aliasing -Wstrict-prototypes and other
        dnl # compiler options are added by the kernel build system.
        KERNELCPPFLAGS="$KERNELCPPFLAGS $NO_UNUSED_BUT_SET_VARIABLE"
-       KERNELCPPFLAGS="$KERNELCPPFLAGS $NO_AGGRESSIVE_LOOP_OPTIMIZATIONS"
        KERNELCPPFLAGS="$KERNELCPPFLAGS -DHAVE_SPL -D_KERNEL"
        KERNELCPPFLAGS="$KERNELCPPFLAGS -DTEXT_DOMAIN=\\\"zfs-linux-kernel\\\""
 
@@ -272,10 +276,12 @@ AC_DEFUN([ZFS_AC_SPL], [
        dnl # source directory.  In order of preference:
        dnl #
        splsrc0="/var/lib/dkms/spl/${VERSION}/build"
-       splsrc1="/usr/src/spl-${VERSION}/${LINUX_VERSION}"
-       splsrc2="/usr/src/spl-${VERSION}"
-       splsrc3="../spl/"
-       splsrc4="$LINUX"
+       splsrc1="/usr/local/src/spl-${VERSION}/${LINUX_VERSION}"
+       splsrc2="/usr/local/src/spl-${VERSION}"
+       splsrc3="/usr/src/spl-${VERSION}/${LINUX_VERSION}"
+       splsrc4="/usr/src/spl-${VERSION}"
+       splsrc5="../spl/"
+       splsrc6="$LINUX"
 
        AC_MSG_CHECKING([spl source directory])
        AS_IF([test -z "${splsrc}"], [
@@ -289,6 +295,10 @@ AC_DEFUN([ZFS_AC_SPL], [
                        splsrc=$(readlink -f "${splsrc3}")
                ], [ test -e "${splsrc4}/spl.release.in" ], [
                        splsrc=${splsrc4}
+               ], [ test -e "${splsrc5}/spl.release.in"], [
+                       splsrc=$(readlink -f "${splsrc5}")
+               ], [ test -e "${splsrc6}/spl.release.in" ], [
+                       splsrc=${splsrc6}
                ], [
                        splsrc="[Not found]"
                ])
@@ -420,8 +430,8 @@ AC_DEFUN([ZFS_AC_SPL], [
 dnl #
 dnl # Basic toolchain sanity check.
 dnl #
-AC_DEFUN([ZFS_AC_TEST_MODULE],
-       [AC_MSG_CHECKING([whether modules can be built])
+AC_DEFUN([ZFS_AC_TEST_MODULE], [
+       AC_MSG_CHECKING([whether modules can be built])
        ZFS_LINUX_TRY_COMPILE([],[],[
                AC_MSG_RESULT([yes])
        ],[
@@ -442,10 +452,16 @@ dnl # detected at configure time and cause a build failure.  Otherwise
 dnl # modules may be successfully built that behave incorrectly.
 dnl #
 AC_DEFUN([ZFS_AC_KERNEL_CONFIG], [
-
-       AS_IF([test "$ZFS_META_LICENSE" = GPL], [
-               AC_DEFINE([HAVE_GPL_ONLY_SYMBOLS], [1],
-                       [Define to 1 if licensed under the GPL])
+       AC_RUN_IFELSE([
+               AC_LANG_PROGRAM([
+                       #include "$LINUX/include/linux/license.h"
+               ], [
+                       return !license_is_gpl_compatible("$ZFS_META_LICENSE");
+               ])
+       ], [
+               AC_DEFINE([ZFS_IS_GPL_COMPATIBLE], [1],
+                   [Define to 1 if GPL-only symbols can be used])
+       ], [
        ])
 
        ZFS_AC_KERNEL_CONFIG_DEBUG_LOCK_ALLOC
@@ -494,9 +510,18 @@ AC_DEFUN([ZFS_AC_KERNEL_CONFIG_DEBUG_LOCK_ALLOC], [
 ])
 
 dnl #
-dnl # ZFS_LINUX_CONFTEST
+dnl # ZFS_LINUX_CONFTEST_H
+dnl #
+AC_DEFUN([ZFS_LINUX_CONFTEST_H], [
+cat - <<_ACEOF >conftest.h
+$1
+_ACEOF
+])
+
 dnl #
-AC_DEFUN([ZFS_LINUX_CONFTEST], [
+dnl # ZFS_LINUX_CONFTEST_C
+dnl #
+AC_DEFUN([ZFS_LINUX_CONFTEST_C], [
 cat confdefs.h - <<_ACEOF >conftest.c
 $1
 _ACEOF
@@ -522,13 +547,14 @@ dnl #
 dnl # ZFS_LINUX_COMPILE_IFELSE / like AC_COMPILE_IFELSE
 dnl #
 AC_DEFUN([ZFS_LINUX_COMPILE_IFELSE], [
-       m4_ifvaln([$1], [ZFS_LINUX_CONFTEST([$1])])
+       m4_ifvaln([$1], [ZFS_LINUX_CONFTEST_C([$1])])
+       m4_ifvaln([$6], [ZFS_LINUX_CONFTEST_H([$6])], [ZFS_LINUX_CONFTEST_H([])])
        rm -Rf build && mkdir -p build && touch build/conftest.mod.c
        echo "obj-m := conftest.o" >build/Makefile
        modpost_flag=''
        test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage
        AS_IF(
-               [AC_TRY_COMMAND(cp conftest.c build && make [$2] -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag) >/dev/null && AC_TRY_COMMAND([$3])],
+               [AC_TRY_COMMAND(cp conftest.c conftest.h build && make [$2] -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag) >/dev/null && AC_TRY_COMMAND([$3])],
                [$4],
                [_AC_MSG_LOG_CONFTEST m4_ifvaln([$5],[$5])]
        )
@@ -615,3 +641,16 @@ AC_DEFUN([ZFS_LINUX_TRY_COMPILE_SYMBOL], [
                fi
        fi
 ])
+
+dnl #
+dnl # ZFS_LINUX_TRY_COMPILE_HEADER
+dnl # like ZFS_LINUX_TRY_COMPILE, except the contents conftest.h are
+dnl # provided via the fifth parameter
+dnl #
+AC_DEFUN([ZFS_LINUX_TRY_COMPILE_HEADER],
+       [ZFS_LINUX_COMPILE_IFELSE(
+       [AC_LANG_SOURCE([ZFS_LANG_PROGRAM([[$1]], [[$2]])])],
+       [modules],
+       [test -s build/conftest.o],
+       [$3], [$4], [$5])
+])