mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-21 14:11:20 +00:00
[PATCH] mm: page_state opt
Optimise page_state manipulations by introducing interrupt unsafe accessors to page_state fields. Callers must provide their own locking (either disable interrupts or not update from interrupt context). Switch over the hot callsites that can easily be moved under interrupts off sections. Signed-off-by: Nick Piggin <npiggin@suse.de> Cc: 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
d3cb487149
commit
a74609fafa
4 changed files with 104 additions and 65 deletions
10
mm/rmap.c
10
mm/rmap.c
|
@ -451,7 +451,11 @@ static void __page_set_anon_rmap(struct page *page,
|
|||
|
||||
page->index = linear_page_index(vma, address);
|
||||
|
||||
inc_page_state(nr_mapped);
|
||||
/*
|
||||
* nr_mapped state can be updated without turning off
|
||||
* interrupts because it is not modified via interrupt.
|
||||
*/
|
||||
__inc_page_state(nr_mapped);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -498,7 +502,7 @@ void page_add_file_rmap(struct page *page)
|
|||
BUG_ON(!pfn_valid(page_to_pfn(page)));
|
||||
|
||||
if (atomic_inc_and_test(&page->_mapcount))
|
||||
inc_page_state(nr_mapped);
|
||||
__inc_page_state(nr_mapped);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -522,7 +526,7 @@ void page_remove_rmap(struct page *page)
|
|||
*/
|
||||
if (page_test_and_clear_dirty(page))
|
||||
set_page_dirty(page);
|
||||
dec_page_state(nr_mapped);
|
||||
__dec_page_state(nr_mapped);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue