mm: compaction: defer compaction using an exponential backoff when compaction fails
[safe/jmp/linux-2.6] / mm / swap.c
index cb29ae5..7cd60bf 100644 (file)
--- a/mm/swap.c
+++ b/mm/swap.c
@@ -30,6 +30,7 @@
 #include <linux/notifier.h>
 #include <linux/backing-dev.h>
 #include <linux/memcontrol.h>
+#include <linux/gfp.h>
 
 #include "internal.h"
 
@@ -55,7 +56,7 @@ static void __page_cache_release(struct page *page)
                del_page_from_lru(zone, page);
                spin_unlock_irqrestore(&zone->lru_lock, flags);
        }
-       free_hot_page(page);
+       free_hot_cold_page(page, 0);
 }
 
 static void put_compound_page(struct page *page)
@@ -118,7 +119,7 @@ static void pagevec_move_tail(struct pagevec *pvec)
                        spin_lock(&zone->lru_lock);
                }
                if (PageLRU(page) && !PageActive(page) && !PageUnevictable(page)) {
-                       int lru = page_is_file_cache(page);
+                       int lru = page_lru_base_type(page);
                        list_move_tail(&page->lru, &zone->lru[lru].list);
                        pgmoved++;
                }
@@ -181,7 +182,7 @@ void activate_page(struct page *page)
        spin_lock_irq(&zone->lru_lock);
        if (PageLRU(page) && !PageActive(page) && !PageUnevictable(page)) {
                int file = page_is_file_cache(page);
-               int lru = LRU_BASE + file;
+               int lru = page_lru_base_type(page);
                del_page_from_lru_list(zone, page, lru);
 
                SetPageActive(page);
@@ -189,7 +190,7 @@ void activate_page(struct page *page)
                add_page_to_lru_list(zone, page, lru);
                __count_vm_event(PGACTIVATE);
 
-               update_page_reclaim_stat(zone, page, !!file, 1);
+               update_page_reclaim_stat(zone, page, file, 1);
        }
        spin_unlock_irq(&zone->lru_lock);
 }
@@ -496,7 +497,7 @@ EXPORT_SYMBOL(pagevec_lookup_tag);
  */
 void __init swap_setup(void)
 {
-       unsigned long megs = num_physpages >> (20 - PAGE_SHIFT);
+       unsigned long megs = totalram_pages >> (20 - PAGE_SHIFT);
 
 #ifdef CONFIG_SWAP
        bdi_init(swapper_space.backing_dev_info);