XFS currently defines various fid types internally, including an fid_t which I will introduce kernel wide in the next patch. This patch kills the fid_t and xfs_fid2_t types inside xfs and uses xfs_fid_t consistantly. Signed-off-by: Christoph Hellwig <hch@xxxxxx> Index: linux-2.6/fs/xfs/linux-2.6/xfs_export.c =================================================================== --- linux-2.6.orig/fs/xfs/linux-2.6/xfs_export.c 2007-03-13 18:21:13.000000000 +0100 +++ linux-2.6/fs/xfs/linux-2.6/xfs_export.c 2007-03-13 18:21:55.000000000 +0100 @@ -48,8 +48,8 @@ xfs_fs_decode_fh( struct dentry *de), void *context) { - xfs_fid2_t ifid; - xfs_fid2_t pfid; + xfs_fid_t ifid; + xfs_fid_t pfid; void *parent = NULL; int is64 = 0; __u32 *p = fh; @@ -141,7 +141,7 @@ xfs_fs_get_dentry( bhv_vfs_t *vfsp = vfs_from_sb(sb); int error; - error = bhv_vfs_vget(vfsp, &vp, (fid_t *)data); + error = bhv_vfs_vget(vfsp, &vp, data); if (error || vp == NULL) return ERR_PTR(-ESTALE) ; Index: linux-2.6/fs/xfs/linux-2.6/xfs_vfs.c =================================================================== --- linux-2.6.orig/fs/xfs/linux-2.6/xfs_vfs.c 2007-03-13 18:21:13.000000000 +0100 +++ linux-2.6/fs/xfs/linux-2.6/xfs_vfs.c 2007-03-13 18:21:55.000000000 +0100 @@ -145,7 +145,7 @@ int vfs_vget( struct bhv_desc *bdp, struct bhv_vnode **vpp, - struct fid *fidp) + struct xfs_fid *fidp) { struct bhv_desc *next = bdp; Index: linux-2.6/fs/xfs/linux-2.6/xfs_vfs.h =================================================================== --- linux-2.6.orig/fs/xfs/linux-2.6/xfs_vfs.h 2007-03-13 18:21:13.000000000 +0100 +++ linux-2.6/fs/xfs/linux-2.6/xfs_vfs.h 2007-03-13 18:21:55.000000000 +0100 @@ -24,10 +24,10 @@ struct bhv_vfs; struct bhv_vnode; -struct fid; struct cred; struct seq_file; struct super_block; +struct xfs_fid; struct xfs_mount_args; typedef struct kstatfs bhv_statvfs_t; @@ -112,7 +112,8 @@ typedef int (*vfs_root_t)(bhv_desc_t *, typedef int (*vfs_statvfs_t)(bhv_desc_t *, bhv_statvfs_t *, struct bhv_vnode *); typedef int (*vfs_sync_t)(bhv_desc_t *, int, struct cred *); -typedef int (*vfs_vget_t)(bhv_desc_t *, struct bhv_vnode **, struct fid *); +typedef int (*vfs_vget_t)(bhv_desc_t *, struct bhv_vnode **, + struct xfs_fid *); typedef int (*vfs_dmapiops_t)(bhv_desc_t *, caddr_t); typedef int (*vfs_quotactl_t)(bhv_desc_t *, int, int, caddr_t); typedef void (*vfs_init_vnode_t)(bhv_desc_t *, @@ -183,7 +184,7 @@ extern int vfs_mntupdate(bhv_desc_t *, i extern int vfs_root(bhv_desc_t *, struct bhv_vnode **); extern int vfs_statvfs(bhv_desc_t *, bhv_statvfs_t *, struct bhv_vnode *); extern int vfs_sync(bhv_desc_t *, int, struct cred *); -extern int vfs_vget(bhv_desc_t *, struct bhv_vnode **, struct fid *); +extern int vfs_vget(bhv_desc_t *, struct bhv_vnode **, struct xfs_fid *); extern int vfs_dmapiops(bhv_desc_t *, caddr_t); extern int vfs_quotactl(bhv_desc_t *, int, int, caddr_t); extern void vfs_init_vnode(bhv_desc_t *, struct bhv_vnode *, bhv_desc_t *, int); Index: linux-2.6/fs/xfs/xfs_fs.h =================================================================== --- linux-2.6.orig/fs/xfs/xfs_fs.h 2007-03-13 18:21:13.000000000 +0100 +++ linux-2.6/fs/xfs/xfs_fs.h 2007-03-13 18:21:55.000000000 +0100 @@ -387,30 +387,13 @@ typedef struct xfs_fsop_attrmulti_handle */ typedef struct { __u32 val[2]; } xfs_fsid_t; /* file system id type */ - -#ifndef HAVE_FID -#define MAXFIDSZ 46 - -typedef struct fid { - __u16 fid_len; /* length of data in bytes */ - unsigned char fid_data[MAXFIDSZ]; /* data (fid_len worth) */ -} fid_t; -#endif - typedef struct xfs_fid { - __u16 xfs_fid_len; /* length of remainder */ - __u16 xfs_fid_pad; - __u32 xfs_fid_gen; /* generation number */ - __u64 xfs_fid_ino; /* 64 bits inode number */ + __u16 fid_len; /* length of remainder */ + __u16 fid_pad; + __u32 fid_gen; /* generation number */ + __u64 fid_ino; /* 64 bits inode number */ } xfs_fid_t; -typedef struct xfs_fid2 { - __u16 fid_len; /* length of remainder */ - __u16 fid_pad; /* padding, must be zero */ - __u32 fid_gen; /* generation number */ - __u64 fid_ino; /* inode number */ -} xfs_fid2_t; - typedef struct xfs_handle { union { __s64 align; /* force alignment of ha_fid */ @@ -420,9 +403,9 @@ typedef struct xfs_handle { } xfs_handle_t; #define ha_fsid ha_u._ha_fsid -#define XFS_HSIZE(handle) (((char *) &(handle).ha_fid.xfs_fid_pad \ +#define XFS_HSIZE(handle) (((char *) &(handle).ha_fid.fid_pad \ - (char *) &(handle)) \ - + (handle).ha_fid.xfs_fid_len) + + (handle).ha_fid.fid_len) /* * Flags for going down operation Index: linux-2.6/fs/xfs/xfs_vfsops.c =================================================================== --- linux-2.6.orig/fs/xfs/xfs_vfsops.c 2007-03-13 18:21:13.000000000 +0100 +++ linux-2.6/fs/xfs/xfs_vfsops.c 2007-03-13 18:21:55.000000000 +0100 @@ -1565,10 +1565,9 @@ STATIC int xfs_vget( bhv_desc_t *bdp, bhv_vnode_t **vpp, - fid_t *fidp) + xfs_fid_t *xfid) { xfs_mount_t *mp = XFS_BHVTOM(bdp); - xfs_fid_t *xfid = (struct xfs_fid *)fidp; xfs_inode_t *ip; int error; xfs_ino_t ino; @@ -1578,11 +1577,11 @@ xfs_vget( * Invalid. Since handles can be created in user space and passed in * via gethandle(), this is not cause for a panic. */ - if (xfid->xfs_fid_len != sizeof(*xfid) - sizeof(xfid->xfs_fid_len)) + if (xfid->fid_len != sizeof(*xfid) - sizeof(xfid->fid_len)) return XFS_ERROR(EINVAL); - ino = xfid->xfs_fid_ino; - igen = xfid->xfs_fid_gen; + ino = xfid->fid_ino; + igen = xfid->fid_gen; /* * NFS can sometimes send requests for ino 0. Fail them gracefully. Index: linux-2.6/fs/xfs/xfs_vnodeops.c =================================================================== --- linux-2.6.orig/fs/xfs/xfs_vnodeops.c 2007-03-13 18:21:13.000000000 +0100 +++ linux-2.6/fs/xfs/xfs_vnodeops.c 2007-03-13 18:21:55.000000000 +0100 @@ -3577,28 +3577,18 @@ std_return: goto std_return; } - -/* - * xfs_fid2 - * - * A fid routine that takes a pointer to a previously allocated - * fid structure (like xfs_fast_fid) but uses a 64 bit inode number. - */ STATIC int xfs_fid2( bhv_desc_t *bdp, - fid_t *fidp) + xfs_fid_t *xfid) { xfs_inode_t *ip; - xfs_fid2_t *xfid; vn_trace_entry(BHV_TO_VNODE(bdp), __FUNCTION__, (inst_t *)__return_address); - ASSERT(sizeof(fid_t) >= sizeof(xfs_fid2_t)); - xfid = (xfs_fid2_t *)fidp; ip = XFS_BHVTOI(bdp); - xfid->fid_len = sizeof(xfs_fid2_t) - sizeof(xfid->fid_len); + xfid->fid_len = sizeof(xfs_fid_t) - sizeof(xfid->fid_len); xfid->fid_pad = 0; /* * use memcpy because the inode is a long long and there's no Index: linux-2.6/fs/xfs/linux-2.6/xfs_vnode.h =================================================================== --- linux-2.6.orig/fs/xfs/linux-2.6/xfs_vnode.h 2007-03-13 18:21:13.000000000 +0100 +++ linux-2.6/fs/xfs/linux-2.6/xfs_vnode.h 2007-03-13 18:21:55.000000000 +0100 @@ -176,7 +176,7 @@ typedef int (*vop_readlink_t)(bhv_desc_t typedef int (*vop_fsync_t)(bhv_desc_t *, int, struct cred *, xfs_off_t, xfs_off_t); typedef int (*vop_inactive_t)(bhv_desc_t *, struct cred *); -typedef int (*vop_fid2_t)(bhv_desc_t *, struct fid *); +typedef int (*vop_fid2_t)(bhv_desc_t *, struct xfs_fid *); typedef int (*vop_release_t)(bhv_desc_t *); typedef int (*vop_rwlock_t)(bhv_desc_t *, bhv_vrwlock_t); typedef void (*vop_rwunlock_t)(bhv_desc_t *, bhv_vrwlock_t); Index: linux-2.6/fs/xfs/linux-2.6/xfs_ioctl.c =================================================================== --- linux-2.6.orig/fs/xfs/linux-2.6/xfs_ioctl.c 2007-03-13 18:21:13.000000000 +0100 +++ linux-2.6/fs/xfs/linux-2.6/xfs_ioctl.c 2007-03-13 18:21:55.000000000 +0100 @@ -150,11 +150,11 @@ xfs_find_handle( lock_mode = xfs_ilock_map_shared(ip); /* fill in fid section of handle from inode */ - handle.ha_fid.xfs_fid_len = sizeof(xfs_fid_t) - - sizeof(handle.ha_fid.xfs_fid_len); - handle.ha_fid.xfs_fid_pad = 0; - handle.ha_fid.xfs_fid_gen = ip->i_d.di_gen; - handle.ha_fid.xfs_fid_ino = ip->i_ino; + handle.ha_fid.fid_len = sizeof(xfs_fid_t) - + sizeof(handle.ha_fid.fid_len); + handle.ha_fid.fid_pad = 0; + handle.ha_fid.fid_gen = ip->i_d.di_gen; + handle.ha_fid.fid_ino = ip->i_ino; xfs_iunlock_map_shared(ip, lock_mode); @@ -220,10 +220,10 @@ xfs_vget_fsop_handlereq( if (hlen < sizeof(*handlep)) memset(((char *)handlep) + hlen, 0, sizeof(*handlep) - hlen); if (hlen > sizeof(handlep->ha_fsid)) { - if (handlep->ha_fid.xfs_fid_len != - (hlen - sizeof(handlep->ha_fsid) - - sizeof(handlep->ha_fid.xfs_fid_len)) - || handlep->ha_fid.xfs_fid_pad) + if (handlep->ha_fid.fid_len != + (hlen - sizeof(handlep->ha_fsid) - + sizeof(handlep->ha_fid.fid_len)) || + handlep->ha_fid.fid_pad) return XFS_ERROR(EINVAL); } @@ -231,9 +231,9 @@ xfs_vget_fsop_handlereq( * Crack the handle, obtain the inode # & generation # */ xfid = (struct xfs_fid *)&handlep->ha_fid; - if (xfid->xfs_fid_len == sizeof(*xfid) - sizeof(xfid->xfs_fid_len)) { - ino = xfid->xfs_fid_ino; - igen = xfid->xfs_fid_gen; + if (xfid->fid_len == sizeof(*xfid) - sizeof(xfid->fid_len)) { + ino = xfid->fid_ino; + igen = xfid->fid_gen; } else { return XFS_ERROR(EINVAL); } Index: linux-2.6/fs/xfs/linux-2.6/xfs_export.h =================================================================== --- linux-2.6.orig/fs/xfs/linux-2.6/xfs_export.h 2007-03-13 18:23:42.000000000 +0100 +++ linux-2.6/fs/xfs/linux-2.6/xfs_export.h 2007-03-13 18:23:59.000000000 +0100 @@ -71,13 +71,13 @@ xfs_fileid_length(int hasparent, int is6 /* * Decode encoded inode information (either for the inode itself - * or the parent) into an xfs_fid2_t structure. Advances and + * or the parent) into an xfs_fid_t structure. Advances and * returns the new data pointer */ static inline __u32 * -xfs_fileid_decode_fid2(__u32 *p, xfs_fid2_t *fid, int is64) +xfs_fileid_decode_fid2(__u32 *p, xfs_fid_t *fid, int is64) { - fid->fid_len = sizeof(xfs_fid2_t) - sizeof(fid->fid_len); + fid->fid_len = sizeof(xfs_fid_t) - sizeof(fid->fid_len); fid->fid_pad = 0; fid->fid_ino = *p++; #if XFS_BIG_INUMS - To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html