From 22e942dd201734761f37eaf9b10970e7da9d9a14 Mon Sep 17 00:00:00 2001 From: Poornima G Date: Tue, 25 Apr 2017 15:04:34 +0530 Subject: nl-cache: Fix the issue in refd_inode counting and prune the cache Change-Id: I5b9beb8502667bc3876385900bc01b6491348716 BUG: 1442569 Signed-off-by: Poornima G Reviewed-on: https://review.gluster.org/17110 Reviewed-by: Pranith Kumar Karampuri Tested-by: Pranith Kumar Karampuri Smoke: Gluster Build System NetBSD-regression: NetBSD Build System CentOS-regression: Gluster Build System Reviewed-by: Niels de Vos --- xlators/performance/nl-cache/src/nl-cache-helper.c | 8 +++++--- xlators/performance/nl-cache/src/nl-cache.c | 8 +++++--- xlators/performance/nl-cache/src/nl-cache.h | 3 +++ 3 files changed, 13 insertions(+), 6 deletions(-) (limited to 'xlators/performance/nl-cache/src') diff --git a/xlators/performance/nl-cache/src/nl-cache-helper.c b/xlators/performance/nl-cache/src/nl-cache-helper.c index 34438ed2d08..edc8c1639fe 100644 --- a/xlators/performance/nl-cache/src/nl-cache-helper.c +++ b/xlators/performance/nl-cache/src/nl-cache-helper.c @@ -558,13 +558,13 @@ __nlc_free_pe (xlator_t *this, nlc_ctx_t *nlc_ctx, nlc_pe_t *pe) { uint64_t pe_int = 0; nlc_conf_t *conf = NULL; - uint64_t *nlc_ctx_int = NULL; + uint64_t nlc_ctx_int = 0; conf = this->private; if (pe->inode) { inode_ctx_reset1 (pe->inode, this, &pe_int); - inode_ctx_get2 (pe->inode, this, nlc_ctx_int, NULL); + inode_ctx_get2 (pe->inode, this, &nlc_ctx_int, NULL); inode_unref (pe->inode); } list_del (&pe->list); @@ -1118,6 +1118,8 @@ nlc_dump_inodectx (xlator_t *this, inode_t *inode) gf_proc_dump_write ("state", "%"PRIu64, nlc_ctx->state); gf_proc_dump_write ("timer", "%p", nlc_ctx->timer); gf_proc_dump_write ("cache-time", "%lld", nlc_ctx->cache_time); + gf_proc_dump_write ("cache-size", "%zu", nlc_ctx->cache_size); + gf_proc_dump_write ("refd-inodes", "%"PRIu64, nlc_ctx->refd_inodes); if (IS_PE_VALID (nlc_ctx->state)) list_for_each_entry_safe (pe, tmp, &nlc_ctx->pe, list) { @@ -1130,7 +1132,7 @@ nlc_dump_inodectx (xlator_t *this, inode_t *inode) gf_proc_dump_write ("ne", "%s", ne->name); } - UNLOCK (&nlc_ctx->lock); + UNLOCK (&nlc_ctx->lock); } if (ret && nlc_ctx) diff --git a/xlators/performance/nl-cache/src/nl-cache.c b/xlators/performance/nl-cache/src/nl-cache.c index a34b752d260..f301b2d06dd 100644 --- a/xlators/performance/nl-cache/src/nl-cache.c +++ b/xlators/performance/nl-cache/src/nl-cache.c @@ -55,6 +55,8 @@ nlc_dentry_op (call_frame_t *frame, xlator_t *this, gf_boolean_t multilink) default: return; } + + nlc_lru_prune (this, NULL); out: return; } @@ -765,10 +767,10 @@ struct volume_options options[] = { "a while and the cache is cleared based on LRU", }, { .key = {"nl-cache-timeout"}, - .type = GF_OPTION_TYPE_INT, + .type = GF_OPTION_TYPE_TIME, .min = 0, - .max = 600, - .default_value = "600", + .max = 1 * GF_DAY_IN_SECONDS, + .default_value = "60", .description = "Time period after which cache has to be refreshed", }, { .key = {NULL} }, diff --git a/xlators/performance/nl-cache/src/nl-cache.h b/xlators/performance/nl-cache/src/nl-cache.h index e94641c40d0..10ec022d05c 100644 --- a/xlators/performance/nl-cache/src/nl-cache.h +++ b/xlators/performance/nl-cache/src/nl-cache.h @@ -170,4 +170,7 @@ nlc_clear_all_cache (xlator_t *this); void nlc_disable_cache (xlator_t *this); +void +nlc_lru_prune (xlator_t *this, inode_t *inode); + #endif /* __NL_CACHE_H__ */ -- cgit