diff options
author | Christoph Lameter <clameter@sgi.com> | 2006-01-08 04:00:54 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-01-08 23:12:42 -0500 |
commit | ee27497df36823f2793212cad0997c044eb0e1eb (patch) | |
tree | 854dded3b0277b0962b3c9a39c9cdb446654154b /mm/vmscan.c | |
parent | 1480a540c98525640174a7eadd712378fcd6fd63 (diff) |
[PATCH] SwapMig: Drop unused pages immediately
Drop unused pages immediately
If a page is encountered that is only referenced by the migration code then
there is no reason to swap or migrate the page. Release the page by calling
move_to_lru().
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 | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/mm/vmscan.c b/mm/vmscan.c index 5393b093a87b..73ba4046ed27 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c | |||
@@ -689,6 +689,11 @@ redo: | |||
689 | list_for_each_entry_safe(page, page2, l, lru) { | 689 | list_for_each_entry_safe(page, page2, l, lru) { |
690 | cond_resched(); | 690 | cond_resched(); |
691 | 691 | ||
692 | if (page_count(page) == 1) { | ||
693 | /* page was freed from under us. So we are done. */ | ||
694 | move_to_lru(page); | ||
695 | continue; | ||
696 | } | ||
692 | /* | 697 | /* |
693 | * Skip locked pages during the first two passes to give the | 698 | * Skip locked pages during the first two passes to give the |
694 | * functions holding the lock time to release the page. Later we | 699 | * functions holding the lock time to release the page. Later we |