qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH] page_cache: dup memory on insert


From: Peter Maydell
Subject: Re: [Qemu-devel] [PATCH] page_cache: dup memory on insert
Date: Mon, 25 Feb 2013 13:08:02 +0000

On 25 February 2013 12:50, Peter Lieven <address@hidden> wrote:
> sth like this?
>
> diff --git a/page_cache.c b/page_cache.c
> index 376f1db..04205ee 100644
> --- a/page_cache.c
> +++ b/page_cache.c
> @@ -196,21 +196,19 @@ int64_t cache_resize(PageCache *cache, int64_t 
> new_num_pages)
>              /* 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) {
> -                /* 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;
> +                    continue;
>                  }
> -            } 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;
>          }
>      }
>
> +    g_free(cache->page_cache);
>      cache->page_cache = new_cache->page_cache;
>      cache->max_num_items = new_cache->max_num_items;
>      cache->num_items = new_cache->num_items;

Yeah, more or less. You could roll the two if () conditions
into "if (new_it->it_data && new_it->it_age >= old_it->it_age)"
but that's just a style thing.

-- PMM



reply via email to

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