diff options
Diffstat (limited to 'include/linux/memcontrol.h')
| -rw-r--r-- | include/linux/memcontrol.h | 26 | 
1 files changed, 23 insertions, 3 deletions
diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h index 61d20c17f3b7..254698856b8f 100644 --- a/include/linux/memcontrol.h +++ b/include/linux/memcontrol.h @@ -120,7 +120,7 @@ struct mem_cgroup_reclaim_iter {   */  struct mem_cgroup_per_node {  	struct lruvec		lruvec; -	unsigned long		lru_size[NR_LRU_LISTS]; +	unsigned long		lru_zone_size[MAX_NR_ZONES][NR_LRU_LISTS];  	struct mem_cgroup_reclaim_iter	iter[DEF_PRIORITY + 1]; @@ -432,7 +432,7 @@ static inline bool mem_cgroup_online(struct mem_cgroup *memcg)  int mem_cgroup_select_victim_node(struct mem_cgroup *memcg);  void mem_cgroup_update_lru_size(struct lruvec *lruvec, enum lru_list lru, -		int nr_pages); +		int zid, int nr_pages);  unsigned long mem_cgroup_node_nr_lru_pages(struct mem_cgroup *memcg,  					   int nid, unsigned int lru_mask); @@ -441,9 +441,23 @@ static inline  unsigned long mem_cgroup_get_lru_size(struct lruvec *lruvec, enum lru_list lru)  {  	struct mem_cgroup_per_node *mz; +	unsigned long nr_pages = 0; +	int zid;  	mz = container_of(lruvec, struct mem_cgroup_per_node, lruvec); -	return mz->lru_size[lru]; +	for (zid = 0; zid < MAX_NR_ZONES; zid++) +		nr_pages += mz->lru_zone_size[zid][lru]; +	return nr_pages; +} + +static inline +unsigned long mem_cgroup_get_zone_lru_size(struct lruvec *lruvec, +		enum lru_list lru, int zone_idx) +{ +	struct mem_cgroup_per_node *mz; + +	mz = container_of(lruvec, struct mem_cgroup_per_node, lruvec); +	return mz->lru_zone_size[zone_idx][lru];  }  void mem_cgroup_handle_over_high(void); @@ -671,6 +685,12 @@ mem_cgroup_get_lru_size(struct lruvec *lruvec, enum lru_list lru)  {  	return 0;  } +static inline +unsigned long mem_cgroup_get_zone_lru_size(struct lruvec *lruvec, +		enum lru_list lru, int zone_idx) +{ +	return 0; +}  static inline unsigned long  mem_cgroup_node_nr_lru_pages(struct mem_cgroup *memcg,  | 
