new helper: ihold()

Clones an existing reference to inode; caller must already hold one.

Signed-off-by: Al Viro <[email protected]>
This commit is contained in:
Al Viro 2010-10-23 11:11:40 -04:00
commit 7de9c6ee3e
40 changed files with 57 additions and 49 deletions

View file

@ -1580,7 +1580,7 @@ nfs_link(struct dentry *old_dentry, struct inode *dir, struct dentry *dentry)
d_drop(dentry);
error = NFS_PROTO(dir)->link(inode, dir, &dentry->d_name);
if (error == 0) {
atomic_inc(&inode->i_count);
ihold(inode);
d_add(dentry, inode);
}
return error;

View file

@ -54,8 +54,7 @@ static int nfs_superblock_set_dummy_root(struct super_block *sb, struct inode *i
iput(inode);
return -ENOMEM;
}
/* Circumvent igrab(): we know the inode is not being freed */
atomic_inc(&inode->i_count);
ihold(inode);
/*
* Ensure that this dentry is invisible to d_find_alias().
* Otherwise, it may be spliced into the tree by