aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/linux/migrate.h15
1 files changed, 14 insertions, 1 deletions
diff --git a/include/linux/migrate.h b/include/linux/migrate.h
index 75e55dcdeb18..e10a90a93b5d 100644
--- a/include/linux/migrate.h
+++ b/include/linux/migrate.h
@@ -2,18 +2,29 @@
2#define _LINUX_MIGRATE_H 2#define _LINUX_MIGRATE_H
3 3
4#include <linux/mm.h> 4#include <linux/mm.h>
5#include <linux/mempolicy.h>
6#include <linux/pagemap.h>
5 7
6typedef struct page *new_page_t(struct page *, unsigned long private, int **); 8typedef struct page *new_page_t(struct page *, unsigned long private, int **);
7 9
10#ifdef CONFIG_MIGRATION
8/* Check if a vma is migratable */ 11/* Check if a vma is migratable */
9static inline int vma_migratable(struct vm_area_struct *vma) 12static inline int vma_migratable(struct vm_area_struct *vma)
10{ 13{
11 if (vma->vm_flags & (VM_IO|VM_HUGETLB|VM_PFNMAP|VM_RESERVED)) 14 if (vma->vm_flags & (VM_IO|VM_HUGETLB|VM_PFNMAP|VM_RESERVED))
12 return 0; 15 return 0;
16 /*
17 * Migration allocates pages in the highest zone. If we cannot
18 * do so then migration (at least from node to node) is not
19 * possible.
20 */
21 if (vma->vm_file &&
22 gfp_zone(mapping_gfp_mask(vma->vm_file->f_mapping))
23 < policy_zone)
24 return 0;
13 return 1; 25 return 1;
14} 26}
15 27
16#ifdef CONFIG_MIGRATION
17extern int isolate_lru_page(struct page *p, struct list_head *pagelist); 28extern int isolate_lru_page(struct page *p, struct list_head *pagelist);
18extern int putback_lru_pages(struct list_head *l); 29extern int putback_lru_pages(struct list_head *l);
19extern int migrate_page(struct address_space *, 30extern int migrate_page(struct address_space *,
@@ -28,6 +39,8 @@ extern int migrate_vmas(struct mm_struct *mm,
28 const nodemask_t *from, const nodemask_t *to, 39 const nodemask_t *from, const nodemask_t *to,
29 unsigned long flags); 40 unsigned long flags);
30#else 41#else
42static inline int vma_migratable(struct vm_area_struct *vma)
43 { return 0; }
31 44
32static inline int isolate_lru_page(struct page *p, struct list_head *list) 45static inline int isolate_lru_page(struct page *p, struct list_head *list)
33 { return -ENOSYS; } 46 { return -ENOSYS; }