forked from mirrors/linux
		
	mm/memcontrol:rewrite mem_cgroup_page_lruvec()
mem_cgroup_page_lruvec() in memcontrol.c and mem_cgroup_lruvec() in memcontrol.h is very similar except for the param(page and memcg) which also can be convert to each other. So rewrite mem_cgroup_page_lruvec() with mem_cgroup_lruvec(). [alex.shi@linux.alibaba.com: add missed warning in mem_cgroup_lruvec] Link: https://lkml.kernel.org/r/94f17bb7-ec61-5b72-3555-fabeb5a4d73b@linux.alibaba.com [lstoakes@gmail.com: warn on missing memcg on mem_cgroup_page_lruvec()] Link: https://lkml.kernel.org/r/20201125112202.387009-1-lstoakes@gmail.com Link: https://lkml.kernel.org/r/20201108143731.GA74138@rlk Signed-off-by: Hui Su <sh_def@163.com> Signed-off-by: Alex Shi <alex.shi@linux.alibaba.com> Signed-off-by: Lorenzo Stoakes <lstoakes@gmail.com> Acked-by: Michal Hocko <mhocko@suse.com> Acked-by: Johannes Weiner <hannes@cmpxchg.org> Reviewed-by: Shakeel Butt <shakeelb@google.com> Acked-by: Roman Gushchin <guro@fb.com> Cc: Vladimir Davydov <vdavydov.dev@gmail.com> Cc: Yafang Shao <laoar.shao@gmail.com> Cc: Chris Down <chris@chrisdown.name> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
		
							parent
							
								
									93bb59ca5e
								
							
						
					
					
						commit
						9a1ac2288c
					
				
					 2 changed files with 17 additions and 39 deletions
				
			
		| 
						 | 
				
			
			@ -620,9 +620,10 @@ mem_cgroup_nodeinfo(struct mem_cgroup *memcg, int nid)
 | 
			
		|||
/**
 | 
			
		||||
 * mem_cgroup_lruvec - get the lru list vector for a memcg & node
 | 
			
		||||
 * @memcg: memcg of the wanted lruvec
 | 
			
		||||
 * @pgdat: pglist_data
 | 
			
		||||
 *
 | 
			
		||||
 * Returns the lru list vector holding pages for a given @memcg &
 | 
			
		||||
 * @node combination. This can be the node lruvec, if the memory
 | 
			
		||||
 * @pgdat combination. This can be the node lruvec, if the memory
 | 
			
		||||
 * controller is disabled.
 | 
			
		||||
 */
 | 
			
		||||
static inline struct lruvec *mem_cgroup_lruvec(struct mem_cgroup *memcg,
 | 
			
		||||
| 
						 | 
				
			
			@ -652,7 +653,21 @@ static inline struct lruvec *mem_cgroup_lruvec(struct mem_cgroup *memcg,
 | 
			
		|||
	return lruvec;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
struct lruvec *mem_cgroup_page_lruvec(struct page *, struct pglist_data *);
 | 
			
		||||
/**
 | 
			
		||||
 * mem_cgroup_page_lruvec - return lruvec for isolating/putting an LRU page
 | 
			
		||||
 * @page: the page
 | 
			
		||||
 * @pgdat: pgdat of the page
 | 
			
		||||
 *
 | 
			
		||||
 * This function relies on page->mem_cgroup being stable.
 | 
			
		||||
 */
 | 
			
		||||
static inline struct lruvec *mem_cgroup_page_lruvec(struct page *page,
 | 
			
		||||
						struct pglist_data *pgdat)
 | 
			
		||||
{
 | 
			
		||||
	struct mem_cgroup *memcg = page_memcg(page);
 | 
			
		||||
 | 
			
		||||
	VM_WARN_ON_ONCE_PAGE(!memcg, page);
 | 
			
		||||
	return mem_cgroup_lruvec(memcg, pgdat);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static inline bool lruvec_holds_page_lru_lock(struct page *page,
 | 
			
		||||
					      struct lruvec *lruvec)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1342,43 +1342,6 @@ void lruvec_memcg_debug(struct lruvec *lruvec, struct page *page)
 | 
			
		|||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * mem_cgroup_page_lruvec - return lruvec for isolating/putting an LRU page
 | 
			
		||||
 * @page: the page
 | 
			
		||||
 * @pgdat: pgdat of the page
 | 
			
		||||
 *
 | 
			
		||||
 * This function relies on page's memcg being stable - see the
 | 
			
		||||
 * access rules in commit_charge().
 | 
			
		||||
 */
 | 
			
		||||
struct lruvec *mem_cgroup_page_lruvec(struct page *page, struct pglist_data *pgdat)
 | 
			
		||||
{
 | 
			
		||||
	struct mem_cgroup_per_node *mz;
 | 
			
		||||
	struct mem_cgroup *memcg;
 | 
			
		||||
	struct lruvec *lruvec;
 | 
			
		||||
 | 
			
		||||
	if (mem_cgroup_disabled()) {
 | 
			
		||||
		lruvec = &pgdat->__lruvec;
 | 
			
		||||
		goto out;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	memcg = page_memcg(page);
 | 
			
		||||
	VM_WARN_ON_ONCE_PAGE(!memcg, page);
 | 
			
		||||
	if (!memcg)
 | 
			
		||||
		memcg = root_mem_cgroup;
 | 
			
		||||
 | 
			
		||||
	mz = mem_cgroup_page_nodeinfo(memcg, page);
 | 
			
		||||
	lruvec = &mz->lruvec;
 | 
			
		||||
out:
 | 
			
		||||
	/*
 | 
			
		||||
	 * Since a node can be onlined after the mem_cgroup was created,
 | 
			
		||||
	 * we have to be prepared to initialize lruvec->zone here;
 | 
			
		||||
	 * and if offlined then reonlined, we need to reinitialize it.
 | 
			
		||||
	 */
 | 
			
		||||
	if (unlikely(lruvec->pgdat != pgdat))
 | 
			
		||||
		lruvec->pgdat = pgdat;
 | 
			
		||||
	return lruvec;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * lock_page_lruvec - lock and return lruvec for a given page.
 | 
			
		||||
 * @page: the page
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue