Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 71535
b: refs/heads/master
c: c614391
h: refs/heads/master
i:
  71533: b2d1d2d
  71531: 60df6a5
  71527: 7a8358d
  71519: 1364ee0
v: v3
  • Loading branch information
Christoph Hellwig authored and Tim Shimmin committed Oct 19, 2007
1 parent ed302e9 commit afa4df9
Show file tree
Hide file tree
Showing 9 changed files with 34 additions and 61 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: c8fcfac5a257f8a04f7ba3d397dedccffef19be2
refs/heads/master: c6143911a7e0f8abef0319c801eb36718f57dfde
6 changes: 3 additions & 3 deletions trunk/fs/xfs/linux-2.6/xfs_export.c
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,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;
Expand Down Expand Up @@ -144,7 +144,7 @@ xfs_fs_get_dentry(
struct dentry *result;
int error;

error = xfs_vget(XFS_M(sb), &vp, (fid_t *)data);
error = xfs_vget(XFS_M(sb), &vp, data);
if (error || vp == NULL)
return ERR_PTR(-ESTALE) ;

Expand Down
6 changes: 3 additions & 3 deletions trunk/fs/xfs/linux-2.6/xfs_export.h
Original file line number Diff line number Diff line change
Expand Up @@ -71,13 +71,13 @@ xfs_fileid_length(int hasparent, int is64)

/*
* 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
Expand Down
24 changes: 12 additions & 12 deletions trunk/fs/xfs/linux-2.6/xfs_ioctl.c
Original file line number Diff line number Diff line change
Expand Up @@ -152,11 +152,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);

Expand Down Expand Up @@ -222,20 +222,20 @@ 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);
}

/*
* 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);
}
Expand Down
29 changes: 6 additions & 23 deletions trunk/fs/xfs/xfs_fs.h
Original file line number Diff line number Diff line change
Expand Up @@ -389,30 +389,13 @@ typedef struct xfs_fsop_attrmulti_handlereq {
*/
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 */
Expand All @@ -422,9 +405,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
Expand Down
9 changes: 4 additions & 5 deletions trunk/fs/xfs/xfs_vfsops.c
Original file line number Diff line number Diff line change
Expand Up @@ -1635,9 +1635,8 @@ int
xfs_vget(
xfs_mount_t *mp,
bhv_vnode_t **vpp,
fid_t *fidp)
xfs_fid_t *xfid)
{
xfs_fid_t *xfid = (struct xfs_fid *)fidp;
xfs_inode_t *ip;
int error;
xfs_ino_t ino;
Expand All @@ -1647,11 +1646,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.
Expand Down
4 changes: 2 additions & 2 deletions trunk/fs/xfs/xfs_vfsops.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
#define _XFS_VFSOPS_H 1

struct cred;
struct fid;
struct xfs_fid;
struct inode;
struct kstatfs;
struct xfs_mount;
Expand All @@ -17,7 +17,7 @@ int xfs_root(struct xfs_mount *mp, bhv_vnode_t **vpp);
int xfs_statvfs(struct xfs_mount *mp, struct kstatfs *statp,
bhv_vnode_t *vp);
int xfs_sync(struct xfs_mount *mp, int flags);
int xfs_vget(struct xfs_mount *mp, bhv_vnode_t **vpp, struct fid *fidp);
int xfs_vget(struct xfs_mount *mp, bhv_vnode_t **vpp, struct xfs_fid *xfid);
int xfs_parseargs(struct xfs_mount *mp, char *options,
struct xfs_mount_args *args, int update);
int xfs_showargs(struct xfs_mount *mp, struct seq_file *m);
Expand Down
13 changes: 2 additions & 11 deletions trunk/fs/xfs/xfs_vnodeops.c
Original file line number Diff line number Diff line change
Expand Up @@ -3466,23 +3466,14 @@ xfs_symlink(
}


/*
* 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.
*/
int
xfs_fid2(
xfs_inode_t *ip,
fid_t *fidp)
xfs_fid_t *xfid)
{
xfs_fid2_t *xfid = (xfs_fid2_t *)fidp;

vn_trace_entry(ip, __FUNCTION__, (inst_t *)__return_address);
ASSERT(sizeof(fid_t) >= sizeof(xfs_fid2_t));

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
Expand Down
2 changes: 1 addition & 1 deletion trunk/fs/xfs/xfs_vnodeops.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ int xfs_readdir(struct xfs_inode *dp, void *dirent, size_t bufsize,
int xfs_symlink(struct xfs_inode *dp, bhv_vname_t *dentry,
char *target_path, mode_t mode, bhv_vnode_t **vpp,
struct cred *credp);
int xfs_fid2(struct xfs_inode *ip, fid_t *fidp);
int xfs_fid2(struct xfs_inode *ip, struct xfs_fid *xfid);
int xfs_rwlock(struct xfs_inode *ip, bhv_vrwlock_t locktype);
void xfs_rwunlock(struct xfs_inode *ip, bhv_vrwlock_t locktype);
int xfs_inode_flush(struct xfs_inode *ip, int flags);
Expand Down

0 comments on commit afa4df9

Please sign in to comment.