Index: linux-2.6.14-rc5-mm1/mm/vmscan.c =================================================================== --- linux-2.6.14-rc5-mm1.orig/mm/vmscan.c 2005-10-25 08:09:52.000000000 -0700 +++ linux-2.6.14-rc5-mm1/mm/vmscan.c 2005-10-26 09:42:34.000000000 -0700 @@ -590,22 +590,22 @@ static int isolate_lru_pages(struct zone { struct page *page; int scanned = 0; - int rc; while (scanned++ < nr_to_scan && !list_empty(src)) { page = lru_to_page(src); prefetchw_prev_lru_page(page, src, flags); - rc = __isolate_lru_page(zone, page); - - BUG_ON(rc == 0); /* PageLRU(page) must be true */ - - if (rc == 1) /* Succeeded to isolate page */ + switch (__isolate_lru_page(zone, page)) { + case 1: + /* Succeeded to isolate page */ list_add(&page->lru, dst); - - if (rc == -1) { /* Not possible to isolate */ - list_del(&page->lru); - list_add(&page->lru, src); + break; + case -1: + /* Not possible to isolate */ + list_move(&page->lru, src); + break; + default: + BUG(); } }