ZFS_AC_KERNEL_NR_CACHED_OBJECTS
ZFS_AC_KERNEL_FREE_CACHED_OBJECTS
ZFS_AC_KERNEL_FALLOCATE
+ ZFS_AC_KERNEL_MKDIR_UMODE_T
+ ZFS_AC_KERNEL_LOOKUP_NAMEIDATA
+ ZFS_AC_KERNEL_CREATE_NAMEIDATA
ZFS_AC_KERNEL_TRUNCATE_RANGE
- ZFS_AC_KERNEL_CREATE_UMODE_T
ZFS_AC_KERNEL_AUTOMOUNT
ZFS_AC_KERNEL_ENCODE_FH_WITH_INODE
+ ZFS_AC_KERNEL_COMMIT_METADATA
ZFS_AC_KERNEL_CLEAR_INODE
ZFS_AC_KERNEL_INSERT_INODE_LOCKED
ZFS_AC_KERNEL_D_MAKE_ROOT
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
AS_IF([test "$LINUX_OBJ" != "$LINUX"], [
KERNELMAKE_PARAMS="$KERNELMAKE_PARAMS O=$LINUX_OBJ"
dnl #
dnl # Detect name used for the additional SPL Module.symvers file. If one
dnl # does not exist this is likely because the SPL has been configured
-dnl # but not built. To allow recursive builds a good guess is made as to
-dnl # what this file will be named based on what it is named in the kernel
-dnl # build products. This file will first be used at link time so if
-dnl # the guess is wrong the build will fail then. This unfortunately
-dnl # means the ZFS package does not contain a reliable mechanism to
-dnl # detect symbols exported by the SPL at configure time.
+dnl # but not built. The '--with-spl-timeout' option can be passed
+dnl # to pause here, waiting for the file to appear from a concurrently
+dnl # building SPL package. If the file does not appear in time, a good
+dnl # guess is made as to what this file will be named based on what it
+dnl # is named in the kernel build products. This file will first be
+dnl # used at link time so if the guess is wrong the build will fail
+dnl # then. This unfortunately means the ZFS package does not contain a
+dnl # reliable mechanism to detect symbols exported by the SPL at
+dnl # configure time.
dnl #
AC_DEFUN([ZFS_AC_SPL_MODULE_SYMVERS], [
+ AC_ARG_WITH([spl-timeout],
+ AS_HELP_STRING([--with-spl-timeout=SECS],
+ [Wait SECS for symvers file to appear @<:@default=0@:>@]),
+ [timeout="$withval"], [timeout=0])
+
AC_MSG_CHECKING([spl file name for module symbols])
- AS_IF([test -r $SPL_OBJ/Module.symvers], [
- SPL_SYMBOLS=Module.symvers
- ], [test -r $SPL_OBJ/Modules.symvers], [
- SPL_SYMBOLS=Modules.symvers
- ], [test -r $SPL_OBJ/module/Module.symvers], [
- SPL_SYMBOLS=Module.symvers
- ], [test -r $SPL_OBJ/module/Modules.symvers], [
- SPL_SYMBOLS=Modules.symvers
- ], [
+ SPL_SYMBOLS=NONE
+
+ while true; do
+ AS_IF([test -r $SPL_OBJ/Module.symvers], [
+ SPL_SYMBOLS=Module.symvers
+ ], [test -r $SPL_OBJ/Modules.symvers], [
+ SPL_SYMBOLS=Modules.symvers
+ ], [test -r $SPL_OBJ/module/Module.symvers], [
+ SPL_SYMBOLS=Module.symvers
+ ], [test -r $SPL_OBJ/module/Modules.symvers], [
+ SPL_SYMBOLS=Modules.symvers
+ ])
+
+ AS_IF([test $SPL_SYMBOLS != NONE -o $timeout -le 0], [
+ break;
+ ], [
+ sleep 1
+ timeout=$((timeout-1))
+ ])
+ done
+
+ AS_IF([test "$SPL_SYMBOLS" = NONE], [
SPL_SYMBOLS=$LINUX_SYMBOLS
])
AC_MSG_CHECKING([spl source directory])
AS_IF([test -z "$splsrc"], [
+ dnl #
+ dnl # Look in the standard development package location
+ dnl #
sourcelink=`ls -1d /usr/src/spl-*/${LINUX_VERSION} \
2>/dev/null | tail -1`
- AS_IF([test -z "$sourcelink" || test ! -e $sourcelink], [
+ dnl #
+ dnl # Look in the DKMS source location
+ dnl #
+ AS_IF([test -z "$sourcelink" || test ! -e $sourcelink/spl_config.h], [
+ sourcelink=`ls -1d /var/lib/dkms/spl/*/build \
+ 2>/dev/null | tail -1`
+ ])
+
+ dnl #
+ dnl # Look in the parent directory
+ dnl #
+ AS_IF([test -z "$sourcelink" || test ! -e $sourcelink/spl_config.h], [
sourcelink=../spl
])
- AS_IF([test -e $sourcelink], [
+ dnl #
+ dnl # Look in the kernel directory
+ dnl #
+ AS_IF([test -z "$sourcelink" || test ! -e $sourcelink/spl_config.h], [
+ sourcelink="$LINUX"
+ ])
+
+ AS_IF([test -e $sourcelink/spl_config.h], [
splsrc=`readlink -f ${sourcelink}`
], [
AC_MSG_RESULT([Not found])
[Define to 1 if licensed under the GPL])
])
- ZFS_AC_KERNEL_CONFIG_PREEMPT
ZFS_AC_KERNEL_CONFIG_DEBUG_LOCK_ALLOC
])
dnl #
-dnl # Check CONFIG_PREEMPT
-dnl #
-dnl # Premptible kernels will be supported in the future. But at the
-dnl # moment there are a few places in the code which need to be updated
-dnl # to accomidate them. Until that work occurs we should detect this
-dnl # at configure time and fail with a sensible message. Otherwise,
-dnl # people will be able to build successfully, however they will have
-dnl # stability problems. See https://github.com/zfsonlinux/zfs/issues/83
-dnl #
-AC_DEFUN([ZFS_AC_KERNEL_CONFIG_PREEMPT], [
-
- ZFS_LINUX_CONFIG([PREEMPT],
- AC_MSG_ERROR([
- *** Kernel built with CONFIG_PREEMPT which is not supported.
- *** You must rebuild your kernel without this option.]), [])
-])
-
-dnl #
dnl # Check CONFIG_DEBUG_LOCK_ALLOC
dnl #
dnl # This is typically only set for debug kernels because it comes with