ZFS_AC_TEST_MODULE
ZFS_AC_KERNEL_CONFIG
ZFS_AC_KERNEL_BDEV_BLOCK_DEVICE_OPERATIONS
+ ZFS_AC_KERNEL_BLOCK_DEVICE_OPERATIONS_RELEASE_VOID
ZFS_AC_KERNEL_TYPE_FMODE_T
ZFS_AC_KERNEL_KOBJ_NAME_LEN
ZFS_AC_KERNEL_3ARG_BLKDEV_GET
ZFS_AC_KERNEL_BLKDEV_GET_BY_PATH
ZFS_AC_KERNEL_OPEN_BDEV_EXCLUSIVE
+ ZFS_AC_KERNEL_LOOKUP_BDEV
ZFS_AC_KERNEL_INVALIDATE_BDEV_ARGS
ZFS_AC_KERNEL_BDEV_LOGICAL_BLOCK_SIZE
ZFS_AC_KERNEL_BDEV_PHYSICAL_BLOCK_SIZE
- ZFS_AC_KERNEL_BIO_EMPTY_BARRIER
ZFS_AC_KERNEL_BIO_FAILFAST
ZFS_AC_KERNEL_BIO_FAILFAST_DTD
ZFS_AC_KERNEL_REQ_FAILFAST_MASK
ZFS_AC_KERNEL_SET_NLINK
ZFS_AC_KERNEL_ELEVATOR_CHANGE
ZFS_AC_KERNEL_5ARG_SGET
+ ZFS_AC_KERNEL_LSEEK_EXECUTE
AS_IF([test "$LINUX_OBJ" != "$LINUX"], [
KERNELMAKE_PARAMS="$KERNELMAKE_PARAMS O=$LINUX_OBJ"
AS_IF([test ! -f "$LINUX_OBJ/$LINUX_SYMBOLS"], [
AC_MSG_ERROR([
*** Please make sure the kernel devel package for your distribution
- *** is installed. If your building with a custom kernel make sure the
+ *** is installed. If you are building with a custom kernel, make sure the
*** kernel is configured, built, and the '--with-linux=PATH' configure
*** option refers to the location of the kernel source.])
])
AS_IF([test ! -d "$kernelsrc"], [
AC_MSG_ERROR([
*** Please make sure the kernel devel package for your distribution
- *** is installed then try again. If that fails you can specify the
+ *** is installed and then try again. If that fails, you can specify the
*** location of the kernel source with the '--with-linux=PATH' option.])
])
ZFS_AC_MODULE_SYMVERS
])
-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. 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])
- 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_RESULT([$SPL_SYMBOLS])
- AC_SUBST(SPL_SYMBOLS)
-])
dnl #
dnl # Detect the SPL module to be built against
[Path to spl build objects]),
[splbuild="$withval"])
+ AC_ARG_WITH([spl-timeout],
+ AS_HELP_STRING([--with-spl-timeout=SECS],
+ [Wait SECS for SPL header and symver file @<:@default=0@:>@]),
+ [timeout="$withval"], [timeout=0])
- 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`
-
- 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
- ])
-
- dnl #
- dnl # Look in the kernel directory
- dnl #
- AS_IF([test -z "$sourcelink" || test ! -e $sourcelink/spl_config.h], [
- sourcelink="$LINUX"
- ])
+ dnl #
+ dnl # The existence of spl.release.in is used to identify a valid
+ 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"
- AS_IF([test -e $sourcelink/spl_config.h], [
- splsrc=`readlink -f ${sourcelink}`
+ AC_MSG_CHECKING([spl source directory])
+ AS_IF([test -z "${splsrc}"], [
+ AS_IF([ test -e "${splsrc0}/spl.release.in"], [
+ splsrc=${splsrc0}
+ ], [ test -e "${splsrc1}/spl.release.in"], [
+ splsrc=${splsrc1}
+ ], [ test -e "${splsrc2}/spl.release.in"], [
+ splsrc=${splsrc2}
+ ], [ test -e "${splsrc3}/spl.release.in"], [
+ splsrc=$(readlink -f "${splsrc3}")
+ ], [ test -e "${splsrc4}/spl.release.in" ], [
+ splsrc=${splsrc4}
], [
- AC_MSG_RESULT([Not found])
- AC_MSG_ERROR([
- *** Please make sure the spl devel package for your distribution
- *** is installed then try again. If that fails you can specify the
- *** location of the spl source with the '--with-spl=PATH' option.])
+ splsrc="[Not found]"
])
], [
AS_IF([test "$splsrc" = "NONE"], [
])
AC_MSG_RESULT([$splsrc])
- AC_MSG_CHECKING([spl build directory])
- AS_IF([test -z "$splbuild"], [
- splbuild=${splsrc}
+ AS_IF([ test ! -e "$splsrc/spl.release.in"], [
+ AC_MSG_ERROR([
+ *** Please make sure the kmod spl devel package for your distribution
+ *** is installed then try again. If that fails you can specify the
+ *** location of the spl source with the '--with-spl=PATH' option.])
])
+
+ dnl #
+ dnl # The existence of the spl_config.h is used to identify a valid
+ dnl # spl object directory. In many cases the object and source
+ dnl # directory are the same, however the objects may also reside
+ dnl # is a subdirectory named after the kernel version.
+ dnl #
+ dnl # This file is supposed to be available after DKMS finishes
+ dnl # building the SPL kernel module for the target kernel. The
+ dnl # '--with-spl-timeout' option can be passed to pause here,
+ dnl # waiting for the file to appear from a concurrently building
+ dnl # SPL package.
+ dnl #
+ AC_MSG_CHECKING([spl build directory])
+ while true; do
+ AS_IF([test -z "$splbuild"], [
+ AS_IF([ test -e "${splsrc}/${LINUX_VERSION}/spl_config.h" ], [
+ splbuild="${splsrc}/${LINUX_VERSION}"
+ ], [ test -e "${splsrc}/spl_config.h" ], [
+ splbuild="${splsrc}"
+ ], [
+ splbuild="[Not found]"
+ ])
+ ])
+ AS_IF([test -e "$splbuild/spl_config.h" -o $timeout -le 0], [
+ break;
+ ], [
+ sleep 1
+ timeout=$((timeout-1))
+ ])
+ done
+
AC_MSG_RESULT([$splbuild])
+ AS_IF([ ! test -e "$splbuild/spl_config.h"], [
+ AC_MSG_ERROR([
+ *** Please make sure the kmod spl devel <kernel> package for your
+ *** distribution is installed then try again. If that fails you
+ *** can specify the location of the spl objects with the
+ *** '--with-spl-obj=PATH' option.])
+ ])
AC_MSG_CHECKING([spl source version])
AS_IF([test -r $splbuild/spl_config.h &&
AC_SUBST(SPL_OBJ)
AC_SUBST(SPL_VERSION)
- ZFS_AC_SPL_MODULE_SYMVERS
+ dnl #
+ dnl # Detect the name used for the SPL Module.symvers file. If one
+ dnl # does not exist this is likely because the SPL has been configured
+ 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_MSG_CHECKING([spl file name for module symbols])
+ 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_RESULT([$SPL_SYMBOLS])
+ AC_SUBST(SPL_SYMBOLS)
])
dnl #
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-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag) >/dev/null && AC_TRY_COMMAND([$3])],
+ [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])],
[$4],
[_AC_MSG_LOG_CONFTEST m4_ifvaln([$5],[$5])]
)