@@ -290,13 +290,6 @@ static inline struct external_name *external_name(struct dentry *dentry)
return container_of(dentry->d_name.name, struct external_name, name[0]);
}
-static void __d_free(struct rcu_head *head)
-{
- struct dentry *dentry = container_of(head, struct dentry, d_u.d_rcu);
-
- kmem_cache_free(dentry_cache, dentry);
-}
-
static void __d_free_external(struct rcu_head *head)
{
struct dentry *dentry = container_of(head, struct dentry, d_u.d_rcu);
@@ -371,9 +364,9 @@ static void dentry_free(struct dentry *dentry)
}
/* if dentry was never visible to RCU, immediate free is OK */
if (dentry->d_flags & DCACHE_NORCU)
- __d_free(&dentry->d_u.d_rcu);
+ kfree(dentry);
else
- call_rcu(&dentry->d_u.d_rcu, __d_free);
+ kfree_rcu(dentry, d_u.d_rcu);
}
/*
In 'dentry_free()', prefer plain 'kfree()' and 'kfree_rcu()' over 'call_rcu()' with dummy '__d_free()' callback. This follows commit 878c391f74d6 ("fs: prefer kfree_rcu() in fasync_remove_entry()") and should not be backported to stable as well. Signed-off-by: Dmitry Antipov <dmantipov@yandex.ru> --- fs/dcache.c | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-)