Orit Wasserman <owass...@redhat.com> wrote: > Instead of using cache_insert do the update itself > > Signed-off-by: Orit Wasserman <owass...@redhat.com> > --- > page_cache.c | 16 ++++++---------- > 1 file changed, 6 insertions(+), 10 deletions(-) > > diff --git a/page_cache.c b/page_cache.c > index 748957b..21a4cde 100644 > --- a/page_cache.c > +++ b/page_cache.c > @@ -192,18 +192,14 @@ int64_t cache_resize(PageCache *cache, int64_t > new_num_pages) > if (old_it->it_addr != -1) { > /* check for collision, if there is, keep MRU page */ > new_it = cache_get_by_addr(new_cache, old_it->it_addr); > - if (new_it->it_data) { > + if (new_it->it_data && new_it->it_age >= old_it->it_age) { > /* keep the MRU page */ > - if (new_it->it_age >= old_it->it_age) { > - g_free(old_it->it_data); > - } else { > - g_free(new_it->it_data); > - new_it->it_data = old_it->it_data; > - new_it->it_age = old_it->it_age; > - new_it->it_addr = old_it->it_addr; > - } > + g_free(old_it->it_data); > } else { > - cache_insert(new_cache, old_it->it_addr, old_it->it_data); > + g_free(new_it->it_data); > + new_it->it_data = old_it->it_data; > + new_it->it_age = old_it->it_age; > + new_it->it_addr = old_it->it_addr; > } > } > }
We are missing if (!it->it_data) { cache->num_items++; } in the !new_it->it_date case. Later, Juan.