diff options
author | Christoph Lameter <clameter@sgi.com> | 2006-02-01 06:05:39 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-02-01 11:53:16 -0500 |
commit | a3351e525e4768c29aa5d22ef59b5b38e0361e53 (patch) | |
tree | 457ab54f402b471c5158e8b361d059e88ab8cd62 /mm/vmscan.c | |
parent | a48d07afdf18212de22b959715b16793c5a6e57a (diff) |
[PATCH] Direct Migration V9: remove_from_swap() to remove swap ptes
Add remove_from_swap
remove_from_swap() allows the restoration of the pte entries that existed
before page migration occurred for anonymous pages by walking the reverse
maps. This reduces swap use and establishes regular pte's without the need
for page faults.
Signed-off-by: Christoph Lameter <clameter@sgi.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'mm/vmscan.c')
-rw-r--r-- | mm/vmscan.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/mm/vmscan.c b/mm/vmscan.c index 8f326ce2b690..5e98b86feb74 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c | |||
@@ -804,6 +804,15 @@ int migrate_page(struct page *newpage, struct page *page) | |||
804 | 804 | ||
805 | migrate_page_copy(newpage, page); | 805 | migrate_page_copy(newpage, page); |
806 | 806 | ||
807 | /* | ||
808 | * Remove auxiliary swap entries and replace | ||
809 | * them with real ptes. | ||
810 | * | ||
811 | * Note that a real pte entry will allow processes that are not | ||
812 | * waiting on the page lock to use the new page via the page tables | ||
813 | * before the new page is unlocked. | ||
814 | */ | ||
815 | remove_from_swap(newpage); | ||
807 | return 0; | 816 | return 0; |
808 | } | 817 | } |
809 | 818 | ||