Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ef1f5e7a authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Lachlan McIlroy
Browse files

[XFS] cleanup vnode use in xfs_lookup



SGI-PV: 976035
SGI-Modid: xfs-linux-melb:xfs-kern:30550a

Signed-off-by: default avatarChristoph Hellwig <hch@infradead.org>
Signed-off-by: default avatarLachlan McIlroy <lachlan@sgi.com>
parent 3937be5b
Loading
Loading
Loading
Loading
+4 −5
Original line number Diff line number Diff line
@@ -213,17 +213,16 @@ xfs_fs_get_parent(
	struct dentry		*child)
{
	int			error;
	bhv_vnode_t		*cvp;
	struct xfs_inode	*cip;
	struct dentry		*parent;

	cvp = NULL;
	error = xfs_lookup(XFS_I(child->d_inode), &dotdot, &cvp);
	error = xfs_lookup(XFS_I(child->d_inode), &dotdot, &cip);
	if (unlikely(error))
		return ERR_PTR(-error);

	parent = d_alloc_anon(vn_to_inode(cvp));
	parent = d_alloc_anon(cip->i_vnode);
	if (unlikely(!parent)) {
		VN_RELE(cvp);
		iput(cip->i_vnode);
		return ERR_PTR(-ENOMEM);
	}
	return parent;
+3 −3
Original line number Diff line number Diff line
@@ -372,13 +372,13 @@ xfs_vn_lookup(
	struct dentry	*dentry,
	struct nameidata *nd)
{
	bhv_vnode_t	*cvp;
	struct xfs_inode *cip;
	int		error;

	if (dentry->d_name.len >= MAXNAMELEN)
		return ERR_PTR(-ENAMETOOLONG);

	error = xfs_lookup(XFS_I(dir), dentry, &cvp);
	error = xfs_lookup(XFS_I(dir), dentry, &cip);
	if (unlikely(error)) {
		if (unlikely(error != ENOENT))
			return ERR_PTR(-error);
@@ -386,7 +386,7 @@ xfs_vn_lookup(
		return NULL;
	}

	return d_splice_alias(vn_to_inode(cvp), dentry);
	return d_splice_alias(cip->i_vnode, dentry);
}

STATIC int
+2 −2
Original line number Diff line number Diff line
@@ -1763,7 +1763,7 @@ int
xfs_lookup(
	xfs_inode_t		*dp,
	bhv_vname_t		*dentry,
	bhv_vnode_t		**vpp)
	xfs_inode_t		**ipp)
{
	xfs_inode_t		*ip;
	xfs_ino_t		e_inum;
@@ -1778,7 +1778,7 @@ xfs_lookup(
	lock_mode = xfs_ilock_map_shared(dp);
	error = xfs_dir_lookup_int(dp, lock_mode, dentry, &e_inum, &ip);
	if (!error) {
		*vpp = XFS_ITOV(ip);
		*ipp = ip;
		xfs_itrace_ref(ip);
	}
	xfs_iunlock_map_shared(dp, lock_mode);
+1 −1
Original line number Diff line number Diff line
@@ -24,7 +24,7 @@ int xfs_fsync(struct xfs_inode *ip, int flag, xfs_off_t start,
int xfs_release(struct xfs_inode *ip);
int xfs_inactive(struct xfs_inode *ip);
int xfs_lookup(struct xfs_inode *dp, bhv_vname_t *dentry,
		bhv_vnode_t **vpp);
		struct xfs_inode **ipp);
int xfs_create(struct xfs_inode *dp, bhv_vname_t *dentry, mode_t mode,
		xfs_dev_t rdev, struct xfs_inode **ipp, struct cred *credp);
int xfs_remove(struct xfs_inode *dp, bhv_vname_t	*dentry);