mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-21 14:11:20 +00:00
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>
This commit is contained in:
parent
a09ed5e000
commit
1495f230fa
21 changed files with 95 additions and 61 deletions
|
@ -1166,18 +1166,20 @@ static inline void sync_mm_rss(struct task_struct *task, struct mm_struct *mm)
|
|||
* We consolidate the values for easier extention later.
|
||||
*/
|
||||
struct shrink_control {
|
||||
unsigned long nr_scanned;
|
||||
gfp_t gfp_mask;
|
||||
|
||||
/* How many slab objects shrinker() should scan and try to reclaim */
|
||||
unsigned long nr_to_scan;
|
||||
};
|
||||
|
||||
/*
|
||||
* A callback you can register to apply pressure to ageable caches.
|
||||
*
|
||||
* 'shrink' is passed a count 'nr_to_scan' and a 'gfpmask'. It should
|
||||
* look through the least-recently-used 'nr_to_scan' entries and
|
||||
* attempt to free them up. It should return the number of objects
|
||||
* which remain in the cache. If it returns -1, it means it cannot do
|
||||
* any scanning at this time (eg. there is a risk of deadlock).
|
||||
* 'sc' is passed shrink_control which includes a count 'nr_to_scan'
|
||||
* and a 'gfpmask'. It should look through the least-recently-used
|
||||
* 'nr_to_scan' entries and attempt to free them up. It should return
|
||||
* the number of objects which remain in the cache. If it returns -1, it means
|
||||
* it cannot do any scanning at this time (eg. there is a risk of deadlock).
|
||||
*
|
||||
* The 'gfpmask' refers to the allocation we are currently trying to
|
||||
* fulfil.
|
||||
|
@ -1186,7 +1188,7 @@ struct shrink_control {
|
|||
* querying the cache size, so a fastpath for that case is appropriate.
|
||||
*/
|
||||
struct shrinker {
|
||||
int (*shrink)(struct shrinker *, int nr_to_scan, gfp_t gfp_mask);
|
||||
int (*shrink)(struct shrinker *, struct shrink_control *sc);
|
||||
int seeks; /* seeks to recreate an obj */
|
||||
|
||||
/* These are for internal use */
|
||||
|
@ -1640,7 +1642,8 @@ int in_gate_area_no_mm(unsigned long addr);
|
|||
int drop_caches_sysctl_handler(struct ctl_table *, int,
|
||||
void __user *, size_t *, loff_t *);
|
||||
unsigned long shrink_slab(struct shrink_control *shrink,
|
||||
unsigned long lru_pages);
|
||||
unsigned long nr_pages_scanned,
|
||||
unsigned long lru_pages);
|
||||
|
||||
#ifndef CONFIG_MMU
|
||||
#define randomize_va_space 0
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue