ceph: use d_invalidate() to invalidate aliases
d_invalidate() is the standard VFS method to invalidate dentry. compare to d_delete(), it also try shrinking children dentries. Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com> Reviewed-by: Sage Weil <sage@inktank.com>
This commit is contained in:
parent
ed284c49f6
commit
a8d436f015
1 changed files with 4 additions and 4 deletions
|
@ -2346,10 +2346,10 @@ static void invalidate_aliases(struct inode *inode)
|
|||
d_prune_aliases(inode);
|
||||
/*
|
||||
* For non-directory inode, d_find_alias() only returns
|
||||
* connected dentry. After calling d_delete(), the dentry
|
||||
* become disconnected.
|
||||
* connected dentry. After calling d_invalidate(), the
|
||||
* dentry become disconnected.
|
||||
*
|
||||
* For directory inode, d_find_alias() only can return
|
||||
* For directory inode, d_find_alias() can return
|
||||
* disconnected dentry. But directory inode should have
|
||||
* one alias at most.
|
||||
*/
|
||||
|
@ -2358,7 +2358,7 @@ static void invalidate_aliases(struct inode *inode)
|
|||
dput(dn);
|
||||
break;
|
||||
}
|
||||
d_delete(dn);
|
||||
d_invalidate(dn);
|
||||
if (prev)
|
||||
dput(prev);
|
||||
prev = dn;
|
||||
|
|
Loading…
Reference in a new issue