[Devel] [PATCH RH7 19/32] dcache.c: call ->d_prune() regardless of d_unhashed()

Pavel Tikhomirov ptikhomirov at virtuozzo.com
Mon Jun 8 20:05:49 MSK 2020


From: Al Viro <viro at zeniv.linux.org.uk>

the only in-tree instance checks d_unhashed() anyway,
out-of-tree code can preserve the current behaviour by
adding such check if they want it and we get an ability
to use it in cases where we *want* to be notified of
killing being inevitable before ->d_lock is dropped,
whether it's unhashed or not.  In particular, autofs
would benefit from that.

Signed-off-by: Al Viro <viro at zeniv.linux.org.uk>

(cherry picked from VZ8 commit 2926620145095ffb0350b2312ac9d0af8537796f)

This patch is required for ("take the targets of /proc/*/ns/* symlinks
to separate fs") as in ns_prune_dentry it wants to unstash dentry from
ns.

https://jira.sw.ru/browse/PSBM-102357

Signed-off-by: Pavel Tikhomirov <ptikhomirov at virtuozzo.com>
---
 fs/dcache.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fs/dcache.c b/fs/dcache.c
index e4bdb717669e..6e3e53d95155 100644
--- a/fs/dcache.c
+++ b/fs/dcache.c
@@ -619,7 +619,7 @@ static void __dentry_kill(struct dentry *dentry)
 	 * inform the fs via d_prune that this dentry is about to be
 	 * unhashed and destroyed.
 	 */
-	if ((dentry->d_flags & DCACHE_OP_PRUNE) && !d_unhashed(dentry))
+	if (dentry->d_flags & DCACHE_OP_PRUNE)
 		dentry->d_op->d_prune(dentry);
 
 	if (dentry->d_flags & DCACHE_LRU_LIST) {
-- 
2.24.1



More information about the Devel mailing list