summaryrefslogtreecommitdiffstats
path: root/config/kernel-kmap-atomic-args.m4
diff options
context:
space:
mode:
authorChunwei Chen <[email protected]>2015-05-11 22:22:56 +0800
committerBrian Behlendorf <[email protected]>2015-08-24 10:13:25 -0700
commit17888ae30d6111f1fe25087a256724ee9b1a0a84 (patch)
tree7567dc20bcdd9045a3fac1761b1ac90626fdfeba /config/kernel-kmap-atomic-args.m4
parentefc412b645cbb209e42983a9dcb9d3c9427c5495 (diff)
Add compatibility layer for {kmap,kunmap}_atomic
Starting from linux-2.6.37, {kmap,kunmap}_atomic takes 1 argument instead of 2. We use zfs_{kmap,kunmap}_atomic as wrappers and always take 2 argument, but ignore the 2nd for newer kernel. Signed-off-by: Chunwei Chen <[email protected]> Signed-off-by: Brian Behlendorf <[email protected]>
Diffstat (limited to 'config/kernel-kmap-atomic-args.m4')
-rw-r--r--config/kernel-kmap-atomic-args.m420
1 files changed, 20 insertions, 0 deletions
diff --git a/config/kernel-kmap-atomic-args.m4 b/config/kernel-kmap-atomic-args.m4
new file mode 100644
index 000000000..beb1692e7
--- /dev/null
+++ b/config/kernel-kmap-atomic-args.m4
@@ -0,0 +1,20 @@
+dnl #
+dnl # 2.6.37 API change
+dnl # kmap_atomic changed from assigning hard-coded named slot to using
+dnl # push/pop based dynamical allocation.
+dnl #
+AC_DEFUN([ZFS_AC_KERNEL_KMAP_ATOMIC_ARGS], [
+ AC_MSG_CHECKING([whether kmap_atomic wants 1 args])
+ ZFS_LINUX_TRY_COMPILE([
+ #include <linux/pagemap.h>
+ ],[
+ struct page page;
+ kmap_atomic(&page);
+ ],[
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_1ARG_KMAP_ATOMIC, 1,
+ [kmap_atomic wants 1 args])
+ ],[
+ AC_MSG_RESULT(no)
+ ])
+])