diff options
Diffstat (limited to 'fs/nfsd/nfscache.c')
| -rw-r--r-- | fs/nfsd/nfscache.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/fs/nfsd/nfscache.c b/fs/nfsd/nfscache.c index 62c1ee128aeb..ca05f6dc3544 100644 --- a/fs/nfsd/nfscache.c +++ b/fs/nfsd/nfscache.c | |||
| @@ -102,7 +102,8 @@ nfsd_reply_cache_free_locked(struct svc_cacherep *rp) | |||
| 102 | { | 102 | { |
| 103 | if (rp->c_type == RC_REPLBUFF) | 103 | if (rp->c_type == RC_REPLBUFF) |
| 104 | kfree(rp->c_replvec.iov_base); | 104 | kfree(rp->c_replvec.iov_base); |
| 105 | hlist_del(&rp->c_hash); | 105 | if (!hlist_unhashed(&rp->c_hash)) |
| 106 | hlist_del(&rp->c_hash); | ||
| 106 | list_del(&rp->c_lru); | 107 | list_del(&rp->c_lru); |
| 107 | --num_drc_entries; | 108 | --num_drc_entries; |
| 108 | kmem_cache_free(drc_slab, rp); | 109 | kmem_cache_free(drc_slab, rp); |
| @@ -118,6 +119,10 @@ nfsd_reply_cache_free(struct svc_cacherep *rp) | |||
| 118 | 119 | ||
| 119 | int nfsd_reply_cache_init(void) | 120 | int nfsd_reply_cache_init(void) |
| 120 | { | 121 | { |
| 122 | INIT_LIST_HEAD(&lru_head); | ||
| 123 | max_drc_entries = nfsd_cache_size_limit(); | ||
| 124 | num_drc_entries = 0; | ||
| 125 | |||
| 121 | register_shrinker(&nfsd_reply_cache_shrinker); | 126 | register_shrinker(&nfsd_reply_cache_shrinker); |
| 122 | drc_slab = kmem_cache_create("nfsd_drc", sizeof(struct svc_cacherep), | 127 | drc_slab = kmem_cache_create("nfsd_drc", sizeof(struct svc_cacherep), |
| 123 | 0, 0, NULL); | 128 | 0, 0, NULL); |
| @@ -128,10 +133,6 @@ int nfsd_reply_cache_init(void) | |||
| 128 | if (!cache_hash) | 133 | if (!cache_hash) |
| 129 | goto out_nomem; | 134 | goto out_nomem; |
| 130 | 135 | ||
| 131 | INIT_LIST_HEAD(&lru_head); | ||
| 132 | max_drc_entries = nfsd_cache_size_limit(); | ||
| 133 | num_drc_entries = 0; | ||
| 134 | |||
| 135 | return 0; | 136 | return 0; |
| 136 | out_nomem: | 137 | out_nomem: |
| 137 | printk(KERN_ERR "nfsd: failed to allocate reply cache\n"); | 138 | printk(KERN_ERR "nfsd: failed to allocate reply cache\n"); |
