--- 2.4.9aa3/mm/page_alloc.c.~1~ Sun Aug 19 07:34:24 2001 +++ 2.4.9aa3/mm/page_alloc.c Mon Aug 20 02:53:13 2001 @@ -585,23 +585,20 @@ */ unsigned int nr_free_buffer_pages (void) { + pg_data_t *pgdat = pgdat_list; unsigned int sum = 0; zonelist_t *zonelist; zone_t **zonep, *zone; - zonelist = contig_page_data.node_zonelists + (GFP_NOFS & GFP_ZONEMASK); - zonep = zonelist->zones; + do { + zonelist = pgdat->node_zonelists + __GFP_HIGHMEM; + zonep = zonelist->zones; - for (zone = *zonep++; zone; zone = *zonep++) { - unsigned int pages = zone->free_pages + - zone->inactive_clean_pages + - zone->inactive_dirty_pages; + for (zone = *zonep++; zone; zone = *zonep++) + sum += zone->free_pages + zone->inactive_clean_pages + zone->inactive_dirty_pages; - /* Allow the buffer cache to fill up at least "pages_high" pages */ - if (pages < zone->pages_high) - pages = zone->pages_high; - sum += pages; - } + pgdat = pgdat->node_next; + } while (pgdat); return sum; }