mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	mm: further cleanup page_add_new_anon_rmap
Moving lru_cache_add_active_or_unevictable() into page_add_new_anon_rmap() was good but stupid: we can and should SetPageSwapBacked() there too; and we know for sure that this anonymous, swap-backed page is not file cache. Signed-off-by: Hugh Dickins <hugh@veritas.com> Cc: Lee Schermerhorn <lee.schermerhorn@hp.com> Cc: Nick Piggin <nickpiggin@yahoo.com.au> Acked-by: Rik van Riel <riel@redhat.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
		
							parent
							
								
									2afd1c928f
								
							
						
					
					
						commit
						cbf84b7add
					
				
					 2 changed files with 3 additions and 6 deletions
				
			
		| 
						 | 
				
			
			@ -1948,7 +1948,6 @@ static int do_wp_page(struct mm_struct *mm, struct vm_area_struct *vma,
 | 
			
		|||
		 * thread doing COW.
 | 
			
		||||
		 */
 | 
			
		||||
		ptep_clear_flush_notify(vma, address, page_table);
 | 
			
		||||
		SetPageSwapBacked(new_page);
 | 
			
		||||
		page_add_new_anon_rmap(new_page, vma, address);
 | 
			
		||||
		set_pte_at(mm, address, page_table, entry);
 | 
			
		||||
		update_mmu_cache(vma, address, entry);
 | 
			
		||||
| 
						 | 
				
			
			@ -2444,7 +2443,6 @@ static int do_anonymous_page(struct mm_struct *mm, struct vm_area_struct *vma,
 | 
			
		|||
	if (!pte_none(*page_table))
 | 
			
		||||
		goto release;
 | 
			
		||||
	inc_mm_counter(mm, anon_rss);
 | 
			
		||||
	SetPageSwapBacked(page);
 | 
			
		||||
	page_add_new_anon_rmap(page, vma, address);
 | 
			
		||||
	set_pte_at(mm, address, page_table, entry);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -2592,7 +2590,6 @@ static int __do_fault(struct mm_struct *mm, struct vm_area_struct *vma,
 | 
			
		|||
			entry = maybe_mkwrite(pte_mkdirty(entry), vma);
 | 
			
		||||
		if (anon) {
 | 
			
		||||
			inc_mm_counter(mm, anon_rss);
 | 
			
		||||
			SetPageSwapBacked(page);
 | 
			
		||||
			page_add_new_anon_rmap(page, vma, address);
 | 
			
		||||
		} else {
 | 
			
		||||
			inc_mm_counter(mm, file_rss);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -47,7 +47,6 @@
 | 
			
		|||
#include <linux/rmap.h>
 | 
			
		||||
#include <linux/rcupdate.h>
 | 
			
		||||
#include <linux/module.h>
 | 
			
		||||
#include <linux/mm_inline.h>
 | 
			
		||||
#include <linux/kallsyms.h>
 | 
			
		||||
#include <linux/memcontrol.h>
 | 
			
		||||
#include <linux/mmu_notifier.h>
 | 
			
		||||
| 
						 | 
				
			
			@ -673,10 +672,11 @@ void page_add_new_anon_rmap(struct page *page,
 | 
			
		|||
	struct vm_area_struct *vma, unsigned long address)
 | 
			
		||||
{
 | 
			
		||||
	VM_BUG_ON(address < vma->vm_start || address >= vma->vm_end);
 | 
			
		||||
	atomic_set(&page->_mapcount, 0); /* elevate count by 1 (starts at -1) */
 | 
			
		||||
	SetPageSwapBacked(page);
 | 
			
		||||
	atomic_set(&page->_mapcount, 0); /* increment count (starts at -1) */
 | 
			
		||||
	__page_set_anon_rmap(page, vma, address);
 | 
			
		||||
	if (page_evictable(page, vma))
 | 
			
		||||
		lru_cache_add_lru(page, LRU_ACTIVE + page_is_file_cache(page));
 | 
			
		||||
		lru_cache_add_lru(page, LRU_ACTIVE_ANON);
 | 
			
		||||
	else
 | 
			
		||||
		add_page_to_unevictable_list(page);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue