|
@@ -50,6 +50,7 @@
|
|
#include <linux/kallsyms.h>
|
|
#include <linux/kallsyms.h>
|
|
#include <linux/memcontrol.h>
|
|
#include <linux/memcontrol.h>
|
|
#include <linux/mmu_notifier.h>
|
|
#include <linux/mmu_notifier.h>
|
|
|
|
+#include <linux/migrate.h>
|
|
|
|
|
|
#include <asm/tlbflush.h>
|
|
#include <asm/tlbflush.h>
|
|
|
|
|
|
@@ -818,8 +819,7 @@ static int try_to_unmap_one(struct page *page, struct vm_area_struct *vma,
|
|
spin_unlock(&mmlist_lock);
|
|
spin_unlock(&mmlist_lock);
|
|
}
|
|
}
|
|
dec_mm_counter(mm, anon_rss);
|
|
dec_mm_counter(mm, anon_rss);
|
|
-#ifdef CONFIG_MIGRATION
|
|
|
|
- } else {
|
|
|
|
|
|
+ } else if (PAGE_MIGRATION) {
|
|
/*
|
|
/*
|
|
* Store the pfn of the page in a special migration
|
|
* Store the pfn of the page in a special migration
|
|
* pte. do_swap_page() will wait until the migration
|
|
* pte. do_swap_page() will wait until the migration
|
|
@@ -827,19 +827,15 @@ static int try_to_unmap_one(struct page *page, struct vm_area_struct *vma,
|
|
*/
|
|
*/
|
|
BUG_ON(!migration);
|
|
BUG_ON(!migration);
|
|
entry = make_migration_entry(page, pte_write(pteval));
|
|
entry = make_migration_entry(page, pte_write(pteval));
|
|
-#endif
|
|
|
|
}
|
|
}
|
|
set_pte_at(mm, address, pte, swp_entry_to_pte(entry));
|
|
set_pte_at(mm, address, pte, swp_entry_to_pte(entry));
|
|
BUG_ON(pte_file(*pte));
|
|
BUG_ON(pte_file(*pte));
|
|
- } else
|
|
|
|
-#ifdef CONFIG_MIGRATION
|
|
|
|
- if (migration) {
|
|
|
|
|
|
+ } else if (PAGE_MIGRATION && migration) {
|
|
/* Establish migration entry for a file page */
|
|
/* Establish migration entry for a file page */
|
|
swp_entry_t entry;
|
|
swp_entry_t entry;
|
|
entry = make_migration_entry(page, pte_write(pteval));
|
|
entry = make_migration_entry(page, pte_write(pteval));
|
|
set_pte_at(mm, address, pte, swp_entry_to_pte(entry));
|
|
set_pte_at(mm, address, pte, swp_entry_to_pte(entry));
|
|
} else
|
|
} else
|
|
-#endif
|
|
|
|
dec_mm_counter(mm, file_rss);
|
|
dec_mm_counter(mm, file_rss);
|
|
|
|
|
|
|
|
|