=================================================================== RCS file: /cvs/openafs/acinclude.m4,v retrieving revision 1.114.2.64 retrieving revision 1.114.2.65 diff -u -r1.114.2.64 -r1.114.2.65 --- openafs/acinclude.m4 2006/11/09 23:14:24 1.114.2.64 +++ openafs/acinclude.m4 2006/11/09 23:41:52 1.114.2.65 @@ -614,6 +614,7 @@ LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_SIGNAL_RLIM LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_EXIT_STATE LINUX_GET_SB_HAS_STRUCT_VFSMOUNT + LINUX_STATFS_TAKES_DENTRY LINUX_REFRIGERATOR LINUX_LINUX_KEYRING_SUPPORT LINUX_KEY_ALLOC_NEEDS_STRUCT_TASK @@ -784,6 +785,9 @@ fi if test "x$ac_cv_linux_get_sb_has_struct_vfsmount" = "xyes"; then AC_DEFINE(GET_SB_HAS_STRUCT_VFSMOUNT, 1, [define if your get_sb_nodev needs a struct vfsmount argument]) + fi + if test "x$ac_cv_linux_statfs_takes_dentry" = "xyes"; then + AC_DEFINE(STATFS_TAKES_DENTRY, 1, [define if your statfs takes a dentry argument]) fi if test "x$ac_cv_linux_func_a_writepage_takes_writeback_control" = "xyes" ; then AC_DEFINE(AOP_WRITEPAGE_TAKES_WRITEBACK_CONTROL, 1, [define if your aops.writepage takes a struct writeback_control argument]) =================================================================== RCS file: /cvs/openafs/src/afs/LINUX/osi_vfsops.c,v retrieving revision 1.29.2.19 retrieving revision 1.29.2.20 diff -u -r1.29.2.19 -r1.29.2.20 --- openafs/src/afs/LINUX/osi_vfsops.c 2006/11/09 22:54:53 1.29.2.19 +++ openafs/src/afs/LINUX/osi_vfsops.c 2006/11/09 23:41:56 1.29.2.20 @@ -16,7 +16,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/LINUX/osi_vfsops.c,v 1.29.2.19 2006/11/09 22:54:53 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/LINUX/osi_vfsops.c,v 1.29.2.20 2006/11/09 23:41:56 shadow Exp $"); #define __NO_VERSION__ /* don't define kernel_version in module.h */ #include <linux/module.h> /* early to avoid printf->printk mapping */ @@ -64,11 +64,12 @@ * dev, covered, s_rd_only, s_dirt, and s_type will be set by read_super. */ #if defined(AFS_LINUX26_ENV) -static struct super_block * #ifdef GET_SB_HAS_STRUCT_VFSMOUNT +int afs_get_sb(struct file_system_type *fs_type, int flags, const char *dev_name, void *data, struct vfsmount *mnt) #else +static struct superblock * afs_get_sb(struct file_system_type *fs_type, int flags, const char *dev_name, void *data) #endif @@ -384,7 +385,11 @@ */ #if defined(AFS_LINUX26_ENV) int +#if defined(STATFS_TAKES_DENTRY) +afs_statfs(struct dentry *dentry, struct kstatfs *statp) +#else afs_statfs(struct super_block *sbp, struct kstatfs *statp) +#endif #elif defined(AFS_LINUX24_ENV) int afs_statfs(struct super_block *sbp, struct statfs *statp) @@ -408,7 +413,11 @@ AFS_STATCNT(afs_statfs); statp->f_type = 0; /* Can we get a real type sometime? */ +#if defined(STATFS_TAKES_DENTRY) + statp->f_bsize = dentry->d_sb->s_blocksize; +#else statp->f_bsize = sbp->s_blocksize; +#endif statp->f_blocks = statp->f_bfree = statp->f_bavail = statp->f_files = statp->f_ffree = 9000000; statp->f_fsid.val[0] = AFS_VFSMAGIC; =================================================================== RCS file: /cvs/openafs/src/cf/linux-test4.m4,v retrieving revision 1.20.2.18 retrieving revision 1.20.2.19 diff -u -r1.20.2.18 -r1.20.2.19 --- openafs/src/cf/linux-test4.m4 2006/11/09 23:14:30 1.20.2.18 +++ openafs/src/cf/linux-test4.m4 2006/11/09 23:41:57 1.20.2.19 @@ -622,6 +622,19 @@ ac_cv_linux_get_sb_has_struct_vfsmount=no)]) AC_MSG_RESULT($ac_cv_linux_get_sb_has_struct_vfsmount)]) +AC_DEFUN([LINUX_STATFS_TAKES_DENTRY], [ + AC_MSG_CHECKING([for dentry in statfs]) + AC_CACHE_VAL([ac_cv_linux_statfs_takes_dentry], [ + AC_TRY_KBUILD( +[#include <linux/fs.h> +#include <linux/statfs.h>], +[ +extern int vfs_statfs(struct dentry *, struct kstatfs *); +], + ac_cv_linux_statfs_takes_dentry=yes, + ac_cv_linux_statfs_takes_dentry=no)]) + AC_MSG_RESULT($ac_cv_linux_statfs_takes_dentry)]) + AC_DEFUN([LINUX_LINUX_KEYRING_SUPPORT], [ AC_MSG_CHECKING([for linux kernel keyring support]) AC_CACHE_VAL([ac_cv_linux_keyring_support], [