Whamcloud - gitweb
LU-17696 llite: remove LASSERT from ll_ddelete() 76/54676/1
authorJian Yu <yujian@whamcloud.com>
Thu, 4 Apr 2024 21:30:19 +0000 (14:30 -0700)
committerJian Yu <yujian@whamcloud.com>
Thu, 4 Apr 2024 21:51:40 +0000 (14:51 -0700)
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 <yujian@whamcloud.com>
lustre/llite/dcache.c

index 1c1b5b3..fded2b2 100644 (file)
@@ -132,9 +132,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(de))
                RETURN(1);
        RETURN(0);