On Mon, 9 Mar 2020 17:09:40 +0800 Wei Yang <richard.weiyang@xxxxxxxxxxxxxxxxx> wrote: > Currently we would clear the cache slot if it is used. While this is not > necessary, since this entry would not be used until refilled. > > Leave it untouched and assigned the value directly to entry which makes > the code little more neat. > > Also this patch merges the else and if, since this is the only case we > refill and repeat swap cache. cc Tim, who can hopefully remember how this code works ;) > --- a/mm/swap_slots.c > +++ b/mm/swap_slots.c > @@ -309,7 +309,7 @@ int free_swap_slot(swp_entry_t entry) > > swp_entry_t get_swap_page(struct page *page) > { > - swp_entry_t entry, *pentry; > + swp_entry_t entry; > struct swap_slots_cache *cache; > > entry.val = 0; > @@ -336,13 +336,10 @@ swp_entry_t get_swap_page(struct page *page) > if (cache->slots) { > repeat: > if (cache->nr) { > - pentry = &cache->slots[cache->cur++]; > - entry = *pentry; > - pentry->val = 0; > + entry = cache->slots[cache->cur++]; > cache->nr--; > - } else { > - if (refill_swap_slots_cache(cache)) > - goto repeat; > + } else if (refill_swap_slots_cache(cache)) { > + goto repeat; > } > } > mutex_unlock(&cache->alloc_lock); > -- > 2.20.1 (Apple Git-117)