--- ./source/private_module/pal/pal_core/pal_core_dentry.c	2018-02-09 13:47:03.000000000 +0000
+++ ./source/private_module/pal/pal_core/pal_core_dentry.c.hotpatch	2021-02-23 08:27:31.000000000 +0000
@@ -892,7 +892,7 @@
     
     return;
 }
-
+DENTRY_S *deleteDentryFromHash(uint64_t fsId, uint64_t fid, uint64_t pFid);
 /**************************************************************************
      :  ͷһdentry(ṩⲿ)
  :  fsId                 ļϵͳID                        
@@ -928,7 +928,7 @@
         return;
     }
     
-    dentry = deleteFromHash(fsId, fid);
+    dentry = deleteDentryFromHash(fsId, fid, pFid);
     if(unlikely(NULL == dentry))
     {
         DBG_LogDebug(DBG_LOGID_NEW, "Dentry(%llu) not exist.",fid);
@@ -2138,3 +2138,43 @@
 }
 #endif /* #if DESC("INIT MODULE") */
 
+DENTRY_S *deleteDentryFromHash(uint64_t fsId, uint64_t fid, uint64_t pFid)
+{
+    DENTRY_CACHE_S *dentryCache = getDentryCache();
+    struct list_head *pos = NULL;
+    DENTRY_S *tmp = NULL;
+    uint32_t nameBucketId = 0;
+    uint32_t idBucketId = 0;
+    DENTRY_HASH_BUCKET_S *nameBucket = NULL;
+    DENTRY_HASH_BUCKET_S *idBucket = NULL;
+    DENTRY_S *dentry = NULL;
+    idBucketId = getIdBucketId(fsId, fid);
+    idBucket = &(dentryCache->idHashTable.hashBucket[idBucketId]);
+    spin_lock(&idBucket->lock);
+    list_for_each(pos, &idBucket->bucketList)
+    {
+        tmp = list_entry(pos, DENTRY_S, idHashHead);
+        if ((tmp->fsId == fsId) && (tmp->fid== fid) && (tmp->pFid == pFid))
+        {
+            dentry = tmp;
+            break;
+        }
+    }
+    if(unlikely(NULL == dentry))
+    {
+        spin_unlock(&idBucket->lock);
+        return NULL;
+    }
+    nameBucketId = dentry->nameBucketId;
+    nameBucket = &(dentryCache->nameHashTable.hashBucket[nameBucketId]);
+    spin_lock(&nameBucket->lock);
+    list_del(&dentry->nameHashHead);
+    list_del(&dentry->idHashHead);
+    nameBucket->nodeCount--;
+    idBucket->nodeCount--;
+    atomic_inc(&dentry->refCount);
+    spin_unlock(&nameBucket->lock);
+    spin_unlock(&idBucket->lock);
+    return dentry;
+}
+
