Skip to content

Commit

Permalink
don't bother with __d_instantiate(dentry, NULL)
Browse files Browse the repository at this point in the history
it's a no-op - bumping ->d_seq is pointless there.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
  • Loading branch information
Al Viro committed Mar 14, 2016
1 parent 27f203f commit de689f5
Showing 1 changed file with 7 additions and 10 deletions.
17 changes: 7 additions & 10 deletions fs/dcache.c
Original file line number Diff line number Diff line change
Expand Up @@ -1745,13 +1745,11 @@ static void __d_instantiate(struct dentry *dentry, struct inode *inode)
unsigned add_flags = d_flags_for_inode(inode);

spin_lock(&dentry->d_lock);
if (inode)
hlist_add_head(&dentry->d_u.d_alias, &inode->i_dentry);
hlist_add_head(&dentry->d_u.d_alias, &inode->i_dentry);
raw_write_seqcount_begin(&dentry->d_seq);
__d_set_inode_and_type(dentry, inode, add_flags);
raw_write_seqcount_end(&dentry->d_seq);
if (inode)
__fsnotify_d_instantiate(dentry);
__fsnotify_d_instantiate(dentry);
spin_unlock(&dentry->d_lock);
}

Expand All @@ -1773,11 +1771,11 @@ static void __d_instantiate(struct dentry *dentry, struct inode *inode)
void d_instantiate(struct dentry *entry, struct inode * inode)
{
BUG_ON(!hlist_unhashed(&entry->d_u.d_alias));
if (inode)
if (inode) {
spin_lock(&inode->i_lock);
__d_instantiate(entry, inode);
if (inode)
__d_instantiate(entry, inode);
spin_unlock(&inode->i_lock);
}
security_d_instantiate(entry, inode);
}
EXPORT_SYMBOL(d_instantiate);
Expand Down Expand Up @@ -2764,10 +2762,9 @@ struct dentry *d_splice_alias(struct inode *inode, struct dentry *dentry)

BUG_ON(!d_unhashed(dentry));

if (!inode) {
__d_instantiate(dentry, NULL);
if (!inode)
goto out;
}

spin_lock(&inode->i_lock);
if (S_ISDIR(inode->i_mode)) {
struct dentry *new = __d_find_any_alias(inode);
Expand Down

0 comments on commit de689f5

Please sign in to comment.