Commit a3d8e0549d913e30968fa02e505dfe02c0a23e0d

Authored by KOSAKI Motohiro
Committed by Linus Torvalds
1 parent 14797e2363

memcg: add mem_cgroup_zone_nr_pages()

Introduce mem_cgroup_zone_nr_pages().  It is called by zone_nr_pages()
helper function.

This patch doesn't have any behavior change.

Acked-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Acked-by: Rik van Riel <riel@redhat.com>
Signed-off-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Acked-by: Balbir Singh <balbir@in.ibm.com>
Cc: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp>
Cc: Hugh Dickins <hugh@veritas.com>
Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Showing 3 changed files with 25 additions and 1 deletions Side-by-side Diff

include/linux/memcontrol.h
... ... @@ -102,6 +102,9 @@
102 102 int priority, enum lru_list lru);
103 103 int mem_cgroup_inactive_anon_is_low(struct mem_cgroup *memcg,
104 104 struct zone *zone);
  105 +unsigned long mem_cgroup_zone_nr_pages(struct mem_cgroup *memcg,
  106 + struct zone *zone,
  107 + enum lru_list lru);
105 108  
106 109 #ifdef CONFIG_CGROUP_MEM_RES_CTLR_SWAP
107 110 extern int do_swap_account;
... ... @@ -259,6 +262,14 @@
259 262 {
260 263 return 1;
261 264 }
  265 +
  266 +static inline unsigned long
  267 +mem_cgroup_zone_nr_pages(struct mem_cgroup *memcg, struct zone *zone,
  268 + enum lru_list lru)
  269 +{
  270 + return 0;
  271 +}
  272 +
262 273  
263 274 #endif /* CONFIG_CGROUP_MEM_CONT */
264 275  
... ... @@ -186,7 +186,6 @@
186 186 0, /* FORCE */
187 187 };
188 188  
189   -
190 189 /* for encoding cft->private value on file */
191 190 #define _MEM (0)
192 191 #define _MEMSWAP (1)
... ... @@ -446,6 +445,17 @@
446 445 return 1;
447 446  
448 447 return 0;
  448 +}
  449 +
  450 +unsigned long mem_cgroup_zone_nr_pages(struct mem_cgroup *memcg,
  451 + struct zone *zone,
  452 + enum lru_list lru)
  453 +{
  454 + int nid = zone->zone_pgdat->node_id;
  455 + int zid = zone_idx(zone);
  456 + struct mem_cgroup_per_zone *mz = mem_cgroup_zoneinfo(memcg, nid, zid);
  457 +
  458 + return MEM_CGROUP_ZSTAT(mz, lru);
449 459 }
450 460  
451 461 unsigned long mem_cgroup_isolate_pages(unsigned long nr_to_scan,
... ... @@ -139,6 +139,9 @@
139 139 static unsigned long zone_nr_pages(struct zone *zone, struct scan_control *sc,
140 140 enum lru_list lru)
141 141 {
  142 + if (!scan_global_lru(sc))
  143 + return mem_cgroup_zone_nr_pages(sc->mem_cgroup, zone, lru);
  144 +
142 145 return zone_page_state(zone, NR_LRU_BASE + lru);
143 146 }
144 147