]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
Linux 4.15: check for 2nd argument to pagevec_init
authorStephan Wiesand <stephan.wiesand@desy.de>
Fri, 22 Dec 2017 13:40:32 +0000 (14:40 +0100)
committerBenjamin Kaduk <kaduk@mit.edu>
Tue, 26 Dec 2017 07:07:05 +0000 (02:07 -0500)
Linux 4.15 removes the distinction between "hot" and "cold" cache
pages, and pagevec_init() no longer takes a "cold" flag as the
second argument. Add a configure test and use it in osi_vnodeops.c .

Reviewed-on: https://gerrit.openafs.org/12824
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
Tested-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
(cherry picked from commit fb1f14d8ee963678a9caad0538256c99c159c2c4)

Change-Id: Ib9e0751e4900d984a4197d18ee9ebb1bdc7bf331
Reviewed-on: https://gerrit.openafs.org/12829
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
acinclude.m4
src/afs/LINUX/osi_vnodeops.c
src/cf/linux-test4.m4

index 65067aea5872cf4cdc35b5f5f9cd21238114619f..f8edc67e02709a8ddc781ec359e05804c10b53ad 100644 (file)
@@ -1173,6 +1173,7 @@ case $AFS_SYSNAME in *_linux* | *_umlinux*)
                 LINUX_AOP_WRITEBACK_CONTROL
                 LINUX_FS_STRUCT_FOP_HAS_SPLICE
                 LINUX_KERNEL_POSIX_LOCK_FILE_WAIT_ARG
+                LINUX_KERNEL_PAGEVEC_INIT_COLD_ARG
                 LINUX_POSIX_TEST_LOCK_RETURNS_CONFLICT
                 LINUX_POSIX_TEST_LOCK_CONFLICT_ARG
                 LINUX_KERNEL_SOCK_CREATE
index de4929800207fef4077ff4306c4059164a5fcac6..5e2818bcaba2e1f872ee76ae06041dc551611105 100644 (file)
@@ -2235,7 +2235,11 @@ afs_linux_readpage_fastpath(struct file *fp, struct page *pp, int *codep)
        AFS_GLOCK();
        goto out;
     }
+#if defined(PAGEVEC_INIT_COLD_ARG)
     pagevec_init(&lrupv, 0);
+#else
+    pagevec_init(&lrupv);
+#endif
 
     code = afs_linux_read_cache(cacheFp, pp, tdc->f.chunk, &lrupv, NULL);
 
@@ -2395,7 +2399,11 @@ afs_linux_bypass_readpages(struct file *fp, struct address_space *mapping,
     ancr->offset = auio->uio_offset;
     ancr->length = auio->uio_resid;
 
+#if defined(PAGEVEC_INIT_COLD_ARG)
     pagevec_init(&lrupv, 0);
+#else
+    pagevec_init(&lrupv);
+#endif
 
     for(page_ix = 0; page_ix < num_pages; ++page_ix) {
 
@@ -2616,7 +2624,11 @@ afs_linux_readpages(struct file *fp, struct address_space *mapping,
     task = afs_pagecopy_init_task();
 
     tdc = NULL;
+#if defined(PAGEVEC_INIT_COLD_ARG)
     pagevec_init(&lrupv, 0);
+#else
+    pagevec_init(&lrupv);
+#endif
     for (page_idx = 0; page_idx < num_pages; page_idx++) {
        struct page *page = list_entry(page_list->prev, struct page, lru);
        list_del(&page->lru);
index 6746a107acf50fd1452f2f2ab93d8ea690e35e5c..cdac30fbaad9bdae9610d98febd979f26a84696d 100644 (file)
@@ -149,6 +149,16 @@ AC_DEFUN([LINUX_KERNEL_POSIX_LOCK_FILE_WAIT_ARG], [
                       [])
 ])
 
+AC_DEFUN([LINUX_KERNEL_PAGEVEC_INIT_COLD_ARG], [
+  AC_CHECK_LINUX_BUILD([for 2nd argument in pagevec_init found in pre-4.15 kernels],
+                      [ac_cv_linux_kernel_pagevec_init_cold_arg],
+                      [#include <linux/pagevec.h>],
+                      [pagevec_init(0,0);],
+                      [PAGEVEC_INIT_COLD_ARG],
+                      [define if your kernel uses 2 arguments for pagevec_init],
+                      [])
+])
+
 AC_DEFUN([LINUX_KERNEL_SOCK_CREATE], [
   AC_CHECK_LINUX_BUILD([for 5th argument in sock_create found in some SELinux kernels],
                       [ac_cv_linux_kernel_sock_create_v],