mm/memcontrol:rewrite mem_cgroup_page_lruvec()
Subsystems (3)
PATCH v2 1/1 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().
v1->v2:
use page_memcg() instead of 'page->mem_cgroup'.
Acked-by Johannes Weiner <[email protected]>
Reviewed-by Shakeel Butt <[email protected]>
Signed-off-by Hui Su <sh_def-9Onoh4P/[email protected]>
--- include/linux/memcontrol.h | 16 +++++++++++++-- mm/memcontrol.c | 40 -------------------------------------- 2 files changed, 14 insertions(+), 42 deletions(-)
include/linux/memcontrol.h +14 -2
@@ -457,9 +457,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,
@@ -489,7 +490,18 @@ 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) +{ +return mem_cgroup_lruvec (page_memcg (page), pgdat); +}struct mem_cgroup *mem_cgroup_from_task (struct task_struct *p);
mm/memcontrol.c +0 -40
@@ -1330,46 +1330,6 @@ int mem_cgroup_scan_tasks(struct mem_cgroup *memcg,return ret; } -/** -* 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 - 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->mem_cgroup; -/* -* Swapcache readahead pages are added to the LRU - and -* possibly migrated - before they are charged. -*/ -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; -} -/** * mem_cgroup_update_lru_size - account for adding or removing an lru page * @lruvec: mem_cgroup per zone lru vector
Signature · 1 line
2.29.0
Quoted 7 lines · Hui Su
mem_cgroup_page_lruvec()inmemcontrol.candmem_cgroup_lruvec()inmemcontrol.his very similar except for the param(page and memcg) which also can be convert to each other.So rewrite
mem_cgroup_page_lruvec()withmem_cgroup_lruvec().
Quoted 7 lines
v1->v2:
usepage_memcg()instead of 'page->mem_cgroup'.Acked-by Michal Hocko <[email protected]>Acked-by Johannes Weiner <[email protected]>Reviewed-by Shakeel Butt <[email protected]>Signed-off-by Hui Su <[email protected]>
Acked-by Roman Gushchin <[email protected]>
Thanks!