summaryrefslogtreecommitdiffstats
path: root/config
diff options
context:
space:
mode:
authorBrian Behlendorf <[email protected]>2010-11-10 14:40:38 -0800
committerBrian Behlendorf <[email protected]>2010-11-10 16:59:49 -0800
commitf4af6bb783b0b7f2a6075cb1c74c225db8a157b2 (patch)
treee171b9ed0d0b876fd38e4d221b45297994a9ab87 /config
parentb04cffc9b03db08148f19bfbc92a53e5dc7b30d5 (diff)
Linux 2.6.36 compat, use REQ_FAILFAST_MASK
As of linux-2.6.36 the BIO_RW_FAILFAST and REQ_FAILFAST flags have been unified under the REQ_* names. These flags always had to be kept in-sync so this is a nice step forward, unfortunately it means we need to be careful to only use the new unified flags when the BIO_RW_* flags are not defined. Additional autoconf checks were added for this and if it is ever unclear which method to use no flags are set. This is safe but may result in longer delays before a disk is failed. Perferred interface for setting FAILFAST on a bio: 2.6.12-2.6.27: BIO_RW_FAILFAST 2.6.28-2.6.35: BIO_RW_FAILFAST_{DEV|TRANSPORT|DRIVER} 2.6.36-2.6.xx: REQ_FAILFAST_{DEV|TRANSPORT|DRIVER}
Diffstat (limited to 'config')
-rw-r--r--config/kernel-bio-failfast.m441
-rw-r--r--config/kernel.m42
2 files changed, 39 insertions, 4 deletions
diff --git a/config/kernel-bio-failfast.m4 b/config/kernel-bio-failfast.m4
index acc657562..c45175bdd 100644
--- a/config/kernel-bio-failfast.m4
+++ b/config/kernel-bio-failfast.m4
@@ -1,9 +1,26 @@
dnl #
-dnl # 2.6.28 API change
-dnl # Device, transport, and driver FAILFAST flags were added and
-dnl # the now legacy BIO_RW_FAILFAST flag was removed.
+dnl # Preferred interface for setting FAILFAST on a bio:
+dnl # 2.6.12-2.6.27: BIO_RW_FAILFAST
+dnl # 2.6.28-2.6.35: BIO_RW_FAILFAST_{DEV|TRANSPORT|DRIVER}
+dnl # 2.6.36-2.6.xx: REQ_FAILFAST_{DEV|TRANSPORT|DRIVER}
dnl #
AC_DEFUN([ZFS_AC_KERNEL_BIO_FAILFAST], [
+ AC_MSG_CHECKING([whether BIO_RW_FAILFAST is defined])
+ ZFS_LINUX_TRY_COMPILE([
+ #include <linux/bio.h>
+ ],[
+ int flags;
+ flags = (1 << BIO_RW_FAILFAST);
+ ],[
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_BIO_RW_FAILFAST, 1,
+ [BIO_RW_FAILFAST is defined])
+ ],[
+ AC_MSG_RESULT(no)
+ ])
+])
+
+AC_DEFUN([ZFS_AC_KERNEL_BIO_FAILFAST_DTD], [
AC_MSG_CHECKING([whether BIO_RW_FAILFAST_* are defined])
ZFS_LINUX_TRY_COMPILE([
#include <linux/bio.h>
@@ -14,9 +31,25 @@ AC_DEFUN([ZFS_AC_KERNEL_BIO_FAILFAST], [
(1 << BIO_RW_FAILFAST_DRIVER));
],[
AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_BIO_RW_FAILFAST, 1,
+ AC_DEFINE(HAVE_BIO_RW_FAILFAST_DTD, 1,
[BIO_RW_FAILFAST_* are defined])
],[
AC_MSG_RESULT(no)
])
])
+
+AC_DEFUN([ZFS_AC_KERNEL_REQ_FAILFAST_MASK], [
+ AC_MSG_CHECKING([whether REQ_FAILFAST_MASK is defined])
+ ZFS_LINUX_TRY_COMPILE([
+ #include <linux/bio.h>
+ ],[
+ int flags;
+ flags = REQ_FAILFAST_MASK;
+ ],[
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_BIO_REQ_FAILFAST_MASK, 1,
+ [REQ_FAILFAST_MASK is defined])
+ ],[
+ AC_MSG_RESULT(no)
+ ])
+])
diff --git a/config/kernel.m4 b/config/kernel.m4
index 517af39f7..c73284062 100644
--- a/config/kernel.m4
+++ b/config/kernel.m4
@@ -13,6 +13,8 @@ AC_DEFUN([ZFS_AC_CONFIG_KERNEL], [
ZFS_AC_KERNEL_BDEV_LOGICAL_BLOCK_SIZE
ZFS_AC_KERNEL_BIO_EMPTY_BARRIER
ZFS_AC_KERNEL_BIO_FAILFAST
+ ZFS_AC_KERNEL_BIO_FAILFAST_DTD
+ ZFS_AC_KERNEL_REQ_FAILFAST_MASK
ZFS_AC_KERNEL_BIO_END_IO_T_ARGS
ZFS_AC_KERNEL_BIO_RW_SYNCIO
ZFS_AC_KERNEL_BLK_END_REQUEST