summaryrefslogtreecommitdiffstats
path: root/fs/xfs/linux-2.6/xfs_export.c
diff options
context:
space:
mode:
authorDmitry Torokhov <dtor_core@ameritech.net>2006-04-02 00:08:05 -0500
committerDmitry Torokhov <dtor_core@ameritech.net>2006-04-02 00:08:05 -0500
commit95d465fd750897ab32462a6702fbfe1b122cbbc0 (patch)
tree65c38b2f11c51bb6932e44dd6c92f15b0091abfe /fs/xfs/linux-2.6/xfs_export.c
parent642fde17dceceb56c7ba2762733ac688666ae657 (diff)
parent683aa4012f53b2ada0f430487e05d37b0d94e90a (diff)
Manual merge with Linus.
Conflicts: arch/powerpc/kernel/setup-common.c drivers/input/keyboard/hil_kbd.c drivers/input/mouse/hil_ptr.c
Diffstat (limited to 'fs/xfs/linux-2.6/xfs_export.c')
-rw-r--r--fs/xfs/linux-2.6/xfs_export.c37
1 files changed, 17 insertions, 20 deletions
diff --git a/fs/xfs/linux-2.6/xfs_export.c b/fs/xfs/linux-2.6/xfs_export.c
index 80eb249f2fa..b768ea910bb 100644
--- a/fs/xfs/linux-2.6/xfs_export.c
+++ b/fs/xfs/linux-2.6/xfs_export.c
@@ -25,6 +25,8 @@
#include "xfs_mount.h"
#include "xfs_export.h"
+STATIC struct dentry dotdot = { .d_name.name = "..", .d_name.len = 2, };
+
/*
* XFS encodes and decodes the fileid portion of NFS filehandles
* itself instead of letting the generic NFS code do it. This
@@ -37,7 +39,7 @@
*/
STATIC struct dentry *
-linvfs_decode_fh(
+xfs_fs_decode_fh(
struct super_block *sb,
__u32 *fh,
int fh_len,
@@ -78,12 +80,12 @@ linvfs_decode_fh(
}
fh = (__u32 *)&ifid;
- return find_exported_dentry(sb, fh, parent, acceptable, context);
+ return sb->s_export_op->find_exported_dentry(sb, fh, parent, acceptable, context);
}
STATIC int
-linvfs_encode_fh(
+xfs_fs_encode_fh(
struct dentry *dentry,
__u32 *fh,
int *max_len,
@@ -95,7 +97,7 @@ linvfs_encode_fh(
int len;
int is64 = 0;
#if XFS_BIG_INUMS
- vfs_t *vfs = LINVFS_GET_VFS(inode->i_sb);
+ vfs_t *vfs = vfs_from_sb(inode->i_sb);
if (!(vfs->vfs_flag & VFS_32BITINODES)) {
/* filesystem may contain 64bit inode numbers */
@@ -130,21 +132,21 @@ linvfs_encode_fh(
}
STATIC struct dentry *
-linvfs_get_dentry(
+xfs_fs_get_dentry(
struct super_block *sb,
void *data)
{
vnode_t *vp;
struct inode *inode;
struct dentry *result;
- vfs_t *vfsp = LINVFS_GET_VFS(sb);
+ vfs_t *vfsp = vfs_from_sb(sb);
int error;
VFS_VGET(vfsp, &vp, (fid_t *)data, error);
if (error || vp == NULL)
return ERR_PTR(-ESTALE) ;
- inode = LINVFS_GET_IP(vp);
+ inode = vn_to_inode(vp);
result = d_alloc_anon(inode);
if (!result) {
iput(inode);
@@ -154,25 +156,20 @@ linvfs_get_dentry(
}
STATIC struct dentry *
-linvfs_get_parent(
+xfs_fs_get_parent(
struct dentry *child)
{
int error;
vnode_t *vp, *cvp;
struct dentry *parent;
- struct dentry dotdot;
-
- dotdot.d_name.name = "..";
- dotdot.d_name.len = 2;
- dotdot.d_inode = NULL;
cvp = NULL;
- vp = LINVFS_GET_VP(child->d_inode);
+ vp = vn_from_inode(child->d_inode);
VOP_LOOKUP(vp, &dotdot, &cvp, 0, NULL, NULL, error);
if (unlikely(error))
return ERR_PTR(-error);
- parent = d_alloc_anon(LINVFS_GET_IP(cvp));
+ parent = d_alloc_anon(vn_to_inode(cvp));
if (unlikely(!parent)) {
VN_RELE(cvp);
return ERR_PTR(-ENOMEM);
@@ -180,9 +177,9 @@ linvfs_get_parent(
return parent;
}
-struct export_operations linvfs_export_ops = {
- .decode_fh = linvfs_decode_fh,
- .encode_fh = linvfs_encode_fh,
- .get_parent = linvfs_get_parent,
- .get_dentry = linvfs_get_dentry,
+struct export_operations xfs_export_operations = {
+ .decode_fh = xfs_fs_decode_fh,
+ .encode_fh = xfs_fs_encode_fh,
+ .get_parent = xfs_fs_get_parent,
+ .get_dentry = xfs_fs_get_dentry,
};