Re: [PATCH 7/8] mm/swap: Add cache for swap slots allocation

From: Tim Chen
Date: Thu Sep 29 2016 - 12:50:53 EST


On Thu, 2016-09-29 at 15:04 +0800, Hillf Danton wrote:
> On Wednesday, September 28, 2016 1:19 AM Tim Chen wrote
> [...]
> >
> > +
> > +static int alloc_swap_slot_cache(int cpu)
> > +{
> > + struct swap_slots_cache *cache;
> > +
> > + cache = &per_cpu(swp_slots, cpu);
> > + mutex_init(&cache->alloc_lock);
> > + spin_lock_init(&cache->free_lock);
> > + cache->nr = 0;
> > + cache->cur = 0;
> > + cache->n_ret = 0;
> > + cache->slots = vzalloc(sizeof(swp_entry_t) * SWAP_SLOTS_CACHE_SIZE);
> > + if (!cache->slots) {
> > + swap_slot_cache_enabled = false;
> > + return -ENOMEM;
> > + }
> > + cache->slots_ret = vzalloc(sizeof(swp_entry_t) * SWAP_SLOTS_CACHE_SIZE);
> > + if (!cache->slots_ret) {
> > + vfree(cache->slots);
> > + swap_slot_cache_enabled = false;
> > + return -ENOMEM;
> > + }
> > + return 0;
> > +}
> > +
> [...]
> >
> > +
> > +static void free_slot_cache(int cpu)
> > +{
> > + struct swap_slots_cache *cache;
> > +
> > + mutex_lock(&swap_slots_cache_mutex);
> > + drain_slots_cache_cpu(cpu, SLOTS_CACHE | SLOTS_CACHE_RET);
> > + cache = &per_cpu(swp_slots, cpu);
> > + cache->nr = 0;
> > + cache->cur = 0;
> > + cache->n_ret = 0;
> > + vfree(cache->slots);
> Also free cache->slots_ret?

Good point. ÂShould free cache->slots_ret here.

Tim

>Â
>