mirror of https://gitee.com/openkylin/linux.git
[PATCH] mm: zap_pte_range dont dirty anon
zap_pte_range already avoids wasting time to mark_page_accessed on anon pages: it can also skip anon set_page_dirty - the page only needs to be marked dirty if shared with another mm, but that will say pte_dirty too. Signed-off-by: Hugh Dickins <hugh@veritas.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
0c942a4539
commit
6237bcd948
10
mm/memory.c
10
mm/memory.c
|
@ -574,12 +574,14 @@ static void zap_pte_range(struct mmu_gather *tlb, pmd_t *pmd,
|
|||
addr) != page->index)
|
||||
set_pte_at(tlb->mm, addr, pte,
|
||||
pgoff_to_pte(page->index));
|
||||
if (pte_dirty(ptent))
|
||||
set_page_dirty(page);
|
||||
if (PageAnon(page))
|
||||
dec_mm_counter(tlb->mm, anon_rss);
|
||||
else if (pte_young(ptent))
|
||||
mark_page_accessed(page);
|
||||
else {
|
||||
if (pte_dirty(ptent))
|
||||
set_page_dirty(page);
|
||||
if (pte_young(ptent))
|
||||
mark_page_accessed(page);
|
||||
}
|
||||
tlb->freed++;
|
||||
page_remove_rmap(page);
|
||||
tlb_remove_page(tlb, page);
|
||||
|
|
Loading…
Reference in New Issue