diff --git a/fs/fuse/dir.c b/fs/fuse/dir.c index ecaec0fea3a1..d9dffc326a26 100644 --- a/fs/fuse/dir.c +++ b/fs/fuse/dir.c @@ -1417,34 +1417,9 @@ int fuse_reverse_inval_entry(struct fuse_conn *fc, u64 parent_nodeid, d_invalidate(entry); fuse_invalidate_entry_cache(entry); - if (child_nodeid != 0 && d_really_is_positive(entry)) { - inode_lock(d_inode(entry)); - if (get_node_id(d_inode(entry)) != child_nodeid) { - err = -ENOENT; - goto badentry; - } - if (d_mountpoint(entry)) { - err = -EBUSY; - goto badentry; - } - if (d_is_dir(entry)) { - shrink_dcache_parent(entry); - if (!simple_empty(entry)) { - err = -ENOTEMPTY; - goto badentry; - } - d_inode(entry)->i_flags |= S_DEAD; - } - dont_mount(entry); - clear_nlink(d_inode(entry)); - err = 0; - badentry: - inode_unlock(d_inode(entry)); - if (!err) - d_delete(entry); - } else { - err = 0; - } + err = 0; + if (child_nodeid != 0 && get_node_id(d_inode(entry)) != child_nodeid) + err = -ENOENT; dput(entry); unlock: