maple_tree: separate ma_state node from status
[linux-2.6-microblaze.git] / mm / show_mem.c
index 4b888b1..ba0808d 100644 (file)
@@ -34,13 +34,8 @@ long si_mem_available(void)
        long available;
        unsigned long pagecache;
        unsigned long wmark_low = 0;
-       unsigned long pages[NR_LRU_LISTS];
        unsigned long reclaimable;
        struct zone *zone;
-       int lru;
-
-       for (lru = LRU_BASE; lru < NR_LRU_LISTS; lru++)
-               pages[lru] = global_node_page_state(NR_LRU_BASE + lru);
 
        for_each_zone(zone)
                wmark_low += low_wmark_pages(zone);
@@ -56,7 +51,8 @@ long si_mem_available(void)
         * start swapping or thrashing. Assume at least half of the page
         * cache, or the low watermark worth of cache, needs to stay.
         */
-       pagecache = pages[LRU_ACTIVE_FILE] + pages[LRU_INACTIVE_FILE];
+       pagecache = global_node_page_state(NR_ACTIVE_FILE) +
+               global_node_page_state(NR_INACTIVE_FILE);
        pagecache -= min(pagecache / 2, wmark_low);
        available += pagecache;
 
@@ -67,7 +63,8 @@ long si_mem_available(void)
         */
        reclaimable = global_node_page_state_pages(NR_SLAB_RECLAIMABLE_B) +
                global_node_page_state(NR_KERNEL_MISC_RECLAIMABLE);
-       available += reclaimable - min(reclaimable / 2, wmark_low);
+       reclaimable -= min(reclaimable / 2, wmark_low);
+       available += reclaimable;
 
        if (available < 0)
                available = 0;