Commit f768f9d3 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'for-linus' of git://oss.sgi.com:8090/xfs/xfs-2.6

* 'for-linus' of git://oss.sgi.com:8090/xfs/xfs-2.6:
  [XFS] cleanup fid types mess
  [XFS] fixups after behavior removal merge into mainline git
parents 804b908a c6143911
...@@ -54,8 +54,8 @@ xfs_fs_decode_fh( ...@@ -54,8 +54,8 @@ xfs_fs_decode_fh(
struct dentry *de), struct dentry *de),
void *context) void *context)
{ {
xfs_fid2_t ifid; xfs_fid_t ifid;
xfs_fid2_t pfid; xfs_fid_t pfid;
void *parent = NULL; void *parent = NULL;
int is64 = 0; int is64 = 0;
__u32 *p = fh; __u32 *p = fh;
...@@ -144,7 +144,7 @@ xfs_fs_get_dentry( ...@@ -144,7 +144,7 @@ xfs_fs_get_dentry(
struct dentry *result; struct dentry *result;
int error; int error;
error = xfs_vget(XFS_M(sb), &vp, (fid_t *)data); error = xfs_vget(XFS_M(sb), &vp, data);
if (error || vp == NULL) if (error || vp == NULL)
return ERR_PTR(-ESTALE) ; return ERR_PTR(-ESTALE) ;
......
...@@ -71,13 +71,13 @@ xfs_fileid_length(int hasparent, int is64) ...@@ -71,13 +71,13 @@ xfs_fileid_length(int hasparent, int is64)
/* /*
* Decode encoded inode information (either for the inode itself * 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 * returns the new data pointer
*/ */
static inline __u32 * 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_pad = 0;
fid->fid_ino = *p++; fid->fid_ino = *p++;
#if XFS_BIG_INUMS #if XFS_BIG_INUMS
......
...@@ -152,11 +152,11 @@ xfs_find_handle( ...@@ -152,11 +152,11 @@ xfs_find_handle(
lock_mode = xfs_ilock_map_shared(ip); lock_mode = xfs_ilock_map_shared(ip);
/* fill in fid section of handle from inode */ /* fill in fid section of handle from inode */
handle.ha_fid.xfs_fid_len = sizeof(xfs_fid_t) - handle.ha_fid.fid_len = sizeof(xfs_fid_t) -
sizeof(handle.ha_fid.xfs_fid_len); sizeof(handle.ha_fid.fid_len);
handle.ha_fid.xfs_fid_pad = 0; handle.ha_fid.fid_pad = 0;
handle.ha_fid.xfs_fid_gen = ip->i_d.di_gen; handle.ha_fid.fid_gen = ip->i_d.di_gen;
handle.ha_fid.xfs_fid_ino = ip->i_ino; handle.ha_fid.fid_ino = ip->i_ino;
xfs_iunlock_map_shared(ip, lock_mode); xfs_iunlock_map_shared(ip, lock_mode);
...@@ -222,10 +222,10 @@ xfs_vget_fsop_handlereq( ...@@ -222,10 +222,10 @@ xfs_vget_fsop_handlereq(
if (hlen < sizeof(*handlep)) if (hlen < sizeof(*handlep))
memset(((char *)handlep) + hlen, 0, sizeof(*handlep) - hlen); memset(((char *)handlep) + hlen, 0, sizeof(*handlep) - hlen);
if (hlen > sizeof(handlep->ha_fsid)) { if (hlen > sizeof(handlep->ha_fsid)) {
if (handlep->ha_fid.xfs_fid_len != if (handlep->ha_fid.fid_len !=
(hlen - sizeof(handlep->ha_fsid) (hlen - sizeof(handlep->ha_fsid) -
- sizeof(handlep->ha_fid.xfs_fid_len)) sizeof(handlep->ha_fid.fid_len)) ||
|| handlep->ha_fid.xfs_fid_pad) handlep->ha_fid.fid_pad)
return XFS_ERROR(EINVAL); return XFS_ERROR(EINVAL);
} }
...@@ -233,9 +233,9 @@ xfs_vget_fsop_handlereq( ...@@ -233,9 +233,9 @@ xfs_vget_fsop_handlereq(
* Crack the handle, obtain the inode # & generation # * Crack the handle, obtain the inode # & generation #
*/ */
xfid = (struct xfs_fid *)&handlep->ha_fid; xfid = (struct xfs_fid *)&handlep->ha_fid;
if (xfid->xfs_fid_len == sizeof(*xfid) - sizeof(xfid->xfs_fid_len)) { if (xfid->fid_len == sizeof(*xfid) - sizeof(xfid->fid_len)) {
ino = xfid->xfs_fid_ino; ino = xfid->fid_ino;
igen = xfid->xfs_fid_gen; igen = xfid->fid_gen;
} else { } else {
return XFS_ERROR(EINVAL); return XFS_ERROR(EINVAL);
} }
......
...@@ -41,29 +41,16 @@ int ...@@ -41,29 +41,16 @@ int
xfs_dmops_get(struct xfs_mount *mp, struct xfs_mount_args *args) xfs_dmops_get(struct xfs_mount *mp, struct xfs_mount_args *args)
{ {
if (args->flags & XFSMNT_DMAPI) { if (args->flags & XFSMNT_DMAPI) {
struct xfs_dmops *ops; cmn_err(CE_WARN,
"XFS: dmapi support not available in this kernel.");
ops = symbol_get(xfs_dmcore_xfs); return EINVAL;
if (!ops) {
request_module("xfs_dmapi");
ops = symbol_get(xfs_dmcore_xfs);
}
if (!ops) {
cmn_err(CE_WARN, "XFS: no dmapi support available.");
return EINVAL;
}
mp->m_dm_ops = ops;
} else {
mp->m_dm_ops = &xfs_dmcore_stub;
} }
mp->m_dm_ops = &xfs_dmcore_stub;
return 0; return 0;
} }
void void
xfs_dmops_put(struct xfs_mount *mp) xfs_dmops_put(struct xfs_mount *mp)
{ {
if (mp->m_dm_ops != &xfs_dmcore_stub)
symbol_put(xfs_dmcore_xfs);
} }
...@@ -389,30 +389,13 @@ typedef struct xfs_fsop_attrmulti_handlereq { ...@@ -389,30 +389,13 @@ typedef struct xfs_fsop_attrmulti_handlereq {
*/ */
typedef struct { __u32 val[2]; } xfs_fsid_t; /* file system id type */ 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 { typedef struct xfs_fid {
__u16 xfs_fid_len; /* length of remainder */ __u16 fid_len; /* length of remainder */
__u16 xfs_fid_pad; __u16 fid_pad;
__u32 xfs_fid_gen; /* generation number */ __u32 fid_gen; /* generation number */
__u64 xfs_fid_ino; /* 64 bits inode number */ __u64 fid_ino; /* 64 bits inode number */
} xfs_fid_t; } 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 { typedef struct xfs_handle {
union { union {
__s64 align; /* force alignment of ha_fid */ __s64 align; /* force alignment of ha_fid */
...@@ -422,9 +405,9 @@ typedef struct xfs_handle { ...@@ -422,9 +405,9 @@ typedef struct xfs_handle {
} xfs_handle_t; } xfs_handle_t;
#define ha_fsid ha_u._ha_fsid #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)) \ - (char *) &(handle)) \
+ (handle).ha_fid.xfs_fid_len) + (handle).ha_fid.fid_len)
/* /*
* Flags for going down operation * Flags for going down operation
......
...@@ -135,19 +135,13 @@ int ...@@ -135,19 +135,13 @@ int
xfs_qmops_get(struct xfs_mount *mp, struct xfs_mount_args *args) xfs_qmops_get(struct xfs_mount *mp, struct xfs_mount_args *args)
{ {
if (args->flags & (XFSMNT_UQUOTA | XFSMNT_PQUOTA | XFSMNT_GQUOTA)) { if (args->flags & (XFSMNT_UQUOTA | XFSMNT_PQUOTA | XFSMNT_GQUOTA)) {
struct xfs_qmops *ops; #ifdef CONFIG_XFS_QUOTA
mp->m_qm_ops = &xfs_qmcore_xfs;
ops = symbol_get(xfs_qmcore_xfs); #else
if (!ops) { cmn_err(CE_WARN,
request_module("xfs_quota"); "XFS: qouta support not available in this kernel.");
ops = symbol_get(xfs_qmcore_xfs); return EINVAL;
} #endif
if (!ops) {
cmn_err(CE_WARN, "XFS: no quota support available.");
return EINVAL;
}
mp->m_qm_ops = ops;
} else { } else {
mp->m_qm_ops = &xfs_qmcore_stub; mp->m_qm_ops = &xfs_qmcore_stub;
} }
...@@ -158,6 +152,4 @@ xfs_qmops_get(struct xfs_mount *mp, struct xfs_mount_args *args) ...@@ -158,6 +152,4 @@ xfs_qmops_get(struct xfs_mount *mp, struct xfs_mount_args *args)
void void
xfs_qmops_put(struct xfs_mount *mp) xfs_qmops_put(struct xfs_mount *mp)
{ {
if (mp->m_qm_ops != &xfs_qmcore_stub)
symbol_put(xfs_qmcore_xfs);
} }
...@@ -1635,9 +1635,8 @@ int ...@@ -1635,9 +1635,8 @@ int
xfs_vget( xfs_vget(
xfs_mount_t *mp, xfs_mount_t *mp,
bhv_vnode_t **vpp, bhv_vnode_t **vpp,
fid_t *fidp) xfs_fid_t *xfid)
{ {
xfs_fid_t *xfid = (struct xfs_fid *)fidp;
xfs_inode_t *ip; xfs_inode_t *ip;
int error; int error;
xfs_ino_t ino; xfs_ino_t ino;
...@@ -1647,11 +1646,11 @@ xfs_vget( ...@@ -1647,11 +1646,11 @@ xfs_vget(
* Invalid. Since handles can be created in user space and passed in * Invalid. Since handles can be created in user space and passed in
* via gethandle(), this is not cause for a panic. * 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); return XFS_ERROR(EINVAL);
ino = xfid->xfs_fid_ino; ino = xfid->fid_ino;
igen = xfid->xfs_fid_gen; igen = xfid->fid_gen;
/* /*
* NFS can sometimes send requests for ino 0. Fail them gracefully. * NFS can sometimes send requests for ino 0. Fail them gracefully.
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
#define _XFS_VFSOPS_H 1 #define _XFS_VFSOPS_H 1
struct cred; struct cred;
struct fid; struct xfs_fid;
struct inode; struct inode;
struct kstatfs; struct kstatfs;
struct xfs_mount; struct xfs_mount;
...@@ -17,7 +17,7 @@ int xfs_root(struct xfs_mount *mp, bhv_vnode_t **vpp); ...@@ -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, int xfs_statvfs(struct xfs_mount *mp, struct kstatfs *statp,
bhv_vnode_t *vp); bhv_vnode_t *vp);
int xfs_sync(struct xfs_mount *mp, int flags); 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, int xfs_parseargs(struct xfs_mount *mp, char *options,
struct xfs_mount_args *args, int update); struct xfs_mount_args *args, int update);
int xfs_showargs(struct xfs_mount *mp, struct seq_file *m); int xfs_showargs(struct xfs_mount *mp, struct seq_file *m);
......
...@@ -3466,23 +3466,14 @@ xfs_symlink( ...@@ -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 int
xfs_fid2( xfs_fid2(
xfs_inode_t *ip, 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); 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; xfid->fid_pad = 0;
/* /*
* use memcpy because the inode is a long long and there's no * use memcpy because the inode is a long long and there's no
......
...@@ -39,7 +39,7 @@ int xfs_readdir(struct xfs_inode *dp, void *dirent, size_t bufsize, ...@@ -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, int xfs_symlink(struct xfs_inode *dp, bhv_vname_t *dentry,
char *target_path, mode_t mode, bhv_vnode_t **vpp, char *target_path, mode_t mode, bhv_vnode_t **vpp,
struct cred *credp); 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); int xfs_rwlock(struct xfs_inode *ip, bhv_vrwlock_t locktype);
void xfs_rwunlock(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); int xfs_inode_flush(struct xfs_inode *ip, int flags);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment