Linux 3.2 compat: set_nlink()
[zfs.git] / configure
index 9eaa373..e9e2ec1 100755 (executable)
--- a/configure
+++ b/configure
@@ -798,6 +798,8 @@ LIBSELINUX
 LIBBLKID
 LIBUUID
 ZLIB
+udevruledir
+udevdir
 KERNELCPPFLAGS
 KERNELMAKE_PARAMS
 SPL_SYMBOLS
@@ -812,8 +814,15 @@ NO_UNUSED_BUT_SET_VARIABLE
 ZFS_CONFIG
 TARGET_ASM_DIR
 DEFAULT_INIT_SCRIPT
+DEFAULT_INIT_DIR
 DEFAULT_PACKAGE
 VENDOR
+MAKEPKG_VERSION
+MAKEPKG
+HAVE_MAKEPKG
+PACMAN_VERSION
+PACMAN
+HAVE_PACMAN
 ALIEN_VERSION
 ALIEN
 HAVE_ALIEN
@@ -974,6 +983,8 @@ with_linux
 with_linux_obj
 with_spl
 with_spl_obj
+with_udevdir
+with_udevruledir
 with_blkid
 with_selinux
 enable_debug
@@ -1642,6 +1653,8 @@ Optional Packages:
   --with-linux-obj=PATH   Path to kernel build objects
   --with-spl=PATH         Path to spl source
   --with-spl-obj=PATH     Path to spl build objects
+  --with-udevdir=DIR      install udev helpers [EPREFIX/lib/udev]
+  --with-udevruledir=DIR  install udev rules [UDEVDIR/rules.d]
   --with-blkid            support blkid caching [default=check]
   --with-selinux          support selinux [default=check]
 
@@ -4822,13 +4835,13 @@ if test "${lt_cv_nm_interface+set}" = set; then
 else
   lt_cv_nm_interface="BSD nm"
   echo "int some_variable = 0;" > conftest.$ac_ext
-  (eval echo "\"\$as_me:4825: $ac_compile\"" >&5)
+  (eval echo "\"\$as_me:4838: $ac_compile\"" >&5)
   (eval "$ac_compile" 2>conftest.err)
   cat conftest.err >&5
-  (eval echo "\"\$as_me:4828: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+  (eval echo "\"\$as_me:4841: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
   (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
   cat conftest.err >&5
-  (eval echo "\"\$as_me:4831: output\"" >&5)
+  (eval echo "\"\$as_me:4844: output\"" >&5)
   cat conftest.out >&5
   if $GREP 'External.*some_variable' conftest.out > /dev/null; then
     lt_cv_nm_interface="MS dumpbin"
@@ -6034,7 +6047,7 @@ ia64-*-hpux*)
   ;;
 *-*-irix6*)
   # Find out which ABI we are using.
-  echo '#line 6037 "configure"' > conftest.$ac_ext
+  echo '#line 6050 "configure"' > conftest.$ac_ext
   if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
@@ -7887,11 +7900,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:7890: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:7903: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:7894: \$? = $ac_status" >&5
+   echo "$as_me:7907: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -8226,11 +8239,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:8229: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:8242: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:8233: \$? = $ac_status" >&5
+   echo "$as_me:8246: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -8331,11 +8344,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:8334: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:8347: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:8338: \$? = $ac_status" >&5
+   echo "$as_me:8351: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -8386,11 +8399,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:8389: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:8402: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:8393: \$? = $ac_status" >&5
+   echo "$as_me:8406: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -11189,7 +11202,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11192 "configure"
+#line 11205 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11285,7 +11298,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11288 "configure"
+#line 11301 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
 
 
 
+       PACMAN=pacman
+       MAKEPKG=makepkg
+
+       { $as_echo "$as_me:$LINENO: checking whether $PACMAN is available" >&5
+$as_echo_n "checking whether $PACMAN is available... " >&6; }
+       tmp=$($PACMAN --version 2>/dev/null)
+       if test -n "$tmp"; then
+
+               PACMAN_VERSION=$(echo $tmp |
+                                $AWK '/Pacman/ { print $3 }' |
+                                $SED 's/^v//')
+               HAVE_PACMAN=yes
+               { $as_echo "$as_me:$LINENO: result: $HAVE_PACMAN ($PACMAN_VERSION)" >&5
+$as_echo "$HAVE_PACMAN ($PACMAN_VERSION)" >&6; }
+
+else
+
+               HAVE_PACMAN=no
+               { $as_echo "$as_me:$LINENO: result: $HAVE_PACMAN" >&5
+$as_echo "$HAVE_PACMAN" >&6; }
+
+fi
+
+
+       { $as_echo "$as_me:$LINENO: checking whether $MAKEPKG is available" >&5
+$as_echo_n "checking whether $MAKEPKG is available... " >&6; }
+       tmp=$($MAKEPKG --version 2>/dev/null)
+       if test -n "$tmp"; then
+
+               MAKEPKG_VERSION=$(echo $tmp | $AWK '/makepkg/ { print $3 }')
+               HAVE_MAKEPKG=yes
+               { $as_echo "$as_me:$LINENO: result: $HAVE_MAKEPKG ($MAKEPKG_VERSION)" >&5
+$as_echo "$HAVE_MAKEPKG ($MAKEPKG_VERSION)" >&6; }
+
+else
+
+               HAVE_MAKEPKG=no
+               { $as_echo "$as_me:$LINENO: result: $HAVE_MAKEPKG" >&5
+$as_echo "$HAVE_MAKEPKG" >&6; }
+
+fi
+
+
+
+
+
+
+
+
+
+
+
        { $as_echo "$as_me:$LINENO: checking linux distribution" >&5
 $as_echo_n "checking linux distribution... " >&6; }
        if test -f /etc/redhat-release ; then
@@ -11798,6 +11863,8 @@ $as_echo_n "checking linux distribution... " >&6; }
                VENDOR=ubuntu ;
        elif test -f /etc/lunar.release ; then
                VENDOR=lunar ;
+       elif test -f /etc/arch-release ; then
+               VENDOR=arch ;
        else
                VENDOR= ;
        fi
@@ -11816,6 +11883,7 @@ $as_echo_n "checking default package type... " >&6; }
                slackware)  DEFAULT_PACKAGE=tgz ;;
                gentoo)     DEFAULT_PACKAGE=tgz ;;
                lunar)      DEFAULT_PACKAGE=tgz ;;
+               arch)       DEFAULT_PACKAGE=arch;;
                *)          DEFAULT_PACKAGE=rpm ;;
        esac
 
@@ -11823,6 +11891,17 @@ $as_echo_n "checking default package type... " >&6; }
 $as_echo "$DEFAULT_PACKAGE" >&6; }
 
 
+       { $as_echo "$as_me:$LINENO: checking default init directory" >&5
+$as_echo_n "checking default init directory... " >&6; }
+       case "$VENDOR" in
+               arch)       DEFAULT_INIT_DIR=$sysconfdir/rc.d ;;
+               *)          DEFAULT_INIT_DIR=$sysconfdir/init.d ;;
+       esac
+
+       { $as_echo "$as_me:$LINENO: result: $DEFAULT_INIT_DIR" >&5
+$as_echo "$DEFAULT_INIT_DIR" >&6; }
+
+
        { $as_echo "$as_me:$LINENO: checking default init script type" >&5
 $as_echo_n "checking default init script type... " >&6; }
        case "$VENDOR" in
@@ -11834,6 +11913,7 @@ $as_echo_n "checking default init script type... " >&6; }
                slackware)  DEFAULT_INIT_SCRIPT=lsb ;;
                gentoo)     DEFAULT_INIT_SCRIPT=gentoo ;;
                lunar)      DEFAULT_INIT_SCRIPT=lunar ;;
+               arch)       DEFAULT_INIT_SCRIPT=arch ;;
                *)          DEFAULT_INIT_SCRIPT=lsb ;;
        esac
 
        { $as_echo "$as_me:$LINENO: checking kernel source directory" >&5
 $as_echo_n "checking kernel source directory... " >&6; }
        if test -z "$kernelsrc"; 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
+
+elif test -e "/lib/modules/$(uname -r)/build"; then
+
                        headersdir="/lib/modules/$(uname -r)/build"
                        sourcelink=$(readlink -f "$headersdir")
-               else
+
+else
+
                        sourcelink=$(ls -1d /usr/src/kernels/* \
-                                    /usr/src/linux-* \
+                                    /usr/src/linux-* \
                                     2>/dev/null | grep -v obj | tail -1)
-               fi
+
+fi
+
 
                if test -n "$sourcelink" && test -e ${sourcelink}; then
+
                        kernelsrc=`readlink -f ${sourcelink}`
-               else
+
+else
+
                        { $as_echo "$as_me:$LINENO: result: Not found" >&5
 $as_echo "Not found" >&6; }
                        { { $as_echo "$as_me:$LINENO: error:
@@ -11988,30 +12079,53 @@ $as_echo "$as_me: error:
        *** is installed then try again.  If that fails you can specify the
        *** location of the kernel source with the '--with-linux=PATH' option." >&2;}
    { (exit 1); exit 1; }; }
-               fi
-       else
+
+fi
+
+
+else
+
                if test "$kernelsrc" = "NONE"; then
+
                        kernsrcver=NONE
-               fi
-       fi
+
+fi
+
+
+fi
+
 
        { $as_echo "$as_me:$LINENO: result: $kernelsrc" >&5
 $as_echo "$kernelsrc" >&6; }
        { $as_echo "$as_me:$LINENO: checking kernel build directory" >&5
 $as_echo_n "checking kernel build directory... " >&6; }
        if test -z "$kernelbuild"; 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
+
+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
+
+elif test -d ${kernelsrc}-obj/${target_cpu}/default; then
+
                        kernelbuild=${kernelsrc}-obj/${target_cpu}/default
-               elif test -d `dirname ${kernelsrc}`/build-${target_cpu}; then
+
+elif test -d `dirname ${kernelsrc}`/build-${target_cpu}; then
+
                        kernelbuild=`dirname ${kernelsrc}`/build-${target_cpu}
-               else
+
+else
+
                        kernelbuild=${kernelsrc}
-               fi
-       fi
+
+fi
+
+
+fi
+
        { $as_echo "$as_me:$LINENO: result: $kernelbuild" >&5
 $as_echo "$kernelbuild" >&6; }
 
@@ -12021,33 +12135,48 @@ $as_echo_n "checking kernel source version... " >&6; }
        utsrelease2=$kernelbuild/include/linux/utsrelease.h
        utsrelease3=$kernelbuild/include/generated/utsrelease.h
        if test -r $utsrelease1 && fgrep -q UTS_RELEASE $utsrelease1; then
+
                utsrelease=linux/version.h
-       elif test -r $utsrelease2 && fgrep -q UTS_RELEASE $utsrelease2; then
+
+elif test -r $utsrelease2 && fgrep -q UTS_RELEASE $utsrelease2; then
+
                utsrelease=linux/utsrelease.h
-       elif test -r $utsrelease3 && fgrep -q UTS_RELEASE $utsrelease3; then
+
+elif test -r $utsrelease3 && fgrep -q UTS_RELEASE $utsrelease3; then
+
                utsrelease=generated/utsrelease.h
-       fi
+
+fi
+
 
        if test "$utsrelease"; then
+
                kernsrcver=`(echo "#include <$utsrelease>";
                             echo "kernsrcver=UTS_RELEASE") |
                             cpp -I $kernelbuild/include |
                             grep "^kernsrcver=" | cut -d \" -f 2`
 
                if test -z "$kernsrcver"; then
+
                        { $as_echo "$as_me:$LINENO: result: Not found" >&5
 $as_echo "Not found" >&6; }
                        { { $as_echo "$as_me:$LINENO: error: *** Cannot determine kernel version." >&5
 $as_echo "$as_me: error: *** Cannot determine kernel version." >&2;}
    { (exit 1); exit 1; }; }
-               fi
-       else
+
+fi
+
+
+else
+
                { $as_echo "$as_me:$LINENO: result: Not found" >&5
 $as_echo "Not found" >&6; }
                { { $as_echo "$as_me:$LINENO: error: *** Cannot find UTS_RELEASE definition." >&5
 $as_echo "$as_me: error: *** Cannot find UTS_RELEASE definition." >&2;}
    { (exit 1); exit 1; }; }
-       fi
+
+fi
+
 
        { $as_echo "$as_me:$LINENO: result: $kernsrcver" >&5
 $as_echo "$kernsrcver" >&6; }
@@ -12065,13 +12194,20 @@ $as_echo "$kernsrcver" >&6; }
        { $as_echo "$as_me:$LINENO: checking kernel file name for module symbols" >&5
 $as_echo_n "checking kernel file name for module symbols... " >&6; }
        if test -f "$modpost"; then
+
                if grep -q Modules.symvers $modpost; then
+
                        LINUX_SYMBOLS=Modules.symvers
-               else
+
+else
+
                        LINUX_SYMBOLS=Module.symvers
-               fi
 
-               if ! test -f "$LINUX_OBJ/$LINUX_SYMBOLS"; then
+fi
+
+
+               if test ! -f "$LINUX_OBJ/$LINUX_SYMBOLS"; then
+
                        { { $as_echo "$as_me:$LINENO: error:
        *** Please make sure the kernel devel package for your distribution
        *** is installed.  If your building with a custom kernel make sure the
@@ -12083,10 +12219,16 @@ $as_echo "$as_me: error:
        *** kernel is configured, built, and the '--with-linux=PATH' configure
        *** option refers to the location of the kernel source." >&2;}
    { (exit 1); exit 1; }; }
-               fi
-       else
+
+fi
+
+
+else
+
                LINUX_SYMBOLS=NONE
-       fi
+
+fi
+
        { $as_echo "$as_me:$LINENO: result: $LINUX_SYMBOLS" >&5
 $as_echo "$LINUX_SYMBOLS" >&6; }
 
        { $as_echo "$as_me:$LINENO: checking spl source directory" >&5
 $as_echo_n "checking spl source directory... " >&6; }
        if test -z "$splsrc"; then
+
                sourcelink=`ls -1d /usr/src/spl-*/${LINUX_VERSION} \
                            2>/dev/null | tail -1`
 
                if test -z "$sourcelink" || test ! -e $sourcelink; then
+
                        sourcelink=../spl
-               fi
+
+fi
+
 
                if test -e $sourcelink; then
+
                        splsrc=`readlink -f ${sourcelink}`
-               else
+
+else
+
                        { $as_echo "$as_me:$LINENO: result: Not found" >&5
 $as_echo "Not found" >&6; }
                        { { $as_echo "$as_me:$LINENO: error:
@@ -12132,21 +12281,33 @@ $as_echo "$as_me: error:
        *** is installed then try again.  If that fails you can specify the
        *** location of the spl source with the '--with-spl=PATH' option." >&2;}
    { (exit 1); exit 1; }; }
-               fi
-       else
+
+fi
+
+
+else
+
                if test "$splsrc" = "NONE"; then
+
                        splbuild=NONE
                        splsrcver=NONE
-               fi
-       fi
+
+fi
+
+
+fi
+
 
        { $as_echo "$as_me:$LINENO: result: $splsrc" >&5
 $as_echo "$splsrc" >&6; }
        { $as_echo "$as_me:$LINENO: checking spl build directory" >&5
 $as_echo_n "checking spl build directory... " >&6; }
        if test -z "$splbuild"; then
+
                splbuild=${splsrc}
-       fi
+
+fi
+
        { $as_echo "$as_me:$LINENO: result: $splbuild" >&5
 $as_echo "$splbuild" >&6; }
 
@@ -12155,23 +12316,29 @@ $as_echo_n "checking spl source version... " >&6; }
        if test -r $splbuild/spl_config.h &&
                fgrep -q SPL_META_VERSION $splbuild/spl_config.h; then
 
+
                splsrcver=`(echo "#include <spl_config.h>";
                            echo "splsrcver=SPL_META_VERSION") |
                            cpp -I $splbuild |
                            grep "^splsrcver=" | cut -d \" -f 2`
-       fi
+
+fi
+
 
        if test -z "$splsrcver"; then
+
                { $as_echo "$as_me:$LINENO: result: Not found" >&5
 $as_echo "Not found" >&6; }
                { { $as_echo "$as_me:$LINENO: error:
-               *** Cannot determine the version of the spl source.
-               *** Please prepare the spl source before running this script" >&5
+       *** Cannot determine the version of the spl source.
+       *** Please prepare the spl source before running this script" >&5
 $as_echo "$as_me: error:
-               *** Cannot determine the version of the spl source.
-               *** Please prepare the spl source before running this script" >&2;}
+       *** Cannot determine the version of the spl source.
+       *** Please prepare the spl source before running this script" >&2;}
    { (exit 1); exit 1; }; }
-       fi
+
+fi
+
 
        { $as_echo "$as_me:$LINENO: result: $splsrcver" >&5
 $as_echo "$splsrcver" >&6; }
@@ -12188,16 +12355,27 @@ $as_echo "$splsrcver" >&6; }
        { $as_echo "$as_me:$LINENO: checking spl file name for module symbols" >&5
 $as_echo_n "checking spl file name for module symbols... " >&6; }
        if test -r $SPL_OBJ/Module.symvers; then
+
                SPL_SYMBOLS=Module.symvers
-       elif test -r $SPL_OBJ/Modules.symvers; then
+
+elif test -r $SPL_OBJ/Modules.symvers; then
+
                SPL_SYMBOLS=Modules.symvers
-       elif test -r $SPL_OBJ/module/Module.symvers; then
+
+elif test -r $SPL_OBJ/module/Module.symvers; then
+
                SPL_SYMBOLS=Module.symvers
-       elif test -r $SPL_OBJ/module/Modules.symvers; then
+
+elif test -r $SPL_OBJ/module/Modules.symvers; then
+
                SPL_SYMBOLS=Modules.symvers
-       else
+
+else
+
                SPL_SYMBOLS=$LINUX_SYMBOLS
-       fi
+
+fi
+
 
        { $as_echo "$as_me:$LINENO: result: $SPL_SYMBOLS" >&5
 $as_echo "$SPL_SYMBOLS" >&6; }
@@ -12218,9 +12396,7 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
-               #ifndef AUTOCONF_INCLUDED
-               #include <linux/config.h>
-               #endif
+               #include <linux/module.h>
 
 int
 main (void)
@@ -12254,11 +12430,11 @@ _ACEOF
                { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
                { { $as_echo "$as_me:$LINENO: error:
-               *** Kernel built with CONFIG_PREEMPT which is not supported.
-               ** You must rebuild your kernel without this option." >&5
+       *** Kernel built with CONFIG_PREEMPT which is not supported.
+       *** You must rebuild your kernel without this option." >&5
 $as_echo "$as_me: error:
-               *** Kernel built with CONFIG_PREEMPT which is not supported.
-               ** You must rebuild your kernel without this option." >&2;}
+       *** Kernel built with CONFIG_PREEMPT which is not supported.
+       *** You must rebuild your kernel without this option." >&2;}
    { (exit 1); exit 1; }; }
 
 else
@@ -12279,6 +12455,7 @@ fi
 
 
        if test "$ZFS_META_LICENSE" = CDDL; then
+
                { $as_echo "$as_me:$LINENO: checking whether Linux was built with CONFIG_DEBUG_LOCK_ALLOC" >&5
 $as_echo_n "checking whether Linux was built with CONFIG_DEBUG_LOCK_ALLOC... " >&6; }
 
@@ -12291,9 +12468,7 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
-               #ifndef AUTOCONF_INCLUDED
-               #include <linux/config.h>
-               #endif
+               #include <linux/module.h>
 
 int
 main (void)
@@ -12327,13 +12502,13 @@ _ACEOF
                { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
                { { $as_echo "$as_me:$LINENO: error:
-               *** Kernel built with CONFIG_DEBUG_LOCK_ALLOC which is
-               *** incompatible with the CDDL license.  You must rebuild
-               *** your kernel without this option." >&5
+       *** Kernel built with CONFIG_DEBUG_LOCK_ALLOC which is
+       *** incompatible with the CDDL license.  You must rebuild
+       *** your kernel without this option." >&5
 $as_echo "$as_me: error:
-               *** Kernel built with CONFIG_DEBUG_LOCK_ALLOC which is
-               *** incompatible with the CDDL license.  You must rebuild
-               *** your kernel without this option." >&2;}
+       *** Kernel built with CONFIG_DEBUG_LOCK_ALLOC which is
+       *** incompatible with the CDDL license.  You must rebuild
+       *** your kernel without this option." >&2;}
    { (exit 1); exit 1; }; }
 
 else
 
 
 
-       fi
+
+fi
+
 
        if test "$ZFS_META_LICENSE" = GPL; then
 
+
 cat >>confdefs.h <<\_ACEOF
 #define HAVE_GPL_ONLY_SYMBOLS 1
 _ACEOF
 
-       fi
+
+fi
+
 
 
        { $as_echo "$as_me:$LINENO: checking block device operation prototypes" >&5
 $as_echo_n "checking block device operation prototypes... " >&6; }
+       tmp_flags="$EXTRA_KCFLAGS"
+       EXTRA_KCFLAGS="-Wno-unused-but-set-variable"
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -12442,6 +12624,7 @@ fi
        rm -Rf build
 
 
+       EXTRA_KCFLAGS="$tmp_flags"
 
        { $as_echo "$as_me:$LINENO: checking whether kernel defines fmode_t" >&5
 $as_echo_n "checking whether kernel defines fmode_t... " >&6; }
@@ -12580,20 +12763,27 @@ $as_echo_n "checking whether symbol blkdev_get_by_path is exported... " >&6; }
                $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null
        rc=$?
        if test $rc -ne 0; then
+
                export=0
                for file in fs/block_dev.c; do
                        grep -q -E "EXPORT_SYMBOL.*(blkdev_get_by_path)" "$LINUX/$file" 2>/dev/null
                        rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
+                       if test $rc -eq 0; then
+
+                               export=1
+                               break;
+
+fi
+
                done
                if test $export -eq 0; then
+
                        { $as_echo "$as_me:$LINENO: result: no" >&5
 $as_echo "no" >&6; }
 
-               else
+
+else
+
                        { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 
@@ -12601,8 +12791,12 @@ cat >>confdefs.h <<\_ACEOF
 #define HAVE_BLKDEV_GET_BY_PATH 1
 _ACEOF
 
-               fi
-       else
+
+fi
+
+
+else
+
                { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 
@@ -12610,7 +12804,9 @@ cat >>confdefs.h <<\_ACEOF
 #define HAVE_BLKDEV_GET_BY_PATH 1
 _ACEOF
 
-       fi
+
+fi
+
 
 
 
@@ -12620,20 +12816,27 @@ $as_echo_n "checking whether symbol open_bdev_exclusive is exported... " >&6; }
                $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null
        rc=$?
        if test $rc -ne 0; then
+
                export=0
                for file in fs/block_dev.c; do
                        grep -q -E "EXPORT_SYMBOL.*(open_bdev_exclusive)" "$LINUX/$file" 2>/dev/null
                        rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
+                       if test $rc -eq 0; then
+
+                               export=1
+                               break;
+
+fi
+
                done
                if test $export -eq 0; then
+
                        { $as_echo "$as_me:$LINENO: result: no" >&5
 $as_echo "no" >&6; }
 
-               else
+
+else
+
                        { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 
@@ -12641,8 +12844,12 @@ cat >>confdefs.h <<\_ACEOF
 #define HAVE_OPEN_BDEV_EXCLUSIVE 1
 _ACEOF
 
-               fi
-       else
+
+fi
+
+
+else
+
                { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 
@@ -12650,7 +12857,9 @@ cat >>confdefs.h <<\_ACEOF
 #define HAVE_OPEN_BDEV_EXCLUSIVE 1
 _ACEOF
 
-       fi
+
+fi
+
 
 
 
@@ -12722,6 +12931,8 @@ fi
 
        { $as_echo "$as_me:$LINENO: checking whether bdev_logical_block_size() is available" >&5
 $as_echo_n "checking whether bdev_logical_block_size() is available... " >&6; }
+       tmp_flags="$EXTRA_KCFLAGS"
+       EXTRA_KCFLAGS="-Wno-unused-but-set-variable"
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -12784,6 +12995,7 @@ fi
        rm -Rf build
 
 
+       EXTRA_KCFLAGS="$tmp_flags"
 
 
        { $as_echo "$as_me:$LINENO: checking whether bio_empty_barrier() is defined" >&5
@@ -13324,6 +13536,8 @@ fi
 
        { $as_echo "$as_me:$LINENO: checking whether blk_end_request() is available" >&5
 $as_echo_n "checking whether blk_end_request() is available... " >&6; }
+       tmp_flags="$EXTRA_KCFLAGS"
+       EXTRA_KCFLAGS="-Wno-unused-but-set-variable"
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
        rm -Rf build
 
 
+       EXTRA_KCFLAGS="$tmp_flags"
 
 
        { $as_echo "$as_me:$LINENO: checking whether blk_fetch_request() is available" >&5
 $as_echo_n "checking whether blk_fetch_request() is available... " >&6; }
+       tmp_flags="$EXTRA_KCFLAGS"
+       EXTRA_KCFLAGS="-Wno-unused-but-set-variable"
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
        rm -Rf build
 
 
+       EXTRA_KCFLAGS="$tmp_flags"
 
 
        { $as_echo "$as_me:$LINENO: checking whether blk_requeue_request() is available" >&5
 $as_echo_n "checking whether blk_requeue_request() is available... " >&6; }
+       tmp_flags="$EXTRA_KCFLAGS"
+       EXTRA_KCFLAGS="-Wno-unused-but-set-variable"
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
        rm -Rf build
 
 
+       EXTRA_KCFLAGS="$tmp_flags"
 
 
        { $as_echo "$as_me:$LINENO: checking whether blk_rq_bytes() is available" >&5
 $as_echo_n "checking whether blk_rq_bytes() is available... " >&6; }
+       tmp_flags="$EXTRA_KCFLAGS"
+       EXTRA_KCFLAGS="-Wno-unused-but-set-variable"
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
        rm -Rf build
 
 
+       EXTRA_KCFLAGS="$tmp_flags"
 
 
        { $as_echo "$as_me:$LINENO: checking whether blk_rq_pos() is available" >&5
 $as_echo_n "checking whether blk_rq_pos() is available... " >&6; }
+       tmp_flags="$EXTRA_KCFLAGS"
+       EXTRA_KCFLAGS="-Wno-unused-but-set-variable"
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
        rm -Rf build
 
 
+       EXTRA_KCFLAGS="$tmp_flags"
 
 
        { $as_echo "$as_me:$LINENO: checking whether blk_rq_sectors() is available" >&5
 $as_echo_n "checking whether blk_rq_sectors() is available... " >&6; }
+       tmp_flags="$EXTRA_KCFLAGS"
+       EXTRA_KCFLAGS="-Wno-unused-but-set-variable"
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
        rm -Rf build
 
 
+       EXTRA_KCFLAGS="$tmp_flags"
 
 
        { $as_echo "$as_me:$LINENO: checking whether get_disk_ro() is available" >&5
 $as_echo_n "checking whether get_disk_ro() is available... " >&6; }
+       tmp_flags="$EXTRA_KCFLAGS"
+       EXTRA_KCFLAGS="-Wno-unused-but-set-variable"
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
        rm -Rf build
 
 
+       EXTRA_KCFLAGS="$tmp_flags"
 
 
        { $as_echo "$as_me:$LINENO: checking whether rq_is_sync() is available" >&5
 $as_echo_n "checking whether rq_is_sync() is available... " >&6; }
+       tmp_flags="$EXTRA_KCFLAGS"
+       EXTRA_KCFLAGS="-Wno-unused-but-set-variable"
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
        rm -Rf build
 
 
+       EXTRA_KCFLAGS="$tmp_flags"
 
 
        { $as_echo "$as_me:$LINENO: checking whether rq_for_each_segment() is available" >&5
 $as_echo_n "checking whether rq_for_each_segment() is available... " >&6; }
+       tmp_flags="$EXTRA_KCFLAGS"
+       EXTRA_KCFLAGS="-Wno-unused-but-set-variable"
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -14053,6 +14291,7 @@ fi
        rm -Rf build
 
 
+       EXTRA_KCFLAGS="$tmp_flags"
 
        { $as_echo "$as_me:$LINENO: checking whether super_block uses const struct xattr_hander" >&5
 $as_echo_n "checking whether super_block uses const struct xattr_hander... " >&6; }
@@ -14271,8 +14510,9 @@ fi
 
 
 
-       { $as_echo "$as_me:$LINENO: checking whether fops->fsync() wants 2 args" >&5
-$as_echo_n "checking whether fops->fsync() wants 2 args... " >&6; }
+       { $as_echo "$as_me:$LINENO: checking whether fops->fsync() wants" >&5
+$as_echo_n "checking whether fops->fsync() wants... " >&6; }
+
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -14289,7 +14529,7 @@ int
 main (void)
 {
 
-               int (*fsync) (struct file *, int datasync) = NULL;
+               int (*fsync) (struct file *, struct dentry *, int) = NULL;
                struct file_operations fops __attribute__ ((unused));
 
                fops.fsync = fsync;
@@ -14315,11 +14555,11 @@ _ACEOF
   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
 
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
+               { $as_echo "$as_me:$LINENO: result: dentry" >&5
+$as_echo "dentry" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_2ARGS_FSYNC 1
+#define HAVE_FSYNC_WITH_DENTRY 1
 _ACEOF
 
 
@@ -14327,8 +14567,6 @@ else
   $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-               { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
 
 
 
 
 
 
+
+
+cat confdefs.h - <<_ACEOF >conftest.c
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+               #include <linux/fs.h>
+
+int
+main (void)
+{
+
+               int (*fsync) (struct file *, int) = NULL;
+               struct file_operations fops __attribute__ ((unused));
+
+               fops.fsync = fsync;
+
+  ;
+  return 0;
+}
+
+_ACEOF
+
+
+       rm -Rf build && mkdir -p build
+       echo "obj-m := conftest.o" >build/Makefile
+       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+               { $as_echo "$as_me:$LINENO: result: no dentry" >&5
+$as_echo "no dentry" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_FSYNC_WITHOUT_DENTRY 1
+_ACEOF
+
+
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+
+
+fi
+
+       rm -Rf build
+
+
+
+
+
+
+cat confdefs.h - <<_ACEOF >conftest.c
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+               #include <linux/fs.h>
+
+int
+main (void)
+{
+
+               int (*fsync) (struct file *, loff_t, loff_t, int) = NULL;
+               struct file_operations fops __attribute__ ((unused));
+
+               fops.fsync = fsync;
+
+  ;
+  return 0;
+}
+
+_ACEOF
+
+
+       rm -Rf build && mkdir -p build
+       echo "obj-m := conftest.o" >build/Makefile
+       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+               { $as_echo "$as_me:$LINENO: result: range" >&5
+$as_echo "range" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_FSYNC_RANGE 1
+_ACEOF
+
+
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+
+
+fi
+
+       rm -Rf build
+
+
+
+
+
        { $as_echo "$as_me:$LINENO: checking whether sops->evict_inode() exists" >&5
 $as_echo_n "checking whether sops->evict_inode() exists... " >&6; }
 
@@ -14358,9 +14725,9 @@ main (void)
 {
 
                void (*evict_inode) (struct inode *) = NULL;
-               struct super_operations sops __attribute__ ((unused));
-
-               sops.evict_inode = evict_inode;
+               struct super_operations sops __attribute__ ((unused)) = {
+                       .evict_inode = evict_inode,
+               };
 
   ;
   return 0;
@@ -14413,20 +14780,27 @@ $as_echo_n "checking whether symbol insert_inode_locked is exported... " >&6; }
                $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null
        rc=$?
        if test $rc -ne 0; then
+
                export=0
                for file in fs/inode.c; do
                        grep -q -E "EXPORT_SYMBOL.*(insert_inode_locked)" "$LINUX/$file" 2>/dev/null
                        rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
+                       if test $rc -eq 0; then
+
+                               export=1
+                               break;
+
+fi
+
                done
                if test $export -eq 0; then
+
                        { $as_echo "$as_me:$LINENO: result: no" >&5
 $as_echo "no" >&6; }
 
-               else
+
+else
+
                        { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 
@@ -14434,8 +14808,12 @@ cat >>confdefs.h <<\_ACEOF
 #define HAVE_INSERT_INODE_LOCKED 1
 _ACEOF
 
-               fi
-       else
+
+fi
+
+
+else
+
                { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 
@@ -14443,7 +14821,9 @@ cat >>confdefs.h <<\_ACEOF
 #define HAVE_INSERT_INODE_LOCKED 1
 _ACEOF
 
-       fi
+
+fi
+
 
 
 
@@ -14453,20 +14833,27 @@ $as_echo_n "checking whether symbol d_obtain_alias is exported... " >&6; }
                $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null
        rc=$?
        if test $rc -ne 0; then
+
                export=0
                for file in fs/dcache.c; do
                        grep -q -E "EXPORT_SYMBOL.*(d_obtain_alias)" "$LINUX/$file" 2>/dev/null
                        rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
+                       if test $rc -eq 0; then
+
+                               export=1
+                               break;
+
+fi
+
                done
                if test $export -eq 0; then
+
                        { $as_echo "$as_me:$LINENO: result: no" >&5
 $as_echo "no" >&6; }
 
-               else
+
+else
+
                        { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 
@@ -14474,8 +14861,12 @@ cat >>confdefs.h <<\_ACEOF
 #define HAVE_D_OBTAIN_ALIAS 1
 _ACEOF
 
-               fi
-       else
+
+fi
+
+
+else
+
                { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 
@@ -14483,7 +14874,9 @@ cat >>confdefs.h <<\_ACEOF
 #define HAVE_D_OBTAIN_ALIAS 1
 _ACEOF
 
-       fi
+
+fi
+
 
 
 
@@ -14493,20 +14886,27 @@ $as_echo_n "checking whether symbol check_disk_size_change is exported... " >&6;
                $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null
        rc=$?
        if test $rc -ne 0; then
+
                export=0
                for file in fs/block_dev.c; do
                        grep -q -E "EXPORT_SYMBOL.*(check_disk_size_change)" "$LINUX/$file" 2>/dev/null
                        rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
+                       if test $rc -eq 0; then
+
+                               export=1
+                               break;
+
+fi
+
                done
                if test $export -eq 0; then
+
                        { $as_echo "$as_me:$LINENO: result: no" >&5
 $as_echo "no" >&6; }
 
-               else
+
+else
+
                        { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 
@@ -14514,8 +14914,12 @@ cat >>confdefs.h <<\_ACEOF
 #define HAVE_CHECK_DISK_SIZE_CHANGE 1
 _ACEOF
 
-               fi
-       else
+
+fi
+
+
+else
+
                { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 
@@ -14523,7 +14927,9 @@ cat >>confdefs.h <<\_ACEOF
 #define HAVE_CHECK_DISK_SIZE_CHANGE 1
 _ACEOF
 
-       fi
+
+fi
+
 
 
 
@@ -14533,20 +14939,27 @@ $as_echo_n "checking whether symbol truncate_setsize is exported... " >&6; }
                $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null
        rc=$?
        if test $rc -ne 0; then
+
                export=0
                for file in mm/truncate.c; do
                        grep -q -E "EXPORT_SYMBOL.*(truncate_setsize)" "$LINUX/$file" 2>/dev/null
                        rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
+                       if test $rc -eq 0; then
+
+                               export=1
+                               break;
+
+fi
+
                done
                if test $export -eq 0; then
+
                        { $as_echo "$as_me:$LINENO: result: no" >&5
 $as_echo "no" >&6; }
 
-               else
+
+else
+
                        { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 
@@ -14554,8 +14967,12 @@ cat >>confdefs.h <<\_ACEOF
 #define HAVE_TRUNCATE_SETSIZE 1
 _ACEOF
 
-               fi
-       else
+
+fi
+
+
+else
+
                { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 
@@ -14563,7 +14980,9 @@ cat >>confdefs.h <<\_ACEOF
 #define HAVE_TRUNCATE_SETSIZE 1
 _ACEOF
 
-       fi
+
+fi
+
 
 
 
@@ -14641,20 +15060,27 @@ $as_echo_n "checking whether symbol mount_nodev is exported... " >&6; }
                $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null
        rc=$?
        if test $rc -ne 0; then
+
                export=0
                for file in fs/super.c; do
                        grep -q -E "EXPORT_SYMBOL.*(mount_nodev)" "$LINUX/$file" 2>/dev/null
                        rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
+                       if test $rc -eq 0; then
+
+                               export=1
+                               break;
+
+fi
+
                done
                if test $export -eq 0; then
+
                        { $as_echo "$as_me:$LINENO: result: no" >&5
 $as_echo "no" >&6; }
 
-               else
+
+else
+
                        { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 
@@ -14662,8 +15088,12 @@ cat >>confdefs.h <<\_ACEOF
 #define HAVE_MOUNT_NODEV 1
 _ACEOF
 
-               fi
-       else
+
+fi
+
+
+else
+
                { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 
@@ -14671,24 +15101,237 @@ cat >>confdefs.h <<\_ACEOF
 #define HAVE_MOUNT_NODEV 1
 _ACEOF
 
-       fi
-
 
+fi
 
-       if test "$LINUX_OBJ" != "$LINUX"; then
-               KERNELMAKE_PARAMS="$KERNELMAKE_PARAMS O=$LINUX_OBJ"
-       fi
 
 
 
-                       KERNELCPPFLAGS="$KERNELCPPFLAGS $NO_UNUSED_BUT_SET_VARIABLE"
-       KERNELCPPFLAGS="$KERNELCPPFLAGS -DHAVE_SPL -D_KERNEL"
-       KERNELCPPFLAGS="$KERNELCPPFLAGS -DTEXT_DOMAIN=\\\"zfs-linux-kernel\\\""
+       { $as_echo "$as_me:$LINENO: checking whether super_block has s_bdi" >&5
+$as_echo_n "checking whether super_block has s_bdi... " >&6; }
+
+
+cat confdefs.h - <<_ACEOF >conftest.c
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+               #include <linux/fs.h>
+
+int
+main (void)
+{
+
+               struct super_block sb __attribute__ ((unused));
+               sb.s_bdi = NULL;
+
+  ;
+  return 0;
+}
+
+_ACEOF
+
+
+       rm -Rf build && mkdir -p build
+       echo "obj-m := conftest.o" >build/Makefile
+       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_BDI 1
+_ACEOF
+
+
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+
+
+fi
+
+       rm -Rf build
+
+
+
+
+       { $as_echo "$as_me:$LINENO: checking whether symbol bdi_setup_and_register is exported" >&5
+$as_echo_n "checking whether symbol bdi_setup_and_register is exported... " >&6; }
+       grep -q -E '[[:space:]]bdi_setup_and_register[[:space:]]' \
+               $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null
+       rc=$?
+       if test $rc -ne 0; then
+
+               export=0
+               for file in mm/backing-dev.c; do
+                       grep -q -E "EXPORT_SYMBOL.*(bdi_setup_and_register)" "$LINUX/$file" 2>/dev/null
+                       rc=$?
+                       if test $rc -eq 0; then
+
+                               export=1
+                               break;
+
+fi
+
+               done
+               if test $export -eq 0; then
+
+                       { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+
+else
+
+                       { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_BDI_SETUP_AND_REGISTER 1
+_ACEOF
+
+
+fi
+
+
+else
+
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_BDI_SETUP_AND_REGISTER 1
+_ACEOF
+
+
+fi
+
+
+
+
+       { $as_echo "$as_me:$LINENO: checking whether set_nlink() is available" >&5
+$as_echo_n "checking whether set_nlink() is available... " >&6; }
+
+
+cat confdefs.h - <<_ACEOF >conftest.c
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+               #include <linux/fs.h>
+
+int
+main (void)
+{
+
+               struct inode node;
+               unsigned int link = 0;
+               (void) set_nlink(&node, link);
+
+  ;
+  return 0;
+}
+
+_ACEOF
+
+
+       rm -Rf build && mkdir -p build
+       echo "obj-m := conftest.o" >build/Makefile
+       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_SET_NLINK 1
+_ACEOF
+
+
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+
+
+fi
+
+       rm -Rf build
+
+
+
+
+       if test "$LINUX_OBJ" != "$LINUX"; then
+
+               KERNELMAKE_PARAMS="$KERNELMAKE_PARAMS O=$LINUX_OBJ"
+
+fi
+
+
+
+
+                       KERNELCPPFLAGS="$KERNELCPPFLAGS $NO_UNUSED_BUT_SET_VARIABLE"
+       KERNELCPPFLAGS="$KERNELCPPFLAGS -DHAVE_SPL -D_KERNEL"
+       KERNELCPPFLAGS="$KERNELCPPFLAGS -DTEXT_DOMAIN=\\\"zfs-linux-kernel\\\""
 
 
  ;;
                user)
 
+
+# Check whether --with-udevdir was given.
+if test "${with_udevdir+set}" = set; then
+  withval=$with_udevdir; udevdir=$withval
+else
+  udevdir='${exec_prefix}/lib/udev'
+fi
+
+
+
+# Check whether --with-udevruledir was given.
+if test "${with_udevruledir+set}" = set; then
+  withval=$with_udevruledir; udevruledir=$withval
+else
+  udevruledir='${udevdir}/rules.d'
+fi
+
+
+
+
+
+
        { $as_echo "$as_me:$LINENO: checking for target asm dir" >&5
 $as_echo_n "checking for target asm dir... " >&6; }
        TARGET_ARCH=`echo ${target_cpu} | sed -e s/i.86/i386/`
        { $as_echo "$as_me:$LINENO: checking kernel source directory" >&5
 $as_echo_n "checking kernel source directory... " >&6; }
        if test -z "$kernelsrc"; 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
+
+elif test -e "/lib/modules/$(uname -r)/build"; then
+
                        headersdir="/lib/modules/$(uname -r)/build"
                        sourcelink=$(readlink -f "$headersdir")
-               else
+
+else
+
                        sourcelink=$(ls -1d /usr/src/kernels/* \
-                                    /usr/src/linux-* \
+                                    /usr/src/linux-* \
                                     2>/dev/null | grep -v obj | tail -1)
-               fi
+
+fi
+
 
                if test -n "$sourcelink" && test -e ${sourcelink}; then
+
                        kernelsrc=`readlink -f ${sourcelink}`
-               else
+
+else
+
                        { $as_echo "$as_me:$LINENO: result: Not found" >&5
 $as_echo "Not found" >&6; }
                        { { $as_echo "$as_me:$LINENO: error:
@@ -16262,30 +16916,53 @@ $as_echo "$as_me: error:
        *** is installed then try again.  If that fails you can specify the
        *** location of the kernel source with the '--with-linux=PATH' option." >&2;}
    { (exit 1); exit 1; }; }
-               fi
-       else
+
+fi
+
+
+else
+
                if test "$kernelsrc" = "NONE"; then
+
                        kernsrcver=NONE
-               fi
-       fi
+
+fi
+
+
+fi
+
 
        { $as_echo "$as_me:$LINENO: result: $kernelsrc" >&5
 $as_echo "$kernelsrc" >&6; }
        { $as_echo "$as_me:$LINENO: checking kernel build directory" >&5
 $as_echo_n "checking kernel build directory... " >&6; }
        if test -z "$kernelbuild"; 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
+
+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
+
+elif test -d ${kernelsrc}-obj/${target_cpu}/default; then
+
                        kernelbuild=${kernelsrc}-obj/${target_cpu}/default
-               elif test -d `dirname ${kernelsrc}`/build-${target_cpu}; then
+
+elif test -d `dirname ${kernelsrc}`/build-${target_cpu}; then
+
                        kernelbuild=`dirname ${kernelsrc}`/build-${target_cpu}
-               else
+
+else
+
                        kernelbuild=${kernelsrc}
-               fi
-       fi
+
+fi
+
+
+fi
+
        { $as_echo "$as_me:$LINENO: result: $kernelbuild" >&5
 $as_echo "$kernelbuild" >&6; }
 
@@ -16295,33 +16972,48 @@ $as_echo_n "checking kernel source version... " >&6; }
        utsrelease2=$kernelbuild/include/linux/utsrelease.h
        utsrelease3=$kernelbuild/include/generated/utsrelease.h
        if test -r $utsrelease1 && fgrep -q UTS_RELEASE $utsrelease1; then
+
                utsrelease=linux/version.h
-       elif test -r $utsrelease2 && fgrep -q UTS_RELEASE $utsrelease2; then
+
+elif test -r $utsrelease2 && fgrep -q UTS_RELEASE $utsrelease2; then
+
                utsrelease=linux/utsrelease.h
-       elif test -r $utsrelease3 && fgrep -q UTS_RELEASE $utsrelease3; then
+
+elif test -r $utsrelease3 && fgrep -q UTS_RELEASE $utsrelease3; then
+
                utsrelease=generated/utsrelease.h
-       fi
+
+fi
+
 
        if test "$utsrelease"; then
+
                kernsrcver=`(echo "#include <$utsrelease>";
                             echo "kernsrcver=UTS_RELEASE") |
                             cpp -I $kernelbuild/include |
                             grep "^kernsrcver=" | cut -d \" -f 2`
 
                if test -z "$kernsrcver"; then
+
                        { $as_echo "$as_me:$LINENO: result: Not found" >&5
 $as_echo "Not found" >&6; }
                        { { $as_echo "$as_me:$LINENO: error: *** Cannot determine kernel version." >&5
 $as_echo "$as_me: error: *** Cannot determine kernel version." >&2;}
    { (exit 1); exit 1; }; }
-               fi
-       else
+
+fi
+
+
+else
+
                { $as_echo "$as_me:$LINENO: result: Not found" >&5
 $as_echo "Not found" >&6; }
                { { $as_echo "$as_me:$LINENO: error: *** Cannot find UTS_RELEASE definition." >&5
 $as_echo "$as_me: error: *** Cannot find UTS_RELEASE definition." >&2;}
    { (exit 1); exit 1; }; }
-       fi
+
+fi
+
 
        { $as_echo "$as_me:$LINENO: result: $kernsrcver" >&5
 $as_echo "$kernsrcver" >&6; }
@@ -16339,13 +17031,20 @@ $as_echo "$kernsrcver" >&6; }
        { $as_echo "$as_me:$LINENO: checking kernel file name for module symbols" >&5
 $as_echo_n "checking kernel file name for module symbols... " >&6; }
        if test -f "$modpost"; then
+
                if grep -q Modules.symvers $modpost; then
+
                        LINUX_SYMBOLS=Modules.symvers
-               else
+
+else
+
                        LINUX_SYMBOLS=Module.symvers
-               fi
 
-               if ! test -f "$LINUX_OBJ/$LINUX_SYMBOLS"; then
+fi
+
+
+               if test ! -f "$LINUX_OBJ/$LINUX_SYMBOLS"; then
+
                        { { $as_echo "$as_me:$LINENO: error:
        *** Please make sure the kernel devel package for your distribution
        *** is installed.  If your building with a custom kernel make sure the
@@ -16357,10 +17056,16 @@ $as_echo "$as_me: error:
        *** kernel is configured, built, and the '--with-linux=PATH' configure
        *** option refers to the location of the kernel source." >&2;}
    { (exit 1); exit 1; }; }
-               fi
-       else
+
+fi
+
+
+else
+
                LINUX_SYMBOLS=NONE
-       fi
+
+fi
+
        { $as_echo "$as_me:$LINENO: result: $LINUX_SYMBOLS" >&5
 $as_echo "$LINUX_SYMBOLS" >&6; }
 
        { $as_echo "$as_me:$LINENO: checking spl source directory" >&5
 $as_echo_n "checking spl source directory... " >&6; }
        if test -z "$splsrc"; then
+
                sourcelink=`ls -1d /usr/src/spl-*/${LINUX_VERSION} \
                            2>/dev/null | tail -1`
 
                if test -z "$sourcelink" || test ! -e $sourcelink; then
+
                        sourcelink=../spl
-               fi
+
+fi
+
 
                if test -e $sourcelink; then
+
                        splsrc=`readlink -f ${sourcelink}`
-               else
+
+else
+
                        { $as_echo "$as_me:$LINENO: result: Not found" >&5
 $as_echo "Not found" >&6; }
                        { { $as_echo "$as_me:$LINENO: error:
@@ -16406,21 +17118,33 @@ $as_echo "$as_me: error:
        *** is installed then try again.  If that fails you can specify the
        *** location of the spl source with the '--with-spl=PATH' option." >&2;}
    { (exit 1); exit 1; }; }
-               fi
-       else
+
+fi
+
+
+else
+
                if test "$splsrc" = "NONE"; then
+
                        splbuild=NONE
                        splsrcver=NONE
-               fi
-       fi
+
+fi
+
+
+fi
+
 
        { $as_echo "$as_me:$LINENO: result: $splsrc" >&5
 $as_echo "$splsrc" >&6; }
        { $as_echo "$as_me:$LINENO: checking spl build directory" >&5
 $as_echo_n "checking spl build directory... " >&6; }
        if test -z "$splbuild"; then
+
                splbuild=${splsrc}
-       fi
+
+fi
+
        { $as_echo "$as_me:$LINENO: result: $splbuild" >&5
 $as_echo "$splbuild" >&6; }
 
@@ -16429,23 +17153,29 @@ $as_echo_n "checking spl source version... " >&6; }
        if test -r $splbuild/spl_config.h &&
                fgrep -q SPL_META_VERSION $splbuild/spl_config.h; then
 
+
                splsrcver=`(echo "#include <spl_config.h>";
                            echo "splsrcver=SPL_META_VERSION") |
                            cpp -I $splbuild |
                            grep "^splsrcver=" | cut -d \" -f 2`
-       fi
+
+fi
+
 
        if test -z "$splsrcver"; then
+
                { $as_echo "$as_me:$LINENO: result: Not found" >&5
 $as_echo "Not found" >&6; }
                { { $as_echo "$as_me:$LINENO: error:
-               *** Cannot determine the version of the spl source.
-               *** Please prepare the spl source before running this script" >&5
+       *** Cannot determine the version of the spl source.
+       *** Please prepare the spl source before running this script" >&5
 $as_echo "$as_me: error:
-               *** Cannot determine the version of the spl source.
-               *** Please prepare the spl source before running this script" >&2;}
+       *** Cannot determine the version of the spl source.
+       *** Please prepare the spl source before running this script" >&2;}
    { (exit 1); exit 1; }; }
-       fi
+
+fi
+
 
        { $as_echo "$as_me:$LINENO: result: $splsrcver" >&5
 $as_echo "$splsrcver" >&6; }
@@ -16462,16 +17192,27 @@ $as_echo "$splsrcver" >&6; }
        { $as_echo "$as_me:$LINENO: checking spl file name for module symbols" >&5
 $as_echo_n "checking spl file name for module symbols... " >&6; }
        if test -r $SPL_OBJ/Module.symvers; then
+
                SPL_SYMBOLS=Module.symvers
-       elif test -r $SPL_OBJ/Modules.symvers; then
+
+elif test -r $SPL_OBJ/Modules.symvers; then
+
                SPL_SYMBOLS=Modules.symvers
-       elif test -r $SPL_OBJ/module/Module.symvers; then
+
+elif test -r $SPL_OBJ/module/Module.symvers; then
+
                SPL_SYMBOLS=Module.symvers
-       elif test -r $SPL_OBJ/module/Modules.symvers; then
+
+elif test -r $SPL_OBJ/module/Modules.symvers; then
+
                SPL_SYMBOLS=Modules.symvers
-       else
+
+else
+
                SPL_SYMBOLS=$LINUX_SYMBOLS
-       fi
+
+fi
+
 
        { $as_echo "$as_me:$LINENO: result: $SPL_SYMBOLS" >&5
 $as_echo "$SPL_SYMBOLS" >&6; }
@@ -16492,9 +17233,7 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
-               #ifndef AUTOCONF_INCLUDED
-               #include <linux/config.h>
-               #endif
+               #include <linux/module.h>
 
 int
 main (void)
@@ -16528,11 +17267,11 @@ _ACEOF
                { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
                { { $as_echo "$as_me:$LINENO: error:
-               *** Kernel built with CONFIG_PREEMPT which is not supported.
-               ** You must rebuild your kernel without this option." >&5
+       *** Kernel built with CONFIG_PREEMPT which is not supported.
+       *** You must rebuild your kernel without this option." >&5
 $as_echo "$as_me: error:
-               *** Kernel built with CONFIG_PREEMPT which is not supported.
-               ** You must rebuild your kernel without this option." >&2;}
+       *** Kernel built with CONFIG_PREEMPT which is not supported.
+       *** You must rebuild your kernel without this option." >&2;}
    { (exit 1); exit 1; }; }
 
 else
@@ -16553,6 +17292,7 @@ fi
 
 
        if test "$ZFS_META_LICENSE" = CDDL; then
+
                { $as_echo "$as_me:$LINENO: checking whether Linux was built with CONFIG_DEBUG_LOCK_ALLOC" >&5
 $as_echo_n "checking whether Linux was built with CONFIG_DEBUG_LOCK_ALLOC... " >&6; }
 
@@ -16565,9 +17305,7 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
-               #ifndef AUTOCONF_INCLUDED
-               #include <linux/config.h>
-               #endif
+               #include <linux/module.h>
 
 int
 main (void)
@@ -16601,13 +17339,13 @@ _ACEOF
                { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
                { { $as_echo "$as_me:$LINENO: error:
-               *** Kernel built with CONFIG_DEBUG_LOCK_ALLOC which is
-               *** incompatible with the CDDL license.  You must rebuild
-               *** your kernel without this option." >&5
+       *** Kernel built with CONFIG_DEBUG_LOCK_ALLOC which is
+       *** incompatible with the CDDL license.  You must rebuild
+       *** your kernel without this option." >&5
 $as_echo "$as_me: error:
-               *** Kernel built with CONFIG_DEBUG_LOCK_ALLOC which is
-               *** incompatible with the CDDL license.  You must rebuild
-               *** your kernel without this option." >&2;}
+       *** Kernel built with CONFIG_DEBUG_LOCK_ALLOC which is
+       *** incompatible with the CDDL license.  You must rebuild
+       *** your kernel without this option." >&2;}
    { (exit 1); exit 1; }; }
 
 else
 
 
 
-       fi
+
+fi
+
 
        if test "$ZFS_META_LICENSE" = GPL; then
 
+
 cat >>confdefs.h <<\_ACEOF
 #define HAVE_GPL_ONLY_SYMBOLS 1
 _ACEOF
 
-       fi
+
+fi
+
 
 
        { $as_echo "$as_me:$LINENO: checking block device operation prototypes" >&5
 $as_echo_n "checking block device operation prototypes... " >&6; }
+       tmp_flags="$EXTRA_KCFLAGS"
+       EXTRA_KCFLAGS="-Wno-unused-but-set-variable"
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -16716,6 +17461,7 @@ fi
        rm -Rf build
 
 
+       EXTRA_KCFLAGS="$tmp_flags"
 
        { $as_echo "$as_me:$LINENO: checking whether kernel defines fmode_t" >&5
 $as_echo_n "checking whether kernel defines fmode_t... " >&6; }
@@ -16854,20 +17600,27 @@ $as_echo_n "checking whether symbol blkdev_get_by_path is exported... " >&6; }
                $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null
        rc=$?
        if test $rc -ne 0; then
+
                export=0
                for file in fs/block_dev.c; do
                        grep -q -E "EXPORT_SYMBOL.*(blkdev_get_by_path)" "$LINUX/$file" 2>/dev/null
                        rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
+                       if test $rc -eq 0; then
+
+                               export=1
+                               break;
+
+fi
+
                done
                if test $export -eq 0; then
+
                        { $as_echo "$as_me:$LINENO: result: no" >&5
 $as_echo "no" >&6; }
 
-               else
+
+else
+
                        { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 
@@ -16875,8 +17628,12 @@ cat >>confdefs.h <<\_ACEOF
 #define HAVE_BLKDEV_GET_BY_PATH 1
 _ACEOF
 
-               fi
-       else
+
+fi
+
+
+else
+
                { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 
@@ -16884,7 +17641,9 @@ cat >>confdefs.h <<\_ACEOF
 #define HAVE_BLKDEV_GET_BY_PATH 1
 _ACEOF
 
-       fi
+
+fi
+
 
 
 
@@ -16894,20 +17653,27 @@ $as_echo_n "checking whether symbol open_bdev_exclusive is exported... " >&6; }
                $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null
        rc=$?
        if test $rc -ne 0; then
+
                export=0
                for file in fs/block_dev.c; do
                        grep -q -E "EXPORT_SYMBOL.*(open_bdev_exclusive)" "$LINUX/$file" 2>/dev/null
                        rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
+                       if test $rc -eq 0; then
+
+                               export=1
+                               break;
+
+fi
+
                done
                if test $export -eq 0; then
+
                        { $as_echo "$as_me:$LINENO: result: no" >&5
 $as_echo "no" >&6; }
 
-               else
+
+else
+
                        { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 
@@ -16915,8 +17681,12 @@ cat >>confdefs.h <<\_ACEOF
 #define HAVE_OPEN_BDEV_EXCLUSIVE 1
 _ACEOF
 
-               fi
-       else
+
+fi
+
+
+else
+
                { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 
@@ -16924,7 +17694,9 @@ cat >>confdefs.h <<\_ACEOF
 #define HAVE_OPEN_BDEV_EXCLUSIVE 1
 _ACEOF
 
-       fi
+
+fi
+
 
 
 
@@ -16996,6 +17768,8 @@ fi
 
        { $as_echo "$as_me:$LINENO: checking whether bdev_logical_block_size() is available" >&5
 $as_echo_n "checking whether bdev_logical_block_size() is available... " >&6; }
+       tmp_flags="$EXTRA_KCFLAGS"
+       EXTRA_KCFLAGS="-Wno-unused-but-set-variable"
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -17058,6 +17832,7 @@ fi
        rm -Rf build
 
 
+       EXTRA_KCFLAGS="$tmp_flags"
 
 
        { $as_echo "$as_me:$LINENO: checking whether bio_empty_barrier() is defined" >&5
@@ -17598,6 +18373,8 @@ fi
 
        { $as_echo "$as_me:$LINENO: checking whether blk_end_request() is available" >&5
 $as_echo_n "checking whether blk_end_request() is available... " >&6; }
+       tmp_flags="$EXTRA_KCFLAGS"
+       EXTRA_KCFLAGS="-Wno-unused-but-set-variable"
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
        rm -Rf build
 
 
+       EXTRA_KCFLAGS="$tmp_flags"
 
 
        { $as_echo "$as_me:$LINENO: checking whether blk_fetch_request() is available" >&5
 $as_echo_n "checking whether blk_fetch_request() is available... " >&6; }
+       tmp_flags="$EXTRA_KCFLAGS"
+       EXTRA_KCFLAGS="-Wno-unused-but-set-variable"
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
        rm -Rf build
 
 
+       EXTRA_KCFLAGS="$tmp_flags"
 
 
        { $as_echo "$as_me:$LINENO: checking whether blk_requeue_request() is available" >&5
 $as_echo_n "checking whether blk_requeue_request() is available... " >&6; }
+       tmp_flags="$EXTRA_KCFLAGS"
+       EXTRA_KCFLAGS="-Wno-unused-but-set-variable"
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
        rm -Rf build
 
 
+       EXTRA_KCFLAGS="$tmp_flags"
 
 
        { $as_echo "$as_me:$LINENO: checking whether blk_rq_bytes() is available" >&5
 $as_echo_n "checking whether blk_rq_bytes() is available... " >&6; }
+       tmp_flags="$EXTRA_KCFLAGS"
+       EXTRA_KCFLAGS="-Wno-unused-but-set-variable"
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
        rm -Rf build
 
 
+       EXTRA_KCFLAGS="$tmp_flags"
 
 
        { $as_echo "$as_me:$LINENO: checking whether blk_rq_pos() is available" >&5
 $as_echo_n "checking whether blk_rq_pos() is available... " >&6; }
+       tmp_flags="$EXTRA_KCFLAGS"
+       EXTRA_KCFLAGS="-Wno-unused-but-set-variable"
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
        rm -Rf build
 
 
+       EXTRA_KCFLAGS="$tmp_flags"
 
 
        { $as_echo "$as_me:$LINENO: checking whether blk_rq_sectors() is available" >&5
 $as_echo_n "checking whether blk_rq_sectors() is available... " >&6; }
+       tmp_flags="$EXTRA_KCFLAGS"
+       EXTRA_KCFLAGS="-Wno-unused-but-set-variable"
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
        rm -Rf build
 
 
+       EXTRA_KCFLAGS="$tmp_flags"
 
 
        { $as_echo "$as_me:$LINENO: checking whether get_disk_ro() is available" >&5
 $as_echo_n "checking whether get_disk_ro() is available... " >&6; }
+       tmp_flags="$EXTRA_KCFLAGS"
+       EXTRA_KCFLAGS="-Wno-unused-but-set-variable"
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
        rm -Rf build
 
 
+       EXTRA_KCFLAGS="$tmp_flags"
 
 
        { $as_echo "$as_me:$LINENO: checking whether rq_is_sync() is available" >&5
 $as_echo_n "checking whether rq_is_sync() is available... " >&6; }
+       tmp_flags="$EXTRA_KCFLAGS"
+       EXTRA_KCFLAGS="-Wno-unused-but-set-variable"
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
        rm -Rf build
 
 
+       EXTRA_KCFLAGS="$tmp_flags"
 
 
        { $as_echo "$as_me:$LINENO: checking whether rq_for_each_segment() is available" >&5
 $as_echo_n "checking whether rq_for_each_segment() is available... " >&6; }
+       tmp_flags="$EXTRA_KCFLAGS"
+       EXTRA_KCFLAGS="-Wno-unused-but-set-variable"
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -18327,6 +19128,7 @@ fi
        rm -Rf build
 
 
+       EXTRA_KCFLAGS="$tmp_flags"
 
        { $as_echo "$as_me:$LINENO: checking whether super_block uses const struct xattr_hander" >&5
 $as_echo_n "checking whether super_block uses const struct xattr_hander... " >&6; }
@@ -18545,8 +19347,9 @@ fi
 
 
 
-       { $as_echo "$as_me:$LINENO: checking whether fops->fsync() wants 2 args" >&5
-$as_echo_n "checking whether fops->fsync() wants 2 args... " >&6; }
+       { $as_echo "$as_me:$LINENO: checking whether fops->fsync() wants" >&5
+$as_echo_n "checking whether fops->fsync() wants... " >&6; }
+
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -18563,7 +19366,7 @@ int
 main (void)
 {
 
-               int (*fsync) (struct file *, int datasync) = NULL;
+               int (*fsync) (struct file *, struct dentry *, int) = NULL;
                struct file_operations fops __attribute__ ((unused));
 
                fops.fsync = fsync;
@@ -18589,11 +19392,11 @@ _ACEOF
   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
 
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
+               { $as_echo "$as_me:$LINENO: result: dentry" >&5
+$as_echo "dentry" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_2ARGS_FSYNC 1
+#define HAVE_FSYNC_WITH_DENTRY 1
 _ACEOF
 
 
@@ -18601,8 +19404,6 @@ else
   $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-               { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
 
 
 
@@ -18613,8 +19414,6 @@ fi
 
 
 
-       { $as_echo "$as_me:$LINENO: checking whether sops->evict_inode() exists" >&5
-$as_echo_n "checking whether sops->evict_inode() exists... " >&6; }
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -18631,10 +19430,10 @@ int
 main (void)
 {
 
-               void (*evict_inode) (struct inode *) = NULL;
-               struct super_operations sops __attribute__ ((unused));
+               int (*fsync) (struct file *, int) = NULL;
+               struct file_operations fops __attribute__ ((unused));
 
-               sops.evict_inode = evict_inode;
+               fops.fsync = fsync;
 
   ;
   return 0;
@@ -18657,11 +19456,11 @@ _ACEOF
   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
 
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
+               { $as_echo "$as_me:$LINENO: result: no dentry" >&5
+$as_echo "no dentry" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_EVICT_INODE 1
+#define HAVE_FSYNC_WITHOUT_DENTRY 1
 _ACEOF
 
 
@@ -18669,8 +19468,6 @@ else
   $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-               { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
 
 
 
 
 
 
-       { $as_echo "$as_me:$LINENO: checking whether symbol insert_inode_locked is exported" >&5
-$as_echo_n "checking whether symbol insert_inode_locked is exported... " >&6; }
-       grep -q -E '[[:space:]]insert_inode_locked[[:space:]]' \
-               $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null
-       rc=$?
-       if test $rc -ne 0; then
-               export=0
-               for file in fs/inode.c; do
-                       grep -q -E "EXPORT_SYMBOL.*(insert_inode_locked)" "$LINUX/$file" 2>/dev/null
-                       rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
-               done
-               if test $export -eq 0; then
-                       { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
 
-               else
-                       { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_INSERT_INODE_LOCKED 1
+cat confdefs.h - <<_ACEOF >conftest.c
+/* confdefs.h.  */
 _ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
 
-               fi
-       else
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_INSERT_INODE_LOCKED 1
-_ACEOF
 
-       fi
+               #include <linux/fs.h>
 
+int
+main (void)
+{
 
+               int (*fsync) (struct file *, loff_t, loff_t, int) = NULL;
+               struct file_operations fops __attribute__ ((unused));
 
-       { $as_echo "$as_me:$LINENO: checking whether symbol d_obtain_alias is exported" >&5
-$as_echo_n "checking whether symbol d_obtain_alias is exported... " >&6; }
-       grep -q -E '[[:space:]]d_obtain_alias[[:space:]]' \
-               $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null
-       rc=$?
-       if test $rc -ne 0; then
-               export=0
-               for file in fs/dcache.c; do
-                       grep -q -E "EXPORT_SYMBOL.*(d_obtain_alias)" "$LINUX/$file" 2>/dev/null
-                       rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
-               done
-               if test $export -eq 0; then
-                       { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
+               fops.fsync = fsync;
 
-               else
-                       { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
+  ;
+  return 0;
+}
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_D_OBTAIN_ALIAS 1
 _ACEOF
 
-               fi
-       else
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_D_OBTAIN_ALIAS 1
+       rm -Rf build && mkdir -p build
+       echo "obj-m := conftest.o" >build/Makefile
+       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+               { $as_echo "$as_me:$LINENO: result: range" >&5
+$as_echo "range" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_FSYNC_RANGE 1
 _ACEOF
 
-       fi
+
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+
+
+fi
+
+       rm -Rf build
+
+
+
+
+
+       { $as_echo "$as_me:$LINENO: checking whether sops->evict_inode() exists" >&5
+$as_echo_n "checking whether sops->evict_inode() exists... " >&6; }
+
+
+cat confdefs.h - <<_ACEOF >conftest.c
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+               #include <linux/fs.h>
+
+int
+main (void)
+{
+
+               void (*evict_inode) (struct inode *) = NULL;
+               struct super_operations sops __attribute__ ((unused)) = {
+                       .evict_inode = evict_inode,
+               };
+
+  ;
+  return 0;
+}
+
+_ACEOF
+
+
+       rm -Rf build && mkdir -p build
+       echo "obj-m := conftest.o" >build/Makefile
+       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_EVICT_INODE 1
+_ACEOF
+
+
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+
+
+fi
+
+       rm -Rf build
+
+
+
+
+       { $as_echo "$as_me:$LINENO: checking whether symbol insert_inode_locked is exported" >&5
+$as_echo_n "checking whether symbol insert_inode_locked is exported... " >&6; }
+       grep -q -E '[[:space:]]insert_inode_locked[[:space:]]' \
+               $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null
+       rc=$?
+       if test $rc -ne 0; then
+
+               export=0
+               for file in fs/inode.c; do
+                       grep -q -E "EXPORT_SYMBOL.*(insert_inode_locked)" "$LINUX/$file" 2>/dev/null
+                       rc=$?
+                       if test $rc -eq 0; then
+
+                               export=1
+                               break;
+
+fi
+
+               done
+               if test $export -eq 0; then
+
+                       { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+
+else
+
+                       { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_INSERT_INODE_LOCKED 1
+_ACEOF
+
+
+fi
+
+
+else
+
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_INSERT_INODE_LOCKED 1
+_ACEOF
+
+
+fi
+
+
+
+
+       { $as_echo "$as_me:$LINENO: checking whether symbol d_obtain_alias is exported" >&5
+$as_echo_n "checking whether symbol d_obtain_alias is exported... " >&6; }
+       grep -q -E '[[:space:]]d_obtain_alias[[:space:]]' \
+               $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null
+       rc=$?
+       if test $rc -ne 0; then
+
+               export=0
+               for file in fs/dcache.c; do
+                       grep -q -E "EXPORT_SYMBOL.*(d_obtain_alias)" "$LINUX/$file" 2>/dev/null
+                       rc=$?
+                       if test $rc -eq 0; then
+
+                               export=1
+                               break;
+
+fi
+
+               done
+               if test $export -eq 0; then
+
+                       { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+
+else
+
+                       { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_D_OBTAIN_ALIAS 1
+_ACEOF
+
+
+fi
+
+
+else
+
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_D_OBTAIN_ALIAS 1
+_ACEOF
+
+
+fi
+
 
 
 
@@ -18767,20 +19723,27 @@ $as_echo_n "checking whether symbol check_disk_size_change is exported... " >&6;
                $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null
        rc=$?
        if test $rc -ne 0; then
+
                export=0
                for file in fs/block_dev.c; do
                        grep -q -E "EXPORT_SYMBOL.*(check_disk_size_change)" "$LINUX/$file" 2>/dev/null
                        rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
+                       if test $rc -eq 0; then
+
+                               export=1
+                               break;
+
+fi
+
                done
                if test $export -eq 0; then
+
                        { $as_echo "$as_me:$LINENO: result: no" >&5
 $as_echo "no" >&6; }
 
-               else
+
+else
+
                        { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 
@@ -18788,8 +19751,12 @@ cat >>confdefs.h <<\_ACEOF
 #define HAVE_CHECK_DISK_SIZE_CHANGE 1
 _ACEOF
 
-               fi
-       else
+
+fi
+
+
+else
+
                { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 
@@ -18797,7 +19764,9 @@ cat >>confdefs.h <<\_ACEOF
 #define HAVE_CHECK_DISK_SIZE_CHANGE 1
 _ACEOF
 
-       fi
+
+fi
+
 
 
 
@@ -18807,20 +19776,27 @@ $as_echo_n "checking whether symbol truncate_setsize is exported... " >&6; }
                $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null
        rc=$?
        if test $rc -ne 0; then
+
                export=0
                for file in mm/truncate.c; do
                        grep -q -E "EXPORT_SYMBOL.*(truncate_setsize)" "$LINUX/$file" 2>/dev/null
                        rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
+                       if test $rc -eq 0; then
+
+                               export=1
+                               break;
+
+fi
+
                done
                if test $export -eq 0; then
+
                        { $as_echo "$as_me:$LINENO: result: no" >&5
 $as_echo "no" >&6; }
 
-               else
+
+else
+
                        { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 
@@ -18828,8 +19804,12 @@ cat >>confdefs.h <<\_ACEOF
 #define HAVE_TRUNCATE_SETSIZE 1
 _ACEOF
 
-               fi
-       else
+
+fi
+
+
+else
+
                { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 
@@ -18837,7 +19817,9 @@ cat >>confdefs.h <<\_ACEOF
 #define HAVE_TRUNCATE_SETSIZE 1
 _ACEOF
 
-       fi
+
+fi
+
 
 
 
@@ -18915,20 +19897,27 @@ $as_echo_n "checking whether symbol mount_nodev is exported... " >&6; }
                $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null
        rc=$?
        if test $rc -ne 0; then
+
                export=0
                for file in fs/super.c; do
                        grep -q -E "EXPORT_SYMBOL.*(mount_nodev)" "$LINUX/$file" 2>/dev/null
                        rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
+                       if test $rc -eq 0; then
+
+                               export=1
+                               break;
+
+fi
+
                done
                if test $export -eq 0; then
+
                        { $as_echo "$as_me:$LINENO: result: no" >&5
 $as_echo "no" >&6; }
 
-               else
+
+else
+
                        { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 
@@ -18936,8 +19925,12 @@ cat >>confdefs.h <<\_ACEOF
 #define HAVE_MOUNT_NODEV 1
 _ACEOF
 
-               fi
-       else
+
+fi
+
+
+else
+
                { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 
@@ -18945,13 +19938,204 @@ cat >>confdefs.h <<\_ACEOF
 #define HAVE_MOUNT_NODEV 1
 _ACEOF
 
-       fi
+
+fi
+
+
+
+
+       { $as_echo "$as_me:$LINENO: checking whether super_block has s_bdi" >&5
+$as_echo_n "checking whether super_block has s_bdi... " >&6; }
+
+
+cat confdefs.h - <<_ACEOF >conftest.c
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+               #include <linux/fs.h>
+
+int
+main (void)
+{
+
+               struct super_block sb __attribute__ ((unused));
+               sb.s_bdi = NULL;
+
+  ;
+  return 0;
+}
+
+_ACEOF
+
+
+       rm -Rf build && mkdir -p build
+       echo "obj-m := conftest.o" >build/Makefile
+       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_BDI 1
+_ACEOF
+
+
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+
+
+fi
+
+       rm -Rf build
+
+
+
+
+       { $as_echo "$as_me:$LINENO: checking whether symbol bdi_setup_and_register is exported" >&5
+$as_echo_n "checking whether symbol bdi_setup_and_register is exported... " >&6; }
+       grep -q -E '[[:space:]]bdi_setup_and_register[[:space:]]' \
+               $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null
+       rc=$?
+       if test $rc -ne 0; then
+
+               export=0
+               for file in mm/backing-dev.c; do
+                       grep -q -E "EXPORT_SYMBOL.*(bdi_setup_and_register)" "$LINUX/$file" 2>/dev/null
+                       rc=$?
+                       if test $rc -eq 0; then
+
+                               export=1
+                               break;
+
+fi
+
+               done
+               if test $export -eq 0; then
+
+                       { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+
+else
+
+                       { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_BDI_SETUP_AND_REGISTER 1
+_ACEOF
+
+
+fi
+
+
+else
+
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_BDI_SETUP_AND_REGISTER 1
+_ACEOF
+
+
+fi
+
+
+
+
+       { $as_echo "$as_me:$LINENO: checking whether set_nlink() is available" >&5
+$as_echo_n "checking whether set_nlink() is available... " >&6; }
+
+
+cat confdefs.h - <<_ACEOF >conftest.c
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+               #include <linux/fs.h>
+
+int
+main (void)
+{
+
+               struct inode node;
+               unsigned int link = 0;
+               (void) set_nlink(&node, link);
+
+  ;
+  return 0;
+}
+
+_ACEOF
+
+
+       rm -Rf build && mkdir -p build
+       echo "obj-m := conftest.o" >build/Makefile
+       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_SET_NLINK 1
+_ACEOF
+
+
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+
+
+fi
+
+       rm -Rf build
+
 
 
 
        if test "$LINUX_OBJ" != "$LINUX"; then
+
                KERNELMAKE_PARAMS="$KERNELMAKE_PARAMS O=$LINUX_OBJ"
-       fi
+
+fi
+
 
 
 
@@ -18963,6 +20147,28 @@ _ACEOF
 
 
 
+
+# Check whether --with-udevdir was given.
+if test "${with_udevdir+set}" = set; then
+  withval=$with_udevdir; udevdir=$withval
+else
+  udevdir='${exec_prefix}/lib/udev'
+fi
+
+
+
+# Check whether --with-udevruledir was given.
+if test "${with_udevruledir+set}" = set; then
+  withval=$with_udevruledir; udevruledir=$withval
+else
+  udevruledir='${udevdir}/rules.d'
+fi
+
+
+
+
+
+
        { $as_echo "$as_me:$LINENO: checking for target asm dir" >&5
 $as_echo_n "checking for target asm dir... " >&6; }
        TARGET_ARCH=`echo ${target_cpu} | sed -e s/i.86/i386/`
@@ -20555,7 +21761,7 @@ fi
 $as_echo "$enable_debug" >&6; }
 
 
-ac_config_files="$ac_config_files Makefile dracut/Makefile dracut/90zfs/Makefile etc/Makefile etc/udev/Makefile etc/udev/rules.d/Makefile etc/init.d/Makefile etc/zfs/Makefile man/Makefile man/man8/Makefile lib/Makefile lib/libspl/Makefile lib/libspl/asm-generic/Makefile lib/libspl/asm-i386/Makefile lib/libspl/asm-x86_64/Makefile lib/libspl/include/Makefile lib/libspl/include/ia32/Makefile lib/libspl/include/ia32/sys/Makefile lib/libspl/include/rpc/Makefile lib/libspl/include/sys/Makefile lib/libspl/include/sys/sysevent/Makefile lib/libspl/include/sys/dktp/Makefile lib/libspl/include/util/Makefile lib/libavl/Makefile lib/libefi/Makefile lib/libnvpair/Makefile lib/libunicode/Makefile lib/libuutil/Makefile lib/libzpool/Makefile lib/libzfs/Makefile lib/libshare/Makefile cmd/Makefile cmd/zdb/Makefile cmd/zfs/Makefile cmd/zinject/Makefile cmd/zpool/Makefile cmd/ztest/Makefile cmd/zpios/Makefile cmd/mount_zfs/Makefile cmd/zpool_layout/Makefile cmd/zvol_id/Makefile cmd/zpool_id/Makefile cmd/sas_switch_id/Makefile module/Makefile module/avl/Makefile module/nvpair/Makefile module/unicode/Makefile module/zcommon/Makefile module/zfs/Makefile module/zpios/Makefile include/Makefile include/linux/Makefile include/sys/Makefile include/sys/fs/Makefile include/sys/fm/Makefile include/sys/fm/fs/Makefile scripts/Makefile scripts/zpios-profile/Makefile scripts/zpios-test/Makefile scripts/zpool-config/Makefile scripts/zpool-layout/Makefile scripts/common.sh zfs.spec zfs-modules.spec zfs-script-config.sh"
+ac_config_files="$ac_config_files Makefile dracut/Makefile dracut/90zfs/Makefile udev/Makefile udev/rules.d/Makefile etc/Makefile etc/init.d/Makefile etc/zfs/Makefile man/Makefile man/man8/Makefile lib/Makefile lib/libspl/Makefile lib/libspl/asm-generic/Makefile lib/libspl/asm-i386/Makefile lib/libspl/asm-x86_64/Makefile lib/libspl/include/Makefile lib/libspl/include/ia32/Makefile lib/libspl/include/ia32/sys/Makefile lib/libspl/include/rpc/Makefile lib/libspl/include/sys/Makefile lib/libspl/include/sys/sysevent/Makefile lib/libspl/include/sys/dktp/Makefile lib/libspl/include/util/Makefile lib/libavl/Makefile lib/libefi/Makefile lib/libnvpair/Makefile lib/libunicode/Makefile lib/libuutil/Makefile lib/libzpool/Makefile lib/libzfs/Makefile lib/libshare/Makefile cmd/Makefile cmd/zdb/Makefile cmd/zfs/Makefile cmd/zinject/Makefile cmd/zpool/Makefile cmd/ztest/Makefile cmd/zpios/Makefile cmd/mount_zfs/Makefile cmd/zpool_layout/Makefile cmd/zvol_id/Makefile cmd/zpool_id/Makefile cmd/sas_switch_id/Makefile module/Makefile module/avl/Makefile module/nvpair/Makefile module/unicode/Makefile module/zcommon/Makefile module/zfs/Makefile module/zpios/Makefile include/Makefile include/linux/Makefile include/sys/Makefile include/sys/fs/Makefile include/sys/fm/Makefile include/sys/fm/fs/Makefile scripts/Makefile scripts/zpios-profile/Makefile scripts/zpios-test/Makefile scripts/zpool-config/Makefile scripts/zpool-layout/Makefile scripts/common.sh zfs.spec zfs-modules.spec PKGBUILD-zfs PKGBUILD-zfs-modules zfs-script-config.sh"
 
 
 cat >confcache <<\_ACEOF
@@ -21474,9 +22680,9 @@ do
     "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
     "dracut/Makefile") CONFIG_FILES="$CONFIG_FILES dracut/Makefile" ;;
     "dracut/90zfs/Makefile") CONFIG_FILES="$CONFIG_FILES dracut/90zfs/Makefile" ;;
+    "udev/Makefile") CONFIG_FILES="$CONFIG_FILES udev/Makefile" ;;
+    "udev/rules.d/Makefile") CONFIG_FILES="$CONFIG_FILES udev/rules.d/Makefile" ;;
     "etc/Makefile") CONFIG_FILES="$CONFIG_FILES etc/Makefile" ;;
-    "etc/udev/Makefile") CONFIG_FILES="$CONFIG_FILES etc/udev/Makefile" ;;
-    "etc/udev/rules.d/Makefile") CONFIG_FILES="$CONFIG_FILES etc/udev/rules.d/Makefile" ;;
     "etc/init.d/Makefile") CONFIG_FILES="$CONFIG_FILES etc/init.d/Makefile" ;;
     "etc/zfs/Makefile") CONFIG_FILES="$CONFIG_FILES etc/zfs/Makefile" ;;
     "man/Makefile") CONFIG_FILES="$CONFIG_FILES man/Makefile" ;;
@@ -21535,6 +22741,8 @@ do
     "scripts/common.sh") CONFIG_FILES="$CONFIG_FILES scripts/common.sh" ;;
     "zfs.spec") CONFIG_FILES="$CONFIG_FILES zfs.spec" ;;
     "zfs-modules.spec") CONFIG_FILES="$CONFIG_FILES zfs-modules.spec" ;;
+    "PKGBUILD-zfs") CONFIG_FILES="$CONFIG_FILES PKGBUILD-zfs" ;;
+    "PKGBUILD-zfs-modules") CONFIG_FILES="$CONFIG_FILES PKGBUILD-zfs-modules" ;;
     "zfs-script-config.sh") CONFIG_FILES="$CONFIG_FILES zfs-script-config.sh" ;;
 
   *) { { $as_echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5