mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-03 18:20:25 +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.
 | 
							 * thread doing COW.
 | 
				
			||||||
		 */
 | 
							 */
 | 
				
			||||||
		ptep_clear_flush_notify(vma, address, page_table);
 | 
							ptep_clear_flush_notify(vma, address, page_table);
 | 
				
			||||||
		SetPageSwapBacked(new_page);
 | 
					 | 
				
			||||||
		page_add_new_anon_rmap(new_page, vma, address);
 | 
							page_add_new_anon_rmap(new_page, vma, address);
 | 
				
			||||||
		set_pte_at(mm, address, page_table, entry);
 | 
							set_pte_at(mm, address, page_table, entry);
 | 
				
			||||||
		update_mmu_cache(vma, address, 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))
 | 
						if (!pte_none(*page_table))
 | 
				
			||||||
		goto release;
 | 
							goto release;
 | 
				
			||||||
	inc_mm_counter(mm, anon_rss);
 | 
						inc_mm_counter(mm, anon_rss);
 | 
				
			||||||
	SetPageSwapBacked(page);
 | 
					 | 
				
			||||||
	page_add_new_anon_rmap(page, vma, address);
 | 
						page_add_new_anon_rmap(page, vma, address);
 | 
				
			||||||
	set_pte_at(mm, address, page_table, entry);
 | 
						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);
 | 
								entry = maybe_mkwrite(pte_mkdirty(entry), vma);
 | 
				
			||||||
		if (anon) {
 | 
							if (anon) {
 | 
				
			||||||
			inc_mm_counter(mm, anon_rss);
 | 
								inc_mm_counter(mm, anon_rss);
 | 
				
			||||||
			SetPageSwapBacked(page);
 | 
					 | 
				
			||||||
			page_add_new_anon_rmap(page, vma, address);
 | 
								page_add_new_anon_rmap(page, vma, address);
 | 
				
			||||||
		} else {
 | 
							} else {
 | 
				
			||||||
			inc_mm_counter(mm, file_rss);
 | 
								inc_mm_counter(mm, file_rss);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -47,7 +47,6 @@
 | 
				
			||||||
#include <linux/rmap.h>
 | 
					#include <linux/rmap.h>
 | 
				
			||||||
#include <linux/rcupdate.h>
 | 
					#include <linux/rcupdate.h>
 | 
				
			||||||
#include <linux/module.h>
 | 
					#include <linux/module.h>
 | 
				
			||||||
#include <linux/mm_inline.h>
 | 
					 | 
				
			||||||
#include <linux/kallsyms.h>
 | 
					#include <linux/kallsyms.h>
 | 
				
			||||||
#include <linux/memcontrol.h>
 | 
					#include <linux/memcontrol.h>
 | 
				
			||||||
#include <linux/mmu_notifier.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)
 | 
						struct vm_area_struct *vma, unsigned long address)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	VM_BUG_ON(address < vma->vm_start || address >= vma->vm_end);
 | 
						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);
 | 
						__page_set_anon_rmap(page, vma, address);
 | 
				
			||||||
	if (page_evictable(page, vma))
 | 
						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
 | 
						else
 | 
				
			||||||
		add_page_to_unevictable_list(page);
 | 
							add_page_to_unevictable_list(page);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue