diff options
Diffstat (limited to 'include/linux/mm_inline.h')
| -rw-r--r-- | include/linux/mm_inline.h | 19 | 
1 files changed, 12 insertions, 7 deletions
| diff --git a/include/linux/mm_inline.h b/include/linux/mm_inline.h index 5bd29ba4f174..71613e8a720f 100644 --- a/include/linux/mm_inline.h +++ b/include/linux/mm_inline.h @@ -23,25 +23,30 @@ static inline int page_is_file_cache(struct page *page)  }  static __always_inline void __update_lru_size(struct lruvec *lruvec, -				enum lru_list lru, int nr_pages) +				enum lru_list lru, enum zone_type zid, +				int nr_pages)  { -	__mod_zone_page_state(lruvec_zone(lruvec), NR_LRU_BASE + lru, nr_pages); +	struct pglist_data *pgdat = lruvec_pgdat(lruvec); + +	__mod_node_page_state(pgdat, NR_LRU_BASE + lru, nr_pages); +	__mod_zone_page_state(&pgdat->node_zones[zid], +				NR_ZONE_LRU_BASE + lru, nr_pages);  }  static __always_inline void update_lru_size(struct lruvec *lruvec, -				enum lru_list lru, int nr_pages) +				enum lru_list lru, enum zone_type zid, +				int nr_pages)  { +	__update_lru_size(lruvec, lru, zid, nr_pages);  #ifdef CONFIG_MEMCG  	mem_cgroup_update_lru_size(lruvec, lru, nr_pages); -#else -	__update_lru_size(lruvec, lru, nr_pages);  #endif  }  static __always_inline void add_page_to_lru_list(struct page *page,  				struct lruvec *lruvec, enum lru_list lru)  { -	update_lru_size(lruvec, lru, hpage_nr_pages(page)); +	update_lru_size(lruvec, lru, page_zonenum(page), hpage_nr_pages(page));  	list_add(&page->lru, &lruvec->lists[lru]);  } @@ -49,7 +54,7 @@ static __always_inline void del_page_from_lru_list(struct page *page,  				struct lruvec *lruvec, enum lru_list lru)  {  	list_del(&page->lru); -	update_lru_size(lruvec, lru, -hpage_nr_pages(page)); +	update_lru_size(lruvec, lru, page_zonenum(page), -hpage_nr_pages(page));  }  /** |