mm: swap: free up swap on mm reap

With the swap slots feature, the freeing up of swap space
during the mm reap (kill or oom reap for e.g.) is delayed
till a threshold is reached. This is done mainly to reduce
the fragmentation of swap space. The caching is done per
cpu. But with zram, this causes zram space consumed not
being free up immediately on task kill or oom reap. Since
we don't use THP swap, fragmentation is not a concern. So
free up the slots without caching when the swap device is
a synchronous one. Note that this does not disable the swap
slots feature which can take into effect during swap slots
allocation.

Change-Id: I9985edfdd88723d38ae905496556e07fb8bf09af
Signed-off-by: Vinayak Menon <vinmenon@codeaurora.org>
This commit is contained in:
Vinayak Menon 2018-07-05 17:08:26 +05:30
parent e86137b27a
commit 22d014495f

View File

@ -273,9 +273,12 @@ static int refill_swap_slots_cache(struct swap_slots_cache *cache)
int free_swap_slot(swp_entry_t entry)
{
struct swap_slots_cache *cache;
struct swap_info_struct *si;
si = swp_swap_info(entry);
cache = raw_cpu_ptr(&swp_slots);
if (use_swap_slot_cache && cache->slots_ret) {
if (!(si->flags & SWP_SYNCHRONOUS_IO) &&
use_swap_slot_cache && cache->slots_ret) {
spin_lock_irq(&cache->free_lock);
/* Swap slots cache may be deactivated before acquiring lock */
if (!use_swap_slot_cache || !cache->slots_ret) {