mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	mm: remove SWAP_MLOCK in ttu
ttu doesn't need to return SWAP_MLOCK. Instead, just return SWAP_FAIL because it means the page is not-swappable so it should move to another LRU list(active or unevictable). putback friends will move it to right list depending on the page's LRU flag. Link: http://lkml.kernel.org/r/1489555493-14659-6-git-send-email-minchan@kernel.org Signed-off-by: Minchan Kim <minchan@kernel.org> Cc: Anshuman Khandual <khandual@linux.vnet.ibm.com> Cc: Hillf Danton <hillf.zj@alibaba-inc.com> Cc: Johannes Weiner <hannes@cmpxchg.org> Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com> Cc: Michal Hocko <mhocko@suse.com> Cc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com> Cc: Vlastimil Babka <vbabka@suse.cz> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
		
							parent
							
								
									192d723256
								
							
						
					
					
						commit
						ad6b67041a
					
				
					 3 changed files with 8 additions and 16 deletions
				
			
		| 
						 | 
				
			
			@ -297,6 +297,5 @@ static inline int page_mkclean(struct page *page)
 | 
			
		|||
#define SWAP_SUCCESS	0
 | 
			
		||||
#define SWAP_AGAIN	1
 | 
			
		||||
#define SWAP_FAIL	2
 | 
			
		||||
#define SWAP_MLOCK	3
 | 
			
		||||
 | 
			
		||||
#endif	/* _LINUX_RMAP_H */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1329,7 +1329,7 @@ static int try_to_unmap_one(struct page *page, struct vm_area_struct *vma,
 | 
			
		|||
					 */
 | 
			
		||||
					mlock_vma_page(page);
 | 
			
		||||
				}
 | 
			
		||||
				ret = SWAP_MLOCK;
 | 
			
		||||
				ret = SWAP_FAIL;
 | 
			
		||||
				page_vma_mapped_walk_done(&pvmw);
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
| 
						 | 
				
			
			@ -1506,7 +1506,6 @@ static int page_mapcount_is_zero(struct page *page)
 | 
			
		|||
 * SWAP_SUCCESS	- we succeeded in removing all mappings
 | 
			
		||||
 * SWAP_AGAIN	- we missed a mapping, try again later
 | 
			
		||||
 * SWAP_FAIL	- the page is unswappable
 | 
			
		||||
 * SWAP_MLOCK	- page is mlocked.
 | 
			
		||||
 */
 | 
			
		||||
int try_to_unmap(struct page *page, enum ttu_flags flags)
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										20
									
								
								mm/vmscan.c
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								mm/vmscan.c
									
									
									
									
									
								
							| 
						 | 
				
			
			@ -987,7 +987,7 @@ static unsigned long shrink_page_list(struct list_head *page_list,
 | 
			
		|||
		sc->nr_scanned++;
 | 
			
		||||
 | 
			
		||||
		if (unlikely(!page_evictable(page)))
 | 
			
		||||
			goto cull_mlocked;
 | 
			
		||||
			goto activate_locked;
 | 
			
		||||
 | 
			
		||||
		if (!sc->may_unmap && page_mapped(page))
 | 
			
		||||
			goto keep_locked;
 | 
			
		||||
| 
						 | 
				
			
			@ -1152,8 +1152,6 @@ static unsigned long shrink_page_list(struct list_head *page_list,
 | 
			
		|||
				goto activate_locked;
 | 
			
		||||
			case SWAP_AGAIN:
 | 
			
		||||
				goto keep_locked;
 | 
			
		||||
			case SWAP_MLOCK:
 | 
			
		||||
				goto cull_mlocked;
 | 
			
		||||
			case SWAP_SUCCESS:
 | 
			
		||||
				; /* try to free the page below */
 | 
			
		||||
			}
 | 
			
		||||
| 
						 | 
				
			
			@ -1295,20 +1293,16 @@ static unsigned long shrink_page_list(struct list_head *page_list,
 | 
			
		|||
		list_add(&page->lru, &free_pages);
 | 
			
		||||
		continue;
 | 
			
		||||
 | 
			
		||||
cull_mlocked:
 | 
			
		||||
		if (PageSwapCache(page))
 | 
			
		||||
			try_to_free_swap(page);
 | 
			
		||||
		unlock_page(page);
 | 
			
		||||
		list_add(&page->lru, &ret_pages);
 | 
			
		||||
		continue;
 | 
			
		||||
 | 
			
		||||
activate_locked:
 | 
			
		||||
		/* Not a candidate for swapping, so reclaim swap space. */
 | 
			
		||||
		if (PageSwapCache(page) && mem_cgroup_swap_full(page))
 | 
			
		||||
		if (PageSwapCache(page) && (mem_cgroup_swap_full(page) ||
 | 
			
		||||
						PageMlocked(page)))
 | 
			
		||||
			try_to_free_swap(page);
 | 
			
		||||
		VM_BUG_ON_PAGE(PageActive(page), page);
 | 
			
		||||
		SetPageActive(page);
 | 
			
		||||
		pgactivate++;
 | 
			
		||||
		if (!PageMlocked(page)) {
 | 
			
		||||
			SetPageActive(page);
 | 
			
		||||
			pgactivate++;
 | 
			
		||||
		}
 | 
			
		||||
keep_locked:
 | 
			
		||||
		unlock_page(page);
 | 
			
		||||
keep:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue