]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - fs/xfs/linux-2.6/xfs_export.c
[PATCH] switch all filesystems over to d_obtain_alias
[linux-2.6-omap-h63xx.git] / fs / xfs / linux-2.6 / xfs_export.c
index 987fe84f7b1351d8204b18d182c4f49185f95218..7f7abec25e141302458af4e72a0bf3ecce87fbab 100644 (file)
@@ -139,7 +139,7 @@ xfs_nfs_get_inode(
        }
 
        xfs_iunlock(ip, XFS_ILOCK_SHARED);
-       return ip->i_vnode;
+       return VFS_I(ip);
 }
 
 STATIC struct dentry *
@@ -148,7 +148,6 @@ xfs_fs_fh_to_dentry(struct super_block *sb, struct fid *fid,
 {
        struct xfs_fid64        *fid64 = (struct xfs_fid64 *)fid;
        struct inode            *inode = NULL;
-       struct dentry           *result;
 
        if (fh_len < xfs_fileid_length(fileid_type))
                return NULL;
@@ -164,16 +163,7 @@ xfs_fs_fh_to_dentry(struct super_block *sb, struct fid *fid,
                break;
        }
 
-       if (!inode)
-               return NULL;
-       if (IS_ERR(inode))
-               return ERR_PTR(PTR_ERR(inode));
-       result = d_alloc_anon(inode);
-       if (!result) {
-               iput(inode);
-               return ERR_PTR(-ENOMEM);
-       }
-       return result;
+       return d_obtain_alias(inode);
 }
 
 STATIC struct dentry *
@@ -182,7 +172,6 @@ xfs_fs_fh_to_parent(struct super_block *sb, struct fid *fid,
 {
        struct xfs_fid64        *fid64 = (struct xfs_fid64 *)fid;
        struct inode            *inode = NULL;
-       struct dentry           *result;
 
        switch (fileid_type) {
        case FILEID_INO32_GEN_PARENT:
@@ -195,16 +184,7 @@ xfs_fs_fh_to_parent(struct super_block *sb, struct fid *fid,
                break;
        }
 
-       if (!inode)
-               return NULL;
-       if (IS_ERR(inode))
-               return ERR_PTR(PTR_ERR(inode));
-       result = d_alloc_anon(inode);
-       if (!result) {
-               iput(inode);
-               return ERR_PTR(-ENOMEM);
-       }
-       return result;
+       return d_obtain_alias(inode);
 }
 
 STATIC struct dentry *
@@ -213,18 +193,12 @@ xfs_fs_get_parent(
 {
        int                     error;
        struct xfs_inode        *cip;
-       struct dentry           *parent;
 
        error = xfs_lookup(XFS_I(child->d_inode), &xfs_name_dotdot, &cip, NULL);
        if (unlikely(error))
                return ERR_PTR(-error);
 
-       parent = d_alloc_anon(cip->i_vnode);
-       if (unlikely(!parent)) {
-               iput(cip->i_vnode);
-               return ERR_PTR(-ENOMEM);
-       }
-       return parent;
+       return d_obtain_alias(VFS_I(cip));
 }
 
 const struct export_operations xfs_export_operations = {