[XFS] Cleanup various fid related bits:
- merge xfs_fid2 into it's only caller xfs_dm_inode_to_fh. - remove xfs_vget and opencode it in the two callers, simplifying both of them by avoiding the awkward calling convetion. - assign directly to the dm_fid_t members in various places in the dmapi code instead of casting them to xfs_fid_t first (which is identical to dm_fid_t) SGI-PV: 974747 SGI-Modid: xfs-linux-melb:xfs-kern:30258a Signed-off-by: Christoph Hellwig <hch@infradead.org> Signed-off-by: Vlad Apostolov <vapo@sgi.com> Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
This commit is contained in:
committed by
Lachlan McIlroy
parent
edd319dc52
commit
f71354bc3a
@ -118,20 +118,29 @@ xfs_nfs_get_inode(
|
||||
u64 ino,
|
||||
u32 generation)
|
||||
{
|
||||
xfs_fid_t xfid;
|
||||
bhv_vnode_t *vp;
|
||||
xfs_mount_t *mp = XFS_M(sb);
|
||||
xfs_inode_t *ip;
|
||||
int error;
|
||||
|
||||
xfid.fid_len = sizeof(xfs_fid_t) - sizeof(xfid.fid_len);
|
||||
xfid.fid_pad = 0;
|
||||
xfid.fid_ino = ino;
|
||||
xfid.fid_gen = generation;
|
||||
/*
|
||||
* NFS can sometimes send requests for ino 0. Fail them gracefully.
|
||||
*/
|
||||
if (ino == 0)
|
||||
return ERR_PTR(-ESTALE);
|
||||
|
||||
error = xfs_vget(XFS_M(sb), &vp, &xfid);
|
||||
error = xfs_iget(mp, NULL, ino, 0, XFS_ILOCK_SHARED, &ip, 0);
|
||||
if (error)
|
||||
return ERR_PTR(-error);
|
||||
if (!ip)
|
||||
return ERR_PTR(-EIO);
|
||||
|
||||
return vp ? vn_to_inode(vp) : NULL;
|
||||
if (!ip->i_d.di_mode || ip->i_d.di_gen != generation) {
|
||||
xfs_iput_new(ip, XFS_ILOCK_SHARED);
|
||||
return ERR_PTR(-ENOENT);
|
||||
}
|
||||
|
||||
xfs_iunlock(ip, XFS_ILOCK_SHARED);
|
||||
return ip->i_vnode;
|
||||
}
|
||||
|
||||
STATIC struct dentry *
|
||||
|
Reference in New Issue
Block a user