From a5e046eaacad20487188c9eef231554e1401d8c9 Mon Sep 17 00:00:00 2001 From: Tim Chase Date: Fri, 30 Dec 2016 16:03:59 -0600 Subject: 4.10 compat - BIO flag changes and others [bio] The req_op enum was changed to req_opf. Update the "Linux 4.8 API" autotools checks to use an int to determine whether the various REQ_OP values are defined. This should work properly on kernels >= 4.8. [bio] bio_set_op_attrs() is now an inline function and can't be detected with #ifdef. Add a configure check to determine whether bio_set_op_attrs() is defined. Move the local definition of it from vdev_disk.c to blkdev_compat.h for consistency with other related compability shims. [bio] The read/write flags and their modifiers, including WRITE_FLUSH, WRITE_FUA and WRITE_FLUSH_FUA have been removed from fs.h. Add the new bio_set_flush() compatibility wrapper to replace VDEV_WRITE_FLUSH_FUA and set the flags appropriately for each supported kernel version. [vfs] The generic_readlink() function has been made static. If .readlink in inode_operations is NULL, generic_readlink() is used. [zol typo] Completely unrelated to 4.10 compat, fix a typo in the check for REQ_OP_SECURE_ERASE so that the proper macro is defined: s/HAVE_REQ_OP_SECURE_DISCARD/HAVE_REQ_OP_SECURE_ERASE/ Reviewed-by: Brian Behlendorf Reviewed-by: Chunwei Chen Signed-off-by: Tim Chase Closes #5499 --- config/kernel-generic_readlink.m4 | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 config/kernel-generic_readlink.m4 (limited to 'config/kernel-generic_readlink.m4') diff --git a/config/kernel-generic_readlink.m4 b/config/kernel-generic_readlink.m4 new file mode 100644 index 000000000..914431de4 --- /dev/null +++ b/config/kernel-generic_readlink.m4 @@ -0,0 +1,22 @@ +dnl # +dnl # 4.10 API +dnl # +dnl # NULL inode_operations.readlink implies generic_readlink(), which +dnl # has been made static. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_GENERIC_READLINK_GLOBAL], [ + AC_MSG_CHECKING([whether generic_readlink is global]) + ZFS_LINUX_TRY_COMPILE([ + #include + ],[ + int i __attribute__ ((unused)); + + i = generic_readlink(NULL, NULL, 0); + ],[ + AC_MSG_RESULT([yes]) + AC_DEFINE(HAVE_GENERIC_READLINK, 1, + [generic_readlink is global]) + ],[ + AC_MSG_RESULT([no]) + ]) +]) -- cgit v1.2.3