qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 2/4] Fix cache_resize to keep old entry age


From: Juan Quintela
Subject: Re: [Qemu-devel] [PATCH 2/4] Fix cache_resize to keep old entry age
Date: Mon, 25 Feb 2013 17:34:50 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.2 (gnu/linux)

Orit Wasserman <address@hidden> wrote:
> Instead of using cache_insert do the update itself
>
> Signed-off-by: Orit Wasserman <address@hidden>
> ---
>  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.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]