Lines Matching full:slots
3 * Manage cache of swap slots to be used for and returned from
10 * We allocate the swap slots from the global pool and put
17 * lock. We do not reuse the returned slots directly but
19 * allows the slots to coaellesce and reduce fragmentation.
25 * The swap slots cache is protected by a mutex instead of
26 * a spin lock as when we search for slots with scan_swap_map,
42 /* Serialize swap slots cache enable/disable operations */
118 swp_entry_t *slots, *slots_ret; in alloc_swap_slot_cache() local
125 slots = kvcalloc(SWAP_SLOTS_CACHE_SIZE, sizeof(swp_entry_t), in alloc_swap_slot_cache()
127 if (!slots) in alloc_swap_slot_cache()
133 kvfree(slots); in alloc_swap_slot_cache()
139 if (cache->slots || cache->slots_ret) in alloc_swap_slot_cache()
152 * !cache->slots or !cache->slots_ret to know if it is safe to acquire in alloc_swap_slot_cache()
157 cache->slots = slots; in alloc_swap_slot_cache()
158 slots = NULL; in alloc_swap_slot_cache()
163 if (slots) in alloc_swap_slot_cache()
164 kvfree(slots); in alloc_swap_slot_cache()
174 swp_entry_t *slots = NULL; in drain_slots_cache_cpu() local
177 if ((type & SLOTS_CACHE) && cache->slots) { in drain_slots_cache_cpu()
179 swapcache_free_entries(cache->slots + cache->cur, cache->nr); in drain_slots_cache_cpu()
182 if (free_slots && cache->slots) { in drain_slots_cache_cpu()
183 kvfree(cache->slots); in drain_slots_cache_cpu()
184 cache->slots = NULL; in drain_slots_cache_cpu()
193 slots = cache->slots_ret; in drain_slots_cache_cpu()
197 if (slots) in drain_slots_cache_cpu()
198 kvfree(slots); in drain_slots_cache_cpu()
209 * left over slots are in cache when we remove in __drain_swap_slots_cache()
212 * on swap slots when allocating memory and need in __drain_swap_slots_cache()
213 * to return swap slots to global pool. in __drain_swap_slots_cache()
226 * fill any swap slots in slots cache of such cpu. in __drain_swap_slots_cache()
227 * There are no slots on such cpu that need to be drained. in __drain_swap_slots_cache()
254 "without swap slots cache.\n", __func__)) in enable_swap_slots_cache()
273 cache->slots, 1); in refill_swap_slots_cache()
285 /* Swap slots cache may be deactivated before acquiring lock */ in free_swap_slot()
292 * Return slots to global pool. in free_swap_slot()
334 if (likely(check_cache_active() && cache->slots)) { in get_swap_page()
336 if (cache->slots) { in get_swap_page()
339 pentry = &cache->slots[cache->cur++]; in get_swap_page()