From: Rik van Riel OOM kills have been observed with 70% of the pages in lowmem being in the writeback state. If we count those pages in sc->nr_scanned, the VM should throttle and wait for IO completion, instead of OOM killing. (akpm: this is how the code was designed to work - we broke it six months ago). Signed-off-by: Rik van Riel Signed-off-by: Andrew Morton Index: linux-2.6.10-ck7/mm/vmscan.c =================================================================== --- linux-2.6.10-ck7.orig/mm/vmscan.c 2005-03-01 21:38:45.000000000 +1100 +++ linux-2.6.10-ck7/mm/vmscan.c 2005-03-01 21:38:48.000000000 +1100 @@ -369,14 +369,14 @@ static int shrink_list(struct list_head BUG_ON(PageActive(page)); - if (PageWriteback(page)) - goto keep_locked; - sc->nr_scanned++; /* Double the slab pressure for mapped and swapcache pages */ if (page_mapped(page) || PageSwapCache(page)) sc->nr_scanned++; + if (PageWriteback(page)) + goto keep_locked; + referenced = page_referenced(page, 1, sc->priority <= 0); /* In active use or really unfreeable? Activate it. */ if (referenced && page_mapping_inuse(page))