diff options
author | Christoph Lameter <clameter@sgi.com> | 2006-06-23 05:03:38 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-06-23 10:42:51 -0400 |
commit | 04e62a29bf157ce1edd168f2b71b533c80d13628 (patch) | |
tree | 7f0d5a58eeef2c2e08da86dc7141a1ccd050a37d /include | |
parent | 442c9137de8d769053e81d325709dca72f0b5e44 (diff) |
[PATCH] More page migration: use migration entries for file pages
This implements the use of migration entries to preserve ptes of file backed
pages during migration. Processes can therefore be migrated back and forth
without loosing their connection to pagecache pages.
Note that we implement the migration entries only for linear mappings.
Nonlinear mappings still require the unmapping of the ptes for migration.
And another writepage() ugliness shows up. writepage() can drop the page
lock. Therefore we have to remove migration ptes before calling writepages()
in order to avoid having migration entries point to unlocked pages.
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 'include')
-rw-r--r-- | include/linux/swap.h | 15 |
1 files changed, 0 insertions, 15 deletions
diff --git a/include/linux/swap.h b/include/linux/swap.h index 7cee73ef4f15..1cf234e8df55 100644 --- a/include/linux/swap.h +++ b/include/linux/swap.h | |||
@@ -186,20 +186,6 @@ extern unsigned long shrink_all_memory(unsigned long nr_pages); | |||
186 | extern int vm_swappiness; | 186 | extern int vm_swappiness; |
187 | extern int remove_mapping(struct address_space *mapping, struct page *page); | 187 | extern int remove_mapping(struct address_space *mapping, struct page *page); |
188 | 188 | ||
189 | /* possible outcome of pageout() */ | ||
190 | typedef enum { | ||
191 | /* failed to write page out, page is locked */ | ||
192 | PAGE_KEEP, | ||
193 | /* move page to the active list, page is locked */ | ||
194 | PAGE_ACTIVATE, | ||
195 | /* page has been sent to the disk successfully, page is unlocked */ | ||
196 | PAGE_SUCCESS, | ||
197 | /* page is clean and locked */ | ||
198 | PAGE_CLEAN, | ||
199 | } pageout_t; | ||
200 | |||
201 | extern pageout_t pageout(struct page *page, struct address_space *mapping); | ||
202 | |||
203 | #ifdef CONFIG_NUMA | 189 | #ifdef CONFIG_NUMA |
204 | extern int zone_reclaim_mode; | 190 | extern int zone_reclaim_mode; |
205 | extern int zone_reclaim_interval; | 191 | extern int zone_reclaim_interval; |
@@ -259,7 +245,6 @@ extern int remove_exclusive_swap_page(struct page *); | |||
259 | struct backing_dev_info; | 245 | struct backing_dev_info; |
260 | 246 | ||
261 | extern spinlock_t swap_lock; | 247 | extern spinlock_t swap_lock; |
262 | extern int remove_vma_swap(struct vm_area_struct *vma, struct page *page); | ||
263 | 248 | ||
264 | /* linux/mm/thrash.c */ | 249 | /* linux/mm/thrash.c */ |
265 | extern struct mm_struct * swap_token_mm; | 250 | extern struct mm_struct * swap_token_mm; |