From: Nick Piggin If refill_inactive_zone() is running in its dont-reclaim-mapped-memory mode we are tossing away the referenced infomation on active mapped pages. So put that info back if we're not going to deactivate the page. --- mm/vmscan.c | 10 +++++----- 1 files changed, 5 insertions(+), 5 deletions(-) diff -puN mm/vmscan.c~vm-refill_inactive-preserve-referenced mm/vmscan.c --- 25/mm/vmscan.c~vm-refill_inactive-preserve-referenced 2004-02-28 23:37:56.000000000 -0800 +++ 25-akpm/mm/vmscan.c 2004-02-28 23:37:56.000000000 -0800 @@ -664,17 +664,17 @@ refill_inactive_zone(struct zone *zone, page = list_entry(l_hold.prev, struct page, lru); list_del(&page->lru); if (page_mapped(page)) { - pte_chain_lock(page); - if (page_mapped(page) && page_referenced(page)) { - pte_chain_unlock(page); + if (!reclaim_mapped) { list_add(&page->lru, &l_active); continue; } - pte_chain_unlock(page); - if (!reclaim_mapped) { + pte_chain_lock(page); + if (page_referenced(page)) { + pte_chain_unlock(page); list_add(&page->lru, &l_active); continue; } + pte_chain_unlock(page); } /* * FIXME: need to consider page_count(page) here if/when we _