From 0176629ab3f71e88850ab95796b0e519c4d0f740 Mon Sep 17 00:00:00 2001 From: Jian Yu Date: Thu, 4 Apr 2024 14:30:19 -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. Change-Id: Ic4a39d9328326634190cd0719b4c0637e1bf315c Signed-off-by: Jian Yu Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/54676 Tested-by: jenkins Tested-by: Maloo Reviewed-by: James Simmons Reviewed-by: Shaun Tancheff Reviewed-by: Aurelien Degremont Reviewed-by: Oleg Drokin --- lustre/llite/dcache.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/lustre/llite/dcache.c b/lustre/llite/dcache.c index 9fdd487..60299c9 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,", 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); -- 1.8.3.1