aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/rmap.h
diff options
context:
space:
mode:
authorWu Fengguang <fengguang.wu@intel.com>2009-06-16 18:33:05 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2009-06-16 22:47:44 -0400
commit6fe6b7e35785e3232ffe7f81d3893f1316710a02 (patch)
tree6f47c03735504d8aab8f7b048465b87cc5b15861 /include/linux/rmap.h
parent608e8e66a154cbc3d591a59dcebfd9cbc9e3431a (diff)
vmscan: report vm_flags in page_referenced()
Collect vma->vm_flags of the VMAs that actually referenced the page. This is preparing for more informed reclaim heuristics, eg. to protect executable file pages more aggressively. For now only the VM_EXEC bit will be used by the caller. Thanks to Johannes, Peter and Minchan for all the good tips. Acked-by: Peter Zijlstra <peterz@infradead.org> Reviewed-by: Rik van Riel <riel@redhat.com> Reviewed-by: Minchan Kim <minchan.kim@gmail.com> Reviewed-by: Johannes Weiner <hannes@cmpxchg.org> Signed-off-by: Wu Fengguang <fengguang.wu@intel.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include/linux/rmap.h')
-rw-r--r--include/linux/rmap.h5
1 files changed, 3 insertions, 2 deletions
diff --git a/include/linux/rmap.h b/include/linux/rmap.h
index 619379a1dd98..216d024f830d 100644
--- a/include/linux/rmap.h
+++ b/include/linux/rmap.h
@@ -83,7 +83,8 @@ static inline void page_dup_rmap(struct page *page, struct vm_area_struct *vma,
83/* 83/*
84 * Called from mm/vmscan.c to handle paging out 84 * Called from mm/vmscan.c to handle paging out
85 */ 85 */
86int page_referenced(struct page *, int is_locked, struct mem_cgroup *cnt); 86int page_referenced(struct page *, int is_locked,
87 struct mem_cgroup *cnt, unsigned long *vm_flags);
87int try_to_unmap(struct page *, int ignore_refs); 88int try_to_unmap(struct page *, int ignore_refs);
88 89
89/* 90/*
@@ -117,7 +118,7 @@ int try_to_munlock(struct page *);
117#define anon_vma_prepare(vma) (0) 118#define anon_vma_prepare(vma) (0)
118#define anon_vma_link(vma) do {} while (0) 119#define anon_vma_link(vma) do {} while (0)
119 120
120#define page_referenced(page,l,cnt) TestClearPageReferenced(page) 121#define page_referenced(page, locked, cnt, flags) TestClearPageReferenced(page)
121#define try_to_unmap(page, refs) SWAP_FAIL 122#define try_to_unmap(page, refs) SWAP_FAIL
122 123
123static inline int page_mkclean(struct page *page) 124static inline int page_mkclean(struct page *page)