From f601ede8fd166f8f2c84db427b94f80f1b0cbab1 Mon Sep 17 00:00:00 2001 From: Al Viro Date: Sun, 12 Apr 2026 14:17:52 -0400 Subject: [PATCH] select_collect(): ignore dentries on shrink lists if they have positive refcounts 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) {