Skip to content

Commit

Permalink
stop using igrab in xfs_vn_link
Browse files Browse the repository at this point in the history
->link is guranteed to get an already reference inode passed so we
can do a simple increment of i_count instead of using igrab and thus
avoid banging on the global inode_lock.  This is what most filesystems
already do.

Also move the increment after the call to xfs_link to simplify error
handling.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Dave Chinner <david@fromorbit.com>
Signed-off-by: Niv Sardi <xaiki@sgi.com>
  • Loading branch information
Christoph Hellwig authored and Niv Sardi committed Dec 4, 2008
1 parent 5d765b9 commit d9424b3
Showing 1 changed file with 3 additions and 6 deletions.
9 changes: 3 additions & 6 deletions fs/xfs/linux-2.6/xfs_iops.c
Original file line number Diff line number Diff line change
Expand Up @@ -367,21 +367,18 @@ xfs_vn_link(
struct inode *dir,
struct dentry *dentry)
{
struct inode *inode; /* inode of guy being linked to */
struct inode *inode = old_dentry->d_inode;
struct xfs_name name;
int error;

inode = old_dentry->d_inode;
xfs_dentry_to_name(&name, dentry);

igrab(inode);
error = xfs_link(XFS_I(dir), XFS_I(inode), &name);
if (unlikely(error)) {
iput(inode);
if (unlikely(error))
return -error;
}

xfs_iflags_set(XFS_I(dir), XFS_IMODIFIED);
atomic_inc(&inode->i_count);
d_instantiate(dentry, inode);
return 0;
}
Expand Down

0 comments on commit d9424b3

Please sign in to comment.