Linux 4.5: no highmem in symlink ops 64/12264/4
authorBenjamin Kaduk <kaduk@mit.edu>
Sun, 1 May 2016 23:04:45 +0000 (19:04 -0400)
committerBenjamin Kaduk <kaduk@mit.edu>
Fri, 10 Jun 2016 20:19:34 +0000 (16:19 -0400)
Symlink bodies in the pagecache should not be in highmem, as
upstream converted in commit 21fc61c73.

Change-Id: I1e4c3c51308df096cdfa4d5e7b16279e275e7f41
Reviewed-on: https://gerrit.openafs.org/12264
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Joe Gorse <jhgorse@gmail.com>
Tested-by: Joe Gorse <jhgorse@gmail.com>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>

acinclude.m4
src/afs/LINUX/osi_vnodeops.c

index 745f38e..f215319 100644 (file)
@@ -1091,6 +1091,9 @@ case $AFS_SYSNAME in *_linux* | *_umlinux*)
                                     [#include <linux/kernel.h>
                                      #include <linux/kthread.h>],
                                     [kthread_run(NULL, NULL, "test");])
+                AC_CHECK_LINUX_FUNC([inode_nohighmem],
+                                    [#include <linux/fs.h>],
+                                    [inode_nohighmem(NULL);])
 
                 dnl Consequences - things which get set as a result of the
                 dnl                above tests
index eb8a269..6a8e95b 100644 (file)
@@ -3149,6 +3149,9 @@ afs_fill_inode(struct inode *ip, struct vattr *vattr)
 
     } else if (S_ISLNK(ip->i_mode)) {
        ip->i_op = &afs_symlink_iops;
+#if defined(HAVE_LINUX_INODE_NOHIGHMEM)
+       inode_nohighmem(ip);
+#endif
 #if defined(USABLE_KERNEL_PAGE_SYMLINK_CACHE)
        ip->i_data.a_ops = &afs_symlink_aops;
        ip->i_mapping = &ip->i_data;