]> git.proxmox.com Git - mirror_zfs.git/blobdiff - config/kernel-blk-queue-flush.m4
kernel_fpu fixes
[mirror_zfs.git] / config / kernel-blk-queue-flush.m4
index bb74ea1c59459a34ebfc9947373f9f234502ed8d..1baab83a4e8cda01d14ea7e23d56f54986dd9230 100644 (file)
@@ -22,25 +22,64 @@ AC_DEFUN([ZFS_AC_KERNEL_BLK_QUEUE_FLUSH], [
                AC_MSG_RESULT(yes)
                AC_DEFINE(HAVE_BLK_QUEUE_FLUSH, 1,
                          [blk_queue_flush() is available])
+
+               AC_MSG_CHECKING([whether blk_queue_flush() is GPL-only])
+               ZFS_LINUX_TRY_COMPILE([
+                       #include <linux/module.h>
+                       #include <linux/blkdev.h>
+
+                       MODULE_LICENSE("$ZFS_META_LICENSE");
+               ],[
+                       struct request_queue *q = NULL;
+                       (void) blk_queue_flush(q, REQ_FLUSH);
+               ],[
+                       AC_MSG_RESULT(no)
+               ],[
+                       AC_MSG_RESULT(yes)
+                       AC_DEFINE(HAVE_BLK_QUEUE_FLUSH_GPL_ONLY, 1,
+                                 [blk_queue_flush() is GPL-only])
+               ])
        ],[
                AC_MSG_RESULT(no)
        ])
 
-       AC_MSG_CHECKING([whether blk_queue_flush() is GPL-only])
+       dnl #
+       dnl # 4.7 API change
+       dnl # Replace blk_queue_flush with blk_queue_write_cache
+       dnl #
+       AC_MSG_CHECKING([whether blk_queue_write_cache() exists])
        ZFS_LINUX_TRY_COMPILE([
-               #include <linux/module.h>
+               #include <linux/kernel.h>
                #include <linux/blkdev.h>
 
-               MODULE_LICENSE("$ZFS_META_LICENSE");
        ],[
                struct request_queue *q = NULL;
-               (void) blk_queue_flush(q, REQ_FLUSH);
-       ],[
-               AC_MSG_RESULT(no)
+               blk_queue_write_cache(q, true, true);
        ],[
                AC_MSG_RESULT(yes)
-               AC_DEFINE(HAVE_BLK_QUEUE_FLUSH_GPL_ONLY, 1,
-                         [blk_queue_flush() is GPL-only])
+               AC_DEFINE(HAVE_BLK_QUEUE_WRITE_CACHE, 1,
+                       [blk_queue_write_cache() exists])
+
+               AC_MSG_CHECKING([whether blk_queue_write_cache() is GPL-only])
+               ZFS_LINUX_TRY_COMPILE([
+                       #include <linux/kernel.h>
+                       #include <linux/module.h>
+                       #include <linux/blkdev.h>
+
+                       MODULE_LICENSE("$ZFS_META_LICENSE");
+               ],[
+                       struct request_queue *q = NULL;
+                       blk_queue_write_cache(q, true, true);
+               ],[
+                       AC_MSG_RESULT(no)
+               ],[
+                       AC_MSG_RESULT(yes)
+                       AC_DEFINE(HAVE_BLK_QUEUE_WRITE_CACHE_GPL_ONLY, 1,
+                                 [blk_queue_write_cache() is GPL-only])
+               ])
+       ],[
+               AC_MSG_RESULT(no)
        ])
+
        EXTRA_KCFLAGS="$tmp_flags"
 ])