Browse Source

[stat_cache] pass age param for stat cache cleanup

personal/stbuehler/ci-build
Glenn Strauss 3 years ago
parent
commit
47d006ae47
  1. 20
      src/stat_cache.c

20
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;
}

Loading…
Cancel
Save