Add configure test for pagevec_lru_add_file
authorSimon Wilkinson <sxw@inf.ed.ac.uk>
Wed, 30 Sep 2009 09:44:51 +0000 (11:44 +0200)
committerDerrick Brashear <shadow|account-1000005@unknown>
Wed, 30 Sep 2009 17:38:23 +0000 (10:38 -0700)
pagevec_lru_add_file isn't available on all Linux kernels.
Fallback to using pagevec_lru_add where necessary.

Reviewed-on: http://gerrit.openafs.org/558
Tested-by: Marc Dionne <marc.c.dionne@gmail.com>
Reviewed-by: Marc Dionne <marc.c.dionne@gmail.com>
Tested-by: Derrick Brashear <shadow@dementia.org>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

acinclude.m4
src/afs/LINUX/osi_vnodeops.c
src/cf/linux-test4.m4

index 6d60abc..03a9854 100644 (file)
@@ -890,6 +890,7 @@ case $AFS_SYSNAME in *_linux* | *_umlinux*)
                  LINUX_HAVE_BDI_INIT
                  LINUX_KMEM_CACHE_INIT
                  LINUX_HAVE_GRAB_CACHE_PAGE_WRITE_BEGIN
+                LINUX_HAVE_PAGEVEC_LRU_ADD_FILE
                  LINUX_STRUCT_TASK_HAS_CRED
                 LINUX_STRUCT_PROC_DIR_ENTRY_HAS_OWNER
                 LINUX_HAVE_KMEM_CACHE_T
index 5e092a8..d58e9dd 100644 (file)
@@ -50,7 +50,7 @@
 #define pageoff(pp) pp->offset
 #endif
 
-#ifndef __pagevec_lru_add_file
+#ifndef HAVE_PAGEVEC_LRU_ADD_FILE
 #define __pagevec_lru_add_file __pagevec_lru_add
 #endif
 
index afc2442..306587d 100644 (file)
@@ -1185,6 +1185,19 @@ AC_DEFUN([LINUX_HAVE_GRAB_CACHE_PAGE_WRITE_BEGIN], [
     AC_DEFINE([HAVE_GRAB_CACHE_PAGE_WRITE_BEGIN], 1, [define if your kernel has grab_cache_page_write_begin()])
   fi])
 
+AC_DEFUN([LINUX_HAVE_PAGEVEC_LRU_ADD_FILE], [
+  AC_MSG_CHECKING([for linux __pagevec_lru_add_file()])
+  AC_CACHE_VAL([ac_cv_linux_pagevec_add_file], [
+    AC_TRY_KBUILD(
+[#include <linux/pagevec.h>],
+[__pagevec_lru_add_file(NULL);],
+      ac_cv_linux_pagevec_add_file=yes,
+      ac_cv_linux_pagevec_add_file=no)])
+  AC_MSG_RESULT($ac_cv_linux_pagevec_add_file)
+  if test "x$ac_cv_linux_pagevec_add_file" = "xyes"; then
+    AC_DEFINE([HAVE_PAGEVEC_LRU_ADD_FILE], 1, [define if your kernel has __pagevec_lru_add_file()])
+  fi])
+
 AC_DEFUN([LINUX_STRUCT_TASK_HAS_CRED], [
   AC_MSG_CHECKING([if struct task has cred])
   AC_CACHE_VAL([ac_cv_linux_struct_task_has_cred], [