| diff -ur linux-3.10.0-1160.31.1.el7/net/sunrpc/cache.c linux-3.10.0-1160.31.1.el7.actifio/net/sunrpc/cache.c |
| --- linux-3.10.0-1160.31.1.el7/net/sunrpc/cache.c 2021-05-26 19:49:38.000000000 +0000 |
| +++ linux-3.10.0-1160.31.1.el7.actifio/net/sunrpc/cache.c 2021-07-09 20:29:11.674408818 +0000 |
| @@ -40,6 +40,11 @@ |
| static bool cache_defer_req(struct cache_req *req, struct cache_head *item); |
| static void cache_revisit_request(struct cache_head *item); |
| static bool cache_listeners_exist(struct cache_detail *detail); |
| +static void cache_fresh_locked(struct cache_head *head, time_t expiry, |
| + struct cache_detail *detail); |
| +static void cache_fresh_unlocked(struct cache_head *head, |
| + struct cache_detail *detail); |
| + |
| |
| static void cache_init(struct cache_head *h, struct cache_detail *detail) |
| { |
| @@ -98,6 +103,7 @@ |
| *hp = tmp->next; |
| tmp->next = NULL; |
| detail->entries --; |
| + cache_fresh_locked(tmp, 0, detail); |
| freeme = tmp; |
| break; |
| } |
| @@ -114,7 +120,10 @@ |
| write_unlock(&detail->hash_lock); |
| |
| if (freeme) |
| + { |
| + cache_fresh_unlocked(freeme, detail); |
| cache_put(freeme, detail); |
| + } |
| return new; |
| } |
| EXPORT_SYMBOL_GPL(sunrpc_cache_lookup); |