--- linux/mm/page_alloc.c.orig Wed Oct 4 21:27:41 2000 +++ linux/mm/page_alloc.c Wed Oct 4 21:32:17 2000 @@ -268,7 +268,7 @@ static struct page * __alloc_pages_limit water_mark = z->pages_high; } - if (z->free_pages + z->inactive_clean_pages > water_mark) { + if (z->free_pages + z->inactive_clean_pages >= water_mark) { struct page *page = NULL; /* If possible, reclaim a page directly. */ if (direct_reclaim && z->free_pages < z->pages_min + 8) @@ -329,7 +329,7 @@ struct page * __alloc_pages(zonelist_t * * wake up bdflush. */ else if (free_shortage() && nr_inactive_dirty_pages > free_shortage() - && nr_inactive_dirty_pages > freepages.high) + && nr_inactive_dirty_pages >= freepages.high) wakeup_bdflush(0); try_again: @@ -347,7 +347,7 @@ try_again: if (!z->size) BUG(); - if (z->free_pages > z->pages_low) { + if (z->free_pages >= z->pages_low) { page = rmqueue(z, order); if (page) return page;