From 9c5f1d30199d09f7e2776c24ecb63c843ada876d Mon Sep 17 00:00:00 2001 From: Al Viro Date: Sun, 15 Apr 2018 18:28:48 -0400 Subject: [PATCH] dcache: move cond_resched() into the end of __dentry_kill() cond_resched() in shrink_dentry_list() is too early Signed-off-by: Al Viro --- fs/dcache.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/fs/dcache.c b/fs/dcache.c index af645c20db40..fd4c6de17b94 100644 --- a/fs/dcache.c +++ b/fs/dcache.c @@ -580,6 +580,7 @@ static void __dentry_kill(struct dentry *dentry) spin_unlock(&dentry->d_lock); if (likely(can_free)) dentry_free(dentry); + cond_resched(); } static struct dentry *__lock_parent(struct dentry *dentry) @@ -849,7 +850,6 @@ void dput(struct dentry *dentry) dentry = dentry_kill(dentry); if (dentry) { - cond_resched(); goto repeat; } } @@ -1052,8 +1052,6 @@ static void shrink_dentry_list(struct list_head *list) while (!list_empty(list)) { struct dentry *dentry, *parent; - cond_resched(); - dentry = list_entry(list->prev, struct dentry, d_lru); spin_lock(&dentry->d_lock); rcu_read_lock();