From f6d21b8a6940a0a61e4706060090053e1895e945 Mon Sep 17 00:00:00 2001 From: Derrick Brashear Date: Wed, 10 Jul 2002 21:41:04 +0000 Subject: [PATCH] STABLE12-linux-kernel-detect-gfp-mask-in-struct-address-space-20020624 based on report that new redhat kernels need this (cherry picked from commit 19ffb82266bebfbcd529a85b43765b95355195f9) --- acinclude.m4 | 4 ++++ src/afs/afs_vcache.c | 3 +++ src/cf/linux-test2.m4 | 15 +++++++++++++++ 3 files changed, 22 insertions(+) diff --git a/acinclude.m4 b/acinclude.m4 index 0ac8cff64..171bbd30c 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -138,6 +138,7 @@ case $system in [LINUX_BUILD_VNODE_FROM_INODE(src/config,src/afs/LINUX)] ) LINUX_FS_STRUCT_ADDRESS_SPACE_HAS_PAGE_LOCK + LINUX_FS_STRUCT_ADDRESS_SPACE_HAS_GFP_MASK LINUX_FS_STRUCT_INODE_HAS_I_TRUNCATE_SEM LINUX_FS_STRUCT_INODE_HAS_I_DIRTY_DATA_BUFFERS LINUX_FS_STRUCT_INODE_HAS_I_DEVICES @@ -150,6 +151,9 @@ case $system in if test "x$ac_cv_linux_fs_struct_address_space_has_page_lock" = "xyes"; then AC_DEFINE(STRUCT_ADDRESS_SPACE_HAS_PAGE_LOCK) fi + if test "x$ac_cv_linux_fs_struct_address_space_has_gfp_mask" = "xyes"; then + AC_DEFINE(STRUCT_ADDRESS_SPACE_HAS_GFP_MASK) + fi if test "x$ac_cv_linux_fs_struct_inode_has_i_truncate_sem" = "xyes"; then AC_DEFINE(STRUCT_INODE_HAS_I_TRUNCATE_SEM) fi diff --git a/src/afs/afs_vcache.c b/src/afs/afs_vcache.c index 45c538ff9..4f51f26c3 100644 --- a/src/afs/afs_vcache.c +++ b/src/afs/afs_vcache.c @@ -977,6 +977,9 @@ struct vcache *afs_NewVCache(struct VenusFid *afid, struct server *serverp, INIT_LIST_HEAD(&ip->i_devices); #endif ip->i_data.host = (void*) ip; +#ifdef STRUCT_ADDRESS_SPACE_HAS_GFP_MASK + ip->i_data.gfp_mask = GFP_HIGHUSER; +#endif ip->i_mapping = &ip->i_data; #ifdef STRUCT_INODE_HAS_I_TRUNCATE_SEM init_rwsem(&ip->i_truncate_sem); diff --git a/src/cf/linux-test2.m4 b/src/cf/linux-test2.m4 index 22047a5a7..17b34bf6b 100644 --- a/src/cf/linux-test2.m4 +++ b/src/cf/linux-test2.m4 @@ -1,3 +1,18 @@ +AC_DEFUN(LINUX_FS_STRUCT_ADDRESS_SPACE_HAS_GFP_MASK, [ +AC_MSG_CHECKING(for gfp_mask in struct address_space) +save_CPPFLAGS="$CPPFLAGS" +CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -D__KERNEL__ $CPPFLAGS" +AC_CACHE_VAL(ac_cv_linux_fs_struct_address_space_has_gfp_mask, +[ +AC_TRY_COMPILE( +[#include ], +[struct address_space _a; +printf("%d\n", _a.gfp_mask);], +ac_cv_linux_fs_struct_address_space_has_gfp_mask=yes, +ac_cv_linux_fs_struct_address_space_has_gfp_mask=no)]) +AC_MSG_RESULT($ac_cv_linux_fs_struct_address_space_has_gfp_mask) +CPPFLAGS="$save_CPPFLAGS"]) + AC_DEFUN(LINUX_FS_STRUCT_INODE_HAS_I_BYTES, [ AC_MSG_CHECKING(for i_bytes in struct inode) save_CPPFLAGS="$CPPFLAGS" -- 2.39.5