--- ./source/private_module/sunrpc/cache.c	2021-11-26 11:45:37.000000000 +0000
+++ ./source/private_module/sunrpc/cache.c.hotpatch	2021-11-26 11:48:09.823481038 +0000
@@ -69,7 +69,7 @@
    || (detail->flush_time > h->last_refresh);
 }
 
-
+static void cache_fresh_unlocked(struct cache_head *  head, struct cache_detail *detail);
 struct cache_head *sunrpc_cache_lookup(struct cache_detail *detail,
                                        struct cache_head *key, int hash)
 {
@@ -135,11 +135,11 @@
             {
                 *hp = tmp->next;
                 tmp->next = NULL;
+                set_bit(CACHE_CLEANED, &tmp->flags);
                 detail->entries--;
                 freeme = tmp;
                 break;
             }
-
             cache_get(tmp);
             write_unlock(&detail->hash_lock);
             cache_put(new, detail);
@@ -158,13 +158,13 @@
 
     if (freeme)
     {
-        cache_revisit_request(freeme);
-        
-        if (test_bit(CACHE_PENDING, &freeme->flags))
-        {    
-           cache_dequeue(detail, freeme);
-        }
-            
+        NAS_DBG(MOD_NAS_COMMUNICATE, LOG_DEBUG, "RPC: put name %s,freeme ch=%p, flag:%ld, ref:%d",
+            detail->name, freeme, freeme->flags, atomic_read(&freeme->ref.refcount));
+
+
+        cache_fresh_unlocked(freeme, detail);            
+
+
         cache_put(freeme, detail);
     }
 
@@ -646,11 +646,11 @@
 
             *cp = ch->next;
             ch->next = NULL;
+            set_bit(CACHE_CLEANED, &ch->flags);
             current_detail->entries--;
             rv = 1;
             break;
         }
-
         write_unlock(&current_detail->hash_lock);
         d = current_detail;
         if (!ch)
