X-Git-Url: https://git.camperquake.de/gitweb.cgi?a=blobdiff_plain;f=config%2Fkernel.m4;h=46c0255b0906998184d85e64699feded38c53530;hb=a1d9543a39942be56879ca9338078afc77c25cea;hp=d8a7b35839d5094d94286e93aede709a96f0f7f2;hpb=4e95cc99b029f519ec1d3fd86df2910e7cb0d156;p=zfs.git diff --git a/config/kernel.m4 b/config/kernel.m4 index d8a7b35..46c0255 100644 --- a/config/kernel.m4 +++ b/config/kernel.m4 @@ -7,6 +7,7 @@ AC_DEFUN([ZFS_AC_CONFIG_KERNEL], [ ZFS_AC_TEST_MODULE ZFS_AC_KERNEL_CONFIG ZFS_AC_KERNEL_BDEV_BLOCK_DEVICE_OPERATIONS + ZFS_AC_KERNEL_BLOCK_DEVICE_OPERATIONS_RELEASE_VOID ZFS_AC_KERNEL_TYPE_FMODE_T ZFS_AC_KERNEL_KOBJ_NAME_LEN ZFS_AC_KERNEL_3ARG_BLKDEV_GET @@ -77,6 +78,7 @@ AC_DEFUN([ZFS_AC_CONFIG_KERNEL], [ ZFS_AC_KERNEL_SET_NLINK ZFS_AC_KERNEL_ELEVATOR_CHANGE ZFS_AC_KERNEL_5ARG_SGET + ZFS_AC_KERNEL_LSEEK_EXECUTE AS_IF([test "$LINUX_OBJ" != "$LINUX"], [ KERNELMAKE_PARAMS="$KERNELMAKE_PARAMS O=$LINUX_OBJ" @@ -229,54 +231,6 @@ AC_DEFUN([ZFS_AC_KERNEL], [ ZFS_AC_MODULE_SYMVERS ]) -dnl # -dnl # Detect name used for the additional SPL Module.symvers file. If one -dnl # does not exist this is likely because the SPL has been configured -dnl # but not built. The '--with-spl-timeout' option can be passed -dnl # to pause here, waiting for the file to appear from a concurrently -dnl # building SPL package. If the file does not appear in time, a good -dnl # guess is made as to what this file will be named based on what it -dnl # is named in the kernel build products. This file will first be -dnl # used at link time so if the guess is wrong the build will fail -dnl # then. This unfortunately means the ZFS package does not contain a -dnl # reliable mechanism to detect symbols exported by the SPL at -dnl # configure time. -dnl # -AC_DEFUN([ZFS_AC_SPL_MODULE_SYMVERS], [ - AC_ARG_WITH([spl-timeout], - AS_HELP_STRING([--with-spl-timeout=SECS], - [Wait SECS for symvers file to appear @<:@default=0@:>@]), - [timeout="$withval"], [timeout=0]) - - AC_MSG_CHECKING([spl file name for module symbols]) - SPL_SYMBOLS=NONE - - while true; do - AS_IF([test -r $SPL_OBJ/Module.symvers], [ - SPL_SYMBOLS=Module.symvers - ], [test -r $SPL_OBJ/Modules.symvers], [ - SPL_SYMBOLS=Modules.symvers - ], [test -r $SPL_OBJ/module/Module.symvers], [ - SPL_SYMBOLS=Module.symvers - ], [test -r $SPL_OBJ/module/Modules.symvers], [ - SPL_SYMBOLS=Modules.symvers - ]) - - AS_IF([test $SPL_SYMBOLS != NONE -o $timeout -le 0], [ - break; - ], [ - sleep 1 - timeout=$((timeout-1)) - ]) - done - - AS_IF([test "$SPL_SYMBOLS" = NONE], [ - SPL_SYMBOLS=$LINUX_SYMBOLS - ]) - - AC_MSG_RESULT([$SPL_SYMBOLS]) - AC_SUBST(SPL_SYMBOLS) -]) dnl # dnl # Detect the SPL module to be built against @@ -292,6 +246,11 @@ AC_DEFUN([ZFS_AC_SPL], [ [Path to spl build objects]), [splbuild="$withval"]) + AC_ARG_WITH([spl-timeout], + AS_HELP_STRING([--with-spl-timeout=SECS], + [Wait SECS for SPL header and symver file @<:@default=0@:>@]), + [timeout="$withval"], [timeout=0]) + dnl # dnl # The existence of spl.release.in is used to identify a valid dnl # source directory. In order of preference: @@ -338,16 +297,30 @@ AC_DEFUN([ZFS_AC_SPL], [ dnl # directory are the same, however the objects may also reside dnl # is a subdirectory named after the kernel version. dnl # + dnl # This file is supposed to be available after DKMS finishes + dnl # building the SPL kernel module for the target kernel. The + dnl # '--with-spl-timeout' option can be passed to pause here, + dnl # waiting for the file to appear from a concurrently building + dnl # SPL package. + dnl # AC_MSG_CHECKING([spl build directory]) - AS_IF([test -z "$splbuild"], [ - AS_IF([ test -e "${splsrc}/${LINUX_VERSION}/spl_config.h" ], [ - splbuild="${splsrc}/${LINUX_VERSION}" - ], [ test -e "${splsrc}/spl_config.h" ], [ - splbuild="${splsrc}" + while true; do + AS_IF([test -z "$splbuild"], [ + AS_IF([ test -e "${splsrc}/${LINUX_VERSION}/spl_config.h" ], [ + splbuild="${splsrc}/${LINUX_VERSION}" + ], [ test -e "${splsrc}/spl_config.h" ], [ + splbuild="${splsrc}" + ], [ + splbuild="[Not found]" + ]) + ]) + AS_IF([test -e "$splbuild/spl_config.h" -o $timeout -le 0], [ + break; ], [ - splbuild="[Not found]" + sleep 1 + timeout=$((timeout-1)) ]) - ]) + done AC_MSG_RESULT([$splbuild]) AS_IF([ ! test -e "$splbuild/spl_config.h"], [ @@ -385,7 +358,47 @@ AC_DEFUN([ZFS_AC_SPL], [ AC_SUBST(SPL_OBJ) AC_SUBST(SPL_VERSION) - ZFS_AC_SPL_MODULE_SYMVERS + dnl # + dnl # Detect the name used for the SPL Module.symvers file. If one + dnl # does not exist this is likely because the SPL has been configured + dnl # but not built. The '--with-spl-timeout' option can be passed + dnl # to pause here, waiting for the file to appear from a concurrently + dnl # building SPL package. If the file does not appear in time, a good + dnl # guess is made as to what this file will be named based on what it + dnl # is named in the kernel build products. This file will first be + dnl # used at link time so if the guess is wrong the build will fail + dnl # then. This unfortunately means the ZFS package does not contain a + dnl # reliable mechanism to detect symbols exported by the SPL at + dnl # configure time. + dnl # + AC_MSG_CHECKING([spl file name for module symbols]) + SPL_SYMBOLS=NONE + + while true; do + AS_IF([test -r $SPL_OBJ/Module.symvers], [ + SPL_SYMBOLS=Module.symvers + ], [test -r $SPL_OBJ/Modules.symvers], [ + SPL_SYMBOLS=Modules.symvers + ], [test -r $SPL_OBJ/module/Module.symvers], [ + SPL_SYMBOLS=Module.symvers + ], [test -r $SPL_OBJ/module/Modules.symvers], [ + SPL_SYMBOLS=Modules.symvers + ]) + + AS_IF([test $SPL_SYMBOLS != NONE -o $timeout -le 0], [ + break; + ], [ + sleep 1 + timeout=$((timeout-1)) + ]) + done + + AS_IF([test "$SPL_SYMBOLS" = NONE], [ + SPL_SYMBOLS=$LINUX_SYMBOLS + ]) + + AC_MSG_RESULT([$SPL_SYMBOLS]) + AC_SUBST(SPL_SYMBOLS) ]) dnl #