Commit a0ee2031 authored by Orit Wasserman's avatar Orit Wasserman Committed by Juan Quintela
Browse files

Fix cache_resize to keep old entry age



Instead of using cache_insert do the update itself

Signed-off-by: default avatarOrit Wasserman <owasserm@redhat.com>

Reviewed-by: default avatarPeter Maydell <peter.maydell@linaro.org>
Signed-off-by: default avatarJuan Quintela <quintela@redhat.com>
parent 0db65d62
Loading
Loading
Loading
Loading
+9 −10
Original line number Diff line number Diff line
@@ -192,19 +192,18 @@ 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 {
                if (!new_it->it_data) {
                    new_cache->num_items++;
                }
                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;
            }
            } else {
                cache_insert(new_cache, old_it->it_addr, old_it->it_data);
            }
        }
    }