From aaec1c8bf1332b6c9fe4898beb8d93a856e9a9f1 Mon Sep 17 00:00:00 2001 From: Jian Yu Date: Fri, 5 Apr 2024 01:37:03 -0700 Subject: [PATCH] LU-17696 llite: remove LASSERT from ll_ddelete() On Linux kernel 6.8, the changes in commit 2f42f1eb9093 ("Call retain_dentry() with refcount 0") made d_delete() instances called for dentries with ->d_lock held and refcount equal to 0, which caused the following assertion failure on Lustre client: (dcache.c:136:ll_ddelete()) ASSERTION( d_count(de) == 1 ) failed The value of d_count(de) became 0 instead of 1. Since retain_dentry() was called either with refcount 0 or 1, we can simply remove the LASSERT(ll_d_count(de) == 1) from ll_ddelete() to avoid the above failure. Lustre-change: https://review.whamcloud.com/54676 Lustre-commit: TBD (from 50bd3822d2977cd45e56521d137aec2ce5829529) Change-Id: Ic4a39d9328326634190cd0719b4c0637e1bf315c Signed-off-by: Jian Yu Reviewed-on: https://review.whamcloud.com/c/ex/lustre-release/+/54679 Tested-by: jenkins Tested-by: Maloo Reviewed-by: Andreas Dilger --- lustre/llite/dcache.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/lustre/llite/dcache.c b/lustre/llite/dcache.c index b41c03d..2efd43f 100644 --- a/lustre/llite/dcache.c +++ b/lustre/llite/dcache.c @@ -133,9 +133,6 @@ static int ll_ddelete(const struct dentry *de) d_unhashed((struct dentry *)de) ? "" : "hashed,", d_no_children(de) ? "" : "subdirs"); - /* kernel >= 2.6.38 last refcount is decreased after this function. */ - LASSERT(ll_d_count(de) == 1); - if (d_lustre_invalid((struct dentry *)de)) RETURN(1); RETURN(0); -- 1.8.3.1