From: Jian Yu Date: Wed, 30 Oct 2024 17:21:57 +0000 (-0700) Subject: LU-17696 llite: remove LASSERT from ll_ddelete() X-Git-Tag: 2.15.6-RC1~32 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=refs%2Fchanges%2F30%2F56830%2F2;p=fs%2Flustre-release.git 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: 0176629ab3f71e88850ab95796b0e519c4d0f740 Change-Id: Ic4a39d9328326634190cd0719b4c0637e1bf315c Signed-off-by: Jian Yu Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/56830 Tested-by: jenkins Tested-by: Maloo Reviewed-by: Shaun Tancheff Reviewed-by: James Simmons Reviewed-by: Oleg Drokin --- diff --git a/lustre/llite/dcache.c b/lustre/llite/dcache.c index 4ab59da0..7de0f5f 100644 --- a/lustre/llite/dcache.c +++ b/lustre/llite/dcache.c @@ -132,9 +132,6 @@ static int ll_ddelete(const struct dentry *de) d_unhashed((struct dentry *)de) ? "" : "hashed,", list_empty(&de->d_subdirs) ? "" : "subdirs"); - /* kernel >= 2.6.38 last refcount is decreased after this function. */ - LASSERT(ll_d_count(de) == 1); - if (d_lustre_invalid(de)) RETURN(1); RETURN(0);