]> granicus.if.org Git - zfs/commitdiff
Linux 2.6.36 compat, use REQ_FAILFAST_MASK and remove pre-2.6.36 support
authorTim Chase <tim@onlight.com>
Fri, 8 May 2015 20:49:56 +0000 (15:49 -0500)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Mon, 11 May 2015 22:07:00 +0000 (15:07 -0700)
Commit f4af6bb783b0b7f2a6075cb1c74c225db8a157b2 which added support
for REQ_FAILFAST_MASK but the new autoconf test didn't use the same
preprocessor macro name as the code did.

The effect is that FAILFAST mode has not been enabled for ZoL in any
post-2.6.35 kernel.

Retire the HAVE_BIO_RW_FAILFAST interface used in pre-2.6.28 kernels.

Raise an error condition if the FAILFAST interface can't be detected.

Signed-off-by: Tim Chase <tim@onlight.com
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #3386

config/kernel-bio-failfast.m4
config/kernel.m4
include/linux/blkdev_compat.h

index 6b9a5269eea12109ab0e3f9aa0ef995cc2b908d6..cfbec05238ceeb96ee2755d23e34031c9661ed26 100644 (file)
@@ -1,24 +1,8 @@
 dnl #
 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 #       >= 2.6.36: 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 __attribute__ ((unused));
-               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])
@@ -47,7 +31,7 @@ AC_DEFUN([ZFS_AC_KERNEL_REQ_FAILFAST_MASK], [
                flags = REQ_FAILFAST_MASK;
        ],[
                AC_MSG_RESULT(yes)
-               AC_DEFINE(HAVE_BIO_REQ_FAILFAST_MASK, 1,
+               AC_DEFINE(HAVE_REQ_FAILFAST_MASK, 1,
                          [REQ_FAILFAST_MASK is defined])
        ],[
                AC_MSG_RESULT(no)
index ce10707e495490fc41b0e2a50e575c1bc9696177..69470e128a4180908f5ad11f0c19705de250d370 100644 (file)
@@ -19,7 +19,6 @@ AC_DEFUN([ZFS_AC_CONFIG_KERNEL], [
        ZFS_AC_KERNEL_BDEV_LOGICAL_BLOCK_SIZE
        ZFS_AC_KERNEL_BDEV_PHYSICAL_BLOCK_SIZE
        ZFS_AC_KERNEL_BIO_BVEC_ITER
-       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
index 8566033fcfd22525254e0fd96ca864397df5a906..89e888c30025b763557eaa6b68661152b69f8f09 100644 (file)
@@ -347,26 +347,21 @@ bio_set_flags_failfast(struct block_device *bdev, int *flags)
 #endif /* BLOCK_EXT_MAJOR */
 #endif /* CONFIG_BUG */
 
-#ifdef HAVE_BIO_RW_FAILFAST_DTD
+#if defined(HAVE_BIO_RW_FAILFAST_DTD)
        /* BIO_RW_FAILFAST_* preferred interface from 2.6.28 - 2.6.35 */
        *flags |= (
            (1 << BIO_RW_FAILFAST_DEV) |
            (1 << BIO_RW_FAILFAST_TRANSPORT) |
            (1 << BIO_RW_FAILFAST_DRIVER));
-#else
-#ifdef HAVE_BIO_RW_FAILFAST
-       /* BIO_RW_FAILFAST preferred interface from 2.6.12 - 2.6.27 */
-       *flags |= (1 << BIO_RW_FAILFAST);
-#else
-#ifdef HAVE_REQ_FAILFAST_MASK
+#elif defined(HAVE_REQ_FAILFAST_MASK)
        /*
         * REQ_FAILFAST_* preferred interface from 2.6.36 - 2.6.xx,
         * the BIO_* and REQ_* flags were unified under REQ_* flags.
         */
        *flags |= REQ_FAILFAST_MASK;
-#endif /* HAVE_REQ_FAILFAST_MASK */
-#endif /* HAVE_BIO_RW_FAILFAST */
-#endif /* HAVE_BIO_RW_FAILFAST_DTD */
+#else
+#error "Undefined block IO FAILFAST interface."
+#endif
 }
 
 /*