From 47d006ae47c5dae1e2ae4555e4805dcd0a5f2471 Mon Sep 17 00:00:00 2001 From: Glenn Strauss Date: Sun, 28 Apr 2019 00:01:26 -0400 Subject: [PATCH] [stat_cache] pass age param for stat cache cleanup --- src/stat_cache.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/stat_cache.c b/src/stat_cache.c index 887b458b..5da7ccba 100644 --- a/src/stat_cache.c +++ b/src/stat_cache.c @@ -795,24 +795,24 @@ int stat_cache_open_rdonly_fstat (buffer *name, struct stat *st, int symlinks) { * and remove them in a second loop */ -static int stat_cache_tag_old_entries(server *srv, splay_tree *t, int *keys, size_t *ndx) { +static int stat_cache_tag_old_entries(server *srv, splay_tree *t, int *keys, size_t *ndx, time_t max_age) { stat_cache_entry *sce; if (!t) return 0; - stat_cache_tag_old_entries(srv, t->left, keys, ndx); - stat_cache_tag_old_entries(srv, t->right, keys, ndx); + stat_cache_tag_old_entries(srv, t->left, keys, ndx, max_age); + stat_cache_tag_old_entries(srv, t->right, keys, ndx, max_age); sce = t->data; - if (srv->cur_ts - sce->stat_ts > 2) { + if (srv->cur_ts - sce->stat_ts > max_age) { keys[(*ndx)++] = t->key; } return 0; } -int stat_cache_trigger_cleanup(server *srv) { +static int stat_cache_periodic_cleanup(server *srv, time_t max_age) { stat_cache *sc; size_t max_ndx = 0, i; int *keys; @@ -824,7 +824,7 @@ int stat_cache_trigger_cleanup(server *srv) { keys = calloc(1, sizeof(int) * sc->files->size); force_assert(NULL != keys); - stat_cache_tag_old_entries(srv, sc->files, keys, &max_ndx); + stat_cache_tag_old_entries(srv, sc->files, keys, &max_ndx, max_age); for (i = 0; i < max_ndx; i++) { int ndx = keys[i]; @@ -844,3 +844,11 @@ int stat_cache_trigger_cleanup(server *srv) { return 0; } + +int stat_cache_trigger_cleanup(server *srv) { + time_t max_age = 2; + + stat_cache_periodic_cleanup(srv, max_age); + + return 0; +}