X-Git-Url: https://git.camperquake.de/gitweb.cgi?a=blobdiff_plain;f=config%2Fkernel.m4;h=8b4a5c79a2447fcf631eb6686e54acd4044c26b6;hb=15805c7711a69a293d7ab974a7e8f19c388836b4;hp=517af39f7a1ff87be026b0b41b69d542c5ee131b;hpb=2959d94a0a53612cc1ca9ce9d17df26c3d69a513;p=zfs.git diff --git a/config/kernel.m4 b/config/kernel.m4 index 517af39..8b4a5c7 100644 --- a/config/kernel.m4 +++ b/config/kernel.m4 @@ -8,13 +8,18 @@ AC_DEFUN([ZFS_AC_CONFIG_KERNEL], [ ZFS_AC_KERNEL_BDEV_BLOCK_DEVICE_OPERATIONS ZFS_AC_KERNEL_TYPE_FMODE_T ZFS_AC_KERNEL_KOBJ_NAME_LEN + ZFS_AC_KERNEL_BLKDEV_GET_BY_PATH ZFS_AC_KERNEL_OPEN_BDEV_EXCLUSIVE ZFS_AC_KERNEL_INVALIDATE_BDEV_ARGS ZFS_AC_KERNEL_BDEV_LOGICAL_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_BIO_END_IO_T_ARGS + ZFS_AC_KERNEL_BIO_RW_SYNC ZFS_AC_KERNEL_BIO_RW_SYNCIO + ZFS_AC_KERNEL_REQ_SYNC ZFS_AC_KERNEL_BLK_END_REQUEST ZFS_AC_KERNEL_BLK_FETCH_REQUEST ZFS_AC_KERNEL_BLK_REQUEUE_REQUEST @@ -24,6 +29,11 @@ AC_DEFUN([ZFS_AC_CONFIG_KERNEL], [ ZFS_AC_KERNEL_GET_DISK_RO ZFS_AC_KERNEL_RQ_IS_SYNC ZFS_AC_KERNEL_RQ_FOR_EACH_SEGMENT + ZFS_AC_KERNEL_CONST_XATTR_HANDLER + ZFS_AC_KERNEL_XATTR_HANDLER_GET + ZFS_AC_KERNEL_XATTR_HANDLER_SET + ZFS_AC_KERNEL_FSYNC_2ARGS + ZFS_AC_KERNEL_EVICT_INODE if test "$LINUX_OBJ" != "$LINUX"; then KERNELMAKE_PARAMS="$KERNELMAKE_PARAMS O=$LINUX_OBJ" @@ -74,8 +84,11 @@ AC_DEFUN([ZFS_AC_KERNEL], [ AC_MSG_CHECKING([kernel source directory]) if test -z "$kernelsrc"; then - headersdir="/lib/modules/$(uname -r)/build" - if test -e "$headersdir"; then + if test -e "/lib/modules/$(uname -r)/source"; then + headersdir="/lib/modules/$(uname -r)/source" + sourcelink=$(readlink -f "$headersdir") + elif test -e "/lib/modules/$(uname -r)/build"; then + headersdir="/lib/modules/$(uname -r)/build" sourcelink=$(readlink -f "$headersdir") else sourcelink=$(ls -1d /usr/src/kernels/* \ @@ -101,7 +114,9 @@ AC_DEFUN([ZFS_AC_KERNEL], [ AC_MSG_RESULT([$kernelsrc]) AC_MSG_CHECKING([kernel build directory]) if test -z "$kernelbuild"; then - if test -d ${kernelsrc}-obj/${target_cpu}/${target_cpu}; then + if test -e "/lib/modules/$(uname -r)/build"; then + kernelbuild=`readlink -f /lib/modules/$(uname -r)/build` + elif test -d ${kernelsrc}-obj/${target_cpu}/${target_cpu}; then kernelbuild=${kernelsrc}-obj/${target_cpu}/${target_cpu} elif test -d ${kernelsrc}-obj/${target_cpu}/default; then kernelbuild=${kernelsrc}-obj/${target_cpu}/default @@ -259,6 +274,12 @@ AC_DEFUN([ZFS_AC_SPL], [ ]) dnl # +dnl # Certain kernel build options are not supported. These must be +dnl # detected at configure time and cause a build failure. Otherwise +dnl # modules may be successfully built that behave incorrectly. +dnl # +dnl # CONFIG_PREEMPT - Preempt kernels require special handling. +dnl # dnl # There are certain kernel build options which when enabled are dnl # completely incompatible with non GPL kernel modules. It is best dnl # to detect these at configure time and fail with a clear error @@ -268,6 +289,11 @@ dnl # CONFIG_DEBUG_LOCK_ALLOC - Maps mutex_lock() to mutex_lock_nested() dnl # AC_DEFUN([ZFS_AC_KERNEL_CONFIG], [ + ZFS_LINUX_CONFIG([PREEMPT], + AC_MSG_ERROR([ + *** Kernel built with CONFIG_PREEMPT which is not supported. + ** You must rebuild your kernel without this option.]), []) + if test "$ZFS_META_LICENSE" = CDDL; then ZFS_LINUX_CONFIG([DEBUG_LOCK_ALLOC], AC_MSG_ERROR([