aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorYing Han <yinghan@google.com>2011-05-24 20:12:27 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2011-05-25 11:39:26 -0400
commit1495f230fa7750479c79e3656286b9183d662077 (patch)
treee5e233bb9fe1916ccc7281e7dcc71b1572fb22c5 /include
parenta09ed5e00084448453c8bada4dcd31e5fbfc2f21 (diff)
vmscan: change shrinker API by passing shrink_control struct
Change each shrinker's API by consolidating the existing parameters into shrink_control struct. This will simplify any further features added w/o touching each file of shrinker. [akpm@linux-foundation.org: fix build] [akpm@linux-foundation.org: fix warning] [kosaki.motohiro@jp.fujitsu.com: fix up new shrinker API] [akpm@linux-foundation.org: fix xfs warning] [akpm@linux-foundation.org: update gfs2] Signed-off-by: Ying Han <yinghan@google.com> Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> Cc: Minchan Kim <minchan.kim@gmail.com> Acked-by: Pavel Emelyanov <xemul@openvz.org> Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> Cc: Mel Gorman <mel@csn.ul.ie> Acked-by: Rik van Riel <riel@redhat.com> Cc: Johannes Weiner <hannes@cmpxchg.org> Cc: Hugh Dickins <hughd@google.com> Cc: Dave Hansen <dave@linux.vnet.ibm.com> Cc: Steven Whitehouse <swhiteho@redhat.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include')
-rw-r--r--include/linux/mm.h19
1 files changed, 11 insertions, 8 deletions
diff --git a/include/linux/mm.h b/include/linux/mm.h
index 32cfa9602d00..5cbbf78eaac7 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -1166,18 +1166,20 @@ static inline void sync_mm_rss(struct task_struct *task, struct mm_struct *mm)
1166 * We consolidate the values for easier extention later. 1166 * We consolidate the values for easier extention later.
1167 */ 1167 */
1168struct shrink_control { 1168struct shrink_control {
1169 unsigned long nr_scanned;
1170 gfp_t gfp_mask; 1169 gfp_t gfp_mask;
1170
1171 /* How many slab objects shrinker() should scan and try to reclaim */
1172 unsigned long nr_to_scan;
1171}; 1173};
1172 1174
1173/* 1175/*
1174 * A callback you can register to apply pressure to ageable caches. 1176 * A callback you can register to apply pressure to ageable caches.
1175 * 1177 *
1176 * 'shrink' is passed a count 'nr_to_scan' and a 'gfpmask'. It should 1178 * 'sc' is passed shrink_control which includes a count 'nr_to_scan'
1177 * look through the least-recently-used 'nr_to_scan' entries and 1179 * and a 'gfpmask'. It should look through the least-recently-used
1178 * attempt to free them up. It should return the number of objects 1180 * 'nr_to_scan' entries and attempt to free them up. It should return
1179 * which remain in the cache. If it returns -1, it means it cannot do 1181 * the number of objects which remain in the cache. If it returns -1, it means
1180 * any scanning at this time (eg. there is a risk of deadlock). 1182 * it cannot do any scanning at this time (eg. there is a risk of deadlock).
1181 * 1183 *
1182 * The 'gfpmask' refers to the allocation we are currently trying to 1184 * The 'gfpmask' refers to the allocation we are currently trying to
1183 * fulfil. 1185 * fulfil.
@@ -1186,7 +1188,7 @@ struct shrink_control {
1186 * querying the cache size, so a fastpath for that case is appropriate. 1188 * querying the cache size, so a fastpath for that case is appropriate.
1187 */ 1189 */
1188struct shrinker { 1190struct shrinker {
1189 int (*shrink)(struct shrinker *, int nr_to_scan, gfp_t gfp_mask); 1191 int (*shrink)(struct shrinker *, struct shrink_control *sc);
1190 int seeks; /* seeks to recreate an obj */ 1192 int seeks; /* seeks to recreate an obj */
1191 1193
1192 /* These are for internal use */ 1194 /* These are for internal use */
@@ -1640,7 +1642,8 @@ int in_gate_area_no_mm(unsigned long addr);
1640int drop_caches_sysctl_handler(struct ctl_table *, int, 1642int drop_caches_sysctl_handler(struct ctl_table *, int,
1641 void __user *, size_t *, loff_t *); 1643 void __user *, size_t *, loff_t *);
1642unsigned long shrink_slab(struct shrink_control *shrink, 1644unsigned long shrink_slab(struct shrink_control *shrink,
1643 unsigned long lru_pages); 1645 unsigned long nr_pages_scanned,
1646 unsigned long lru_pages);
1644 1647
1645#ifndef CONFIG_MMU 1648#ifndef CONFIG_MMU
1646#define randomize_va_space 0 1649#define randomize_va_space 0