Thinking about it, this is probably a better patch.  There's only one
implementation of vop_access, so inline it into linvfs_permission.

- Remove VOP_ACCESS
- Remove vop_access
- Inline xfs_access into linvfs_permission

Index: fs/xfs/xfs_vnodeops.c
===================================================================
RCS file: /var/cvs/linux-2.6/fs/xfs/xfs_vnodeops.c,v
retrieving revision 1.2
diff -u -p -r1.2 xfs_vnodeops.c
--- fs/xfs/xfs_vnodeops.c       12 Aug 2003 19:11:19 -0000      1.2
+++ fs/xfs/xfs_vnodeops.c       16 Aug 2003 22:34:57 -0000
@@ -928,30 +928,6 @@ xfs_setattr(


/*
- * xfs_access
- * Null conversion from vnode mode bits to inode mode bits, as in efs.
- */
-STATIC int
-xfs_access(
-       bhv_desc_t      *bdp,
-       int             mode,
-       cred_t          *credp)
-{
-       xfs_inode_t     *ip;
-       int             error;
-
-       vn_trace_entry(BHV_TO_VNODE(bdp), __FUNCTION__,
-                                              (inst_t *)__return_address);
-
-       ip = XFS_BHVTOI(bdp);
-       xfs_ilock(ip, XFS_ILOCK_SHARED);
-       error = xfs_iaccess(ip, mode, credp);
-       xfs_iunlock(ip, XFS_ILOCK_SHARED);
-       return error;
-}
-
-
-/*
 * xfs_readlink
 *
 */
@@ -4731,7 +4707,6 @@ vnodeops_t xfs_vnodeops = {
       .vop_ioctl              = xfs_ioctl,
       .vop_getattr            = xfs_getattr,
       .vop_setattr            = xfs_setattr,
-       .vop_access             = xfs_access,
       .vop_lookup             = xfs_lookup,
       .vop_create             = xfs_create,
       .vop_remove             = xfs_remove,
Index: fs/xfs/linux/xfs_iops.c
===================================================================
RCS file: /var/cvs/linux-2.6/fs/xfs/linux/xfs_iops.c,v
retrieving revision 1.2
diff -u -p -r1.2 xfs_iops.c
--- fs/xfs/linux/xfs_iops.c     12 Aug 2003 19:11:20 -0000      1.2
+++ fs/xfs/linux/xfs_iops.c     16 Aug 2003 22:34:58 -0000
@@ -435,11 +435,18 @@ linvfs_permission(
       int             mode,
       struct nameidata *nd)
{
+       xfs_inode_t     *ip;
       vnode_t         *vp = LINVFS_GET_VP(inode);
       int             error;

+       vn_trace_entry(BHV_TO_VNODE(bdp), __FUNCTION__,
+                                              (inst_t *)__return_address);
+
       mode <<= 6;             /* convert from linux to vnode access bits */
-       VOP_ACCESS(vp, mode, NULL, error);
+       ip = XFS_BHVTOI(bdp);
+       xfs_ilock(ip, XFS_ILOCK_SHARED);
+       error = xfs_iaccess(ip, mode, NULL);
+       xfs_iunlock(ip, XFS_ILOCK_SHARED);
       return -error;
}
#else
Index: fs/xfs/linux/xfs_vnode.h
===================================================================
RCS file: /var/cvs/linux-2.6/fs/xfs/linux/xfs_vnode.h,v
retrieving revision 1.2
diff -u -p -r1.2 xfs_vnode.h
--- fs/xfs/linux/xfs_vnode.h    12 Aug 2003 19:11:20 -0000      1.2
+++ fs/xfs/linux/xfs_vnode.h    16 Aug 2003 22:34:58 -0000
@@ -173,7 +173,6 @@ typedef int (*vop_getattr_t)(bhv_desc_t
                               struct cred *);
typedef int    (*vop_setattr_t)(bhv_desc_t *, struct vattr *, int,
                               struct cred *);
-typedef int    (*vop_access_t)(bhv_desc_t *, int, struct cred *);
typedef int    (*vop_lookup_t)(bhv_desc_t *, vname_t *, vnode_t **,
                               int, vnode_t *, struct cred *);
typedef int    (*vop_create_t)(bhv_desc_t *, vname_t *, struct vattr *,
@@ -226,7 +225,6 @@ typedef struct vnodeops {
       vop_ioctl_t             vop_ioctl;
       vop_getattr_t           vop_getattr;
       vop_setattr_t           vop_setattr;
-       vop_access_t            vop_access;
       vop_lookup_t            vop_lookup;
       vop_create_t            vop_create;
       vop_remove_t            vop_remove;
@@ -276,8 +274,6 @@ typedef struct vnodeops {
       rv = _VOP_(vop_getattr, vp)((vp)->v_fbhv, vap, f, cr)
#define        VOP_SETATTR(vp, vap, f, cr, rv)                                 \
       rv = _VOP_(vop_setattr, vp)((vp)->v_fbhv, vap, f, cr)
-#define        VOP_ACCESS(vp, mode, cr, rv)                                    \
-       rv = _VOP_(vop_access, vp)((vp)->v_fbhv, mode, cr)
#define        VOP_LOOKUP(vp,d,vpp,f,rdir,cr,rv)                               \
       rv = _VOP_(vop_lookup, vp)((vp)->v_fbhv,d,vpp,f,rdir,cr)
#define VOP_CREATE(dvp,d,vap,vpp,cr,rv)                                        \