Messages in this thread | | | From | "Hillf Danton" <> | Subject | Re: [PATCH 7/8] mm/swap: Add cache for swap slots allocation | Date | Thu, 29 Sep 2016 15:04:03 +0800 |
| |
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? Or fold the relevant two allocations into one?
> + mutex_unlock(&swap_slots_cache_mutex); > +} > thanks Hillf
| |