From d5b40d99a9e8284c1ce8784a6b8fcc7fb7453532 Mon Sep 17 00:00:00 2001 From: Simon Wilkinson Date: Wed, 30 Sep 2009 11:44:51 +0200 Subject: [PATCH] Add configure test for pagevec_lru_add_file 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 Reviewed-by: Marc Dionne Tested-by: Derrick Brashear Reviewed-by: Derrick Brashear --- acinclude.m4 | 1 + src/afs/LINUX/osi_vnodeops.c | 2 +- src/cf/linux-test4.m4 | 13 +++++++++++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/acinclude.m4 b/acinclude.m4 index 6d60abcf3..03a98547a 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -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 diff --git a/src/afs/LINUX/osi_vnodeops.c b/src/afs/LINUX/osi_vnodeops.c index 5e092a82e..d58e9dd60 100644 --- a/src/afs/LINUX/osi_vnodeops.c +++ b/src/afs/LINUX/osi_vnodeops.c @@ -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 diff --git a/src/cf/linux-test4.m4 b/src/cf/linux-test4.m4 index afc244245..306587d42 100644 --- a/src/cf/linux-test4.m4 +++ b/src/cf/linux-test4.m4 @@ -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 ], +[__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], [ -- 2.39.5