--- mm/page_alloc.c.orig 2004-08-24 20:37:53.000000000 -0300 +++ mm/page_alloc.c 2004-08-24 22:51:49.498375608 -0300 @@ -1021,11 +1021,12 @@ void show_free_areas(void) { struct page_state ps; - int cpu, temperature; + int cpu, temperature, i; unsigned long active; unsigned long inactive; unsigned long free; struct zone *zone; + unsigned int swap_pages = 0; for_each_zone(zone) { show_node(zone); @@ -1086,6 +1087,8 @@ " active:%lukB" " inactive:%lukB" " present:%lukB" + " pages_scanned:%lu" + " all_unreclaimable? %s" "\n", zone->name, K(zone->free_pages), @@ -1094,7 +1097,9 @@ K(zone->pages_high), K(zone->nr_active), K(zone->nr_inactive), - K(zone->present_pages) + K(zone->present_pages), + zone->pages_scanned, + (zone->all_unreclaimable ? "yes" : "no") ); printk("protections[]:"); for (i = 0; i < MAX_NR_ZONES; i++) @@ -1125,6 +1130,18 @@ printk("= %lukB\n", K(total)); } + swap_list_lock(); + for (i = 0; i < nr_swapfiles; i++) { + if (!(swap_info[i].flags & SWP_USED) || + (swap_info[i].flags & SWP_WRITEOK)) + continue; + swap_pages += swap_info[i].inuse_pages; + } + swap_pages += nr_swap_pages; + swap_list_unlock(); + + printk("nr_free_swap_pages: %u\n", swap_pages); + show_swap_cache_info(); }