If all dentries we find have positive refcounts and some happen to be on shrink lists, there's no point trying to steal them in the select_collect2() phase - we won't be able to evict any of them. Busy on shrink lists is still busy... 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 fa12e18906b9..40031b806b73 100644 --- a/fs/dcache.c +++ b/fs/dcache.c @@ -1589,9 +1589,7 @@ static enum d_walk_ret select_collect(void *_data, struct dentry *dentry) if (data->start == dentry) goto out; - if (dentry->d_flags & DCACHE_SHRINK_LIST) { - data->found++; - } else if (!dentry->d_lockref.count) { + if (!dentry->d_lockref.count) { to_shrink_list(dentry, &data->dispose); data->found++; } else if (dentry->d_lockref.count < 0) { -- 2.47.3