]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
Linux 3.6: kmap_atomic API change
authorMarc Dionne <marc.c.dionne@gmail.com>
Tue, 14 Aug 2012 20:34:42 +0000 (16:34 -0400)
committerDerrick Brashear <shadow@your-file-system.com>
Sat, 29 Sep 2012 13:40:16 +0000 (06:40 -0700)
kmap_atomic no longer requires a KM_TYPE argument.  Test for this
and adjust the affected code.

Reviewed-on: http://gerrit.openafs.org/7981
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>
(cherry picked from commit 049c485b4a39ba510035788b4959d839ef668c55)

Change-Id: Iac8be7901da4b277864b1b6cc987cf5087992789
Reviewed-on: http://gerrit.openafs.org/8078
Reviewed-by: Derrick Brashear <shadow@your-file-system.com>
Reviewed-by: Chas Williams - CONTRACTOR <chas@cmf.nrl.navy.mil>
Reviewed-by: Ken Dreyer <ktdreyer@ktdreyer.com>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
acinclude.m4
src/afs/afs_bypasscache.c
src/cf/linux-test4.m4

index f092c9e2e37ea9a35dfe77d7d8c1f7cb439fc496..bf81d3ec2b896059657b701d5006af3e49835b00 100644 (file)
@@ -960,6 +960,7 @@ case $AFS_SYSNAME in *_linux* | *_umlinux*)
                 LINUX_IOP_MKDIR_TAKES_UMODE_T
                 LINUX_IOP_CREATE_TAKES_UMODE_T
                 LINUX_EXPORT_OP_ENCODE_FH_TAKES_INODES
+                LINUX_KMAP_ATOMIC_TAKES_NO_KM_TYPE
 
                 dnl If we are guaranteed that keyrings will work - that is
                 dnl  a) The kernel has keyrings enabled
index 3fafb713df4608b5d6df710c5c70b59e73d66575..4dca01cf7a47a525fe891fa0af343498e56a81be 100644 (file)
@@ -325,13 +325,21 @@ afs_bypass_copy_page(bypass_page_t pp, int pageoff, struct iovec *rxiov,
        dolen = auio->uio_iov[curiov].iov_len - pageoff;
 
 #if !defined(UKERNEL)
+# if defined(KMAP_ATOMIC_TAKES_NO_KM_TYPE)
+    address = kmap_atomic(pp);
+# else
     address = kmap_atomic(pp, KM_USER0);
+# endif
 #else
     address = pp;
 #endif
     memcpy(address + pageoff, (char *)(rxiov[iovno].iov_base) + iovoff, dolen);
 #if !defined(UKERNEL)
+# if defined(KMAP_ATOMIC_TAKES_NO_KM_TYPE)
+    kunmap_atomic(address);
+# else
     kunmap_atomic(address, KM_USER0);
+# endif
 #endif
 }
 
index f13e97d6a6077c258688a5aba3f85c5ec4ac001e..7db805fb4f0f7ee1cc98149fedf27348869abc3b 100644 (file)
@@ -675,3 +675,15 @@ AC_DEFUN([LINUX_EXPORT_OP_ENCODE_FH_TAKES_INODES], [
                        [define if encode_fh export op takes inode arguments],
                        [-Werror])
 ])
+
+
+AC_DEFUN([LINUX_KMAP_ATOMIC_TAKES_NO_KM_TYPE], [
+  AC_CHECK_LINUX_BUILD([whether kmap_atomic takes no km_type argument],
+                       [ac_cv_linux_kma_atomic_takes_no_km_type],
+                       [#include <linux/highmem.h>],
+                       [struct page *p = NULL;
+                       kmap_atomic(p);],
+                       [KMAP_ATOMIC_TAKES_NO_KM_TYPE],
+                       [define if kmap_atomic takes no km_type argument],
+                       [-Werror])
+])