On Mon 05-10-15 01:21:43, Vladimir Davydov wrote: > Before the previous patch, __mem_cgroup_from_kmem had to handle two > types of kmem - slab pages and pages allocated with alloc_kmem_pages - > differently, because slab pages did not store information about owner > memcg in the page struct. Now we can unify it. Since after it, this > function becomes tiny we can fold it into mem_cgroup_from_kmem. > > Signed-off-by: Vladimir Davydov <vdavydov@xxxxxxxxxxxxx> Acked-by: Michal Hocko <mhocko@xxxxxxxx> > --- > include/linux/memcontrol.h | 7 ++++--- > mm/memcontrol.c | 18 ------------------ > 2 files changed, 4 insertions(+), 21 deletions(-) > > diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h > index 8a9b7a798f14..0e2e039609d1 100644 > --- a/include/linux/memcontrol.h > +++ b/include/linux/memcontrol.h > @@ -769,8 +769,6 @@ static inline int memcg_cache_id(struct mem_cgroup *memcg) > struct kmem_cache *__memcg_kmem_get_cache(struct kmem_cache *cachep); > void __memcg_kmem_put_cache(struct kmem_cache *cachep); > > -struct mem_cgroup *__mem_cgroup_from_kmem(void *ptr); > - > static inline bool __memcg_kmem_bypass(gfp_t gfp) > { > if (!memcg_kmem_enabled()) > @@ -832,9 +830,12 @@ static __always_inline void memcg_kmem_put_cache(struct kmem_cache *cachep) > > static __always_inline struct mem_cgroup *mem_cgroup_from_kmem(void *ptr) > { > + struct page *page; > + > if (!memcg_kmem_enabled()) > return NULL; > - return __mem_cgroup_from_kmem(ptr); > + page = virt_to_head_page(ptr); > + return page->mem_cgroup; > } > #else > #define for_each_memcg_cache_index(_idx) \ > diff --git a/mm/memcontrol.c b/mm/memcontrol.c > index 1d6413e0dd29..6329e6182d89 100644 > --- a/mm/memcontrol.c > +++ b/mm/memcontrol.c > @@ -2430,24 +2430,6 @@ void __memcg_kmem_uncharge(struct page *page, int order) > page->mem_cgroup = NULL; > css_put_many(&memcg->css, nr_pages); > } > - > -struct mem_cgroup *__mem_cgroup_from_kmem(void *ptr) > -{ > - struct mem_cgroup *memcg = NULL; > - struct kmem_cache *cachep; > - struct page *page; > - > - page = virt_to_head_page(ptr); > - if (PageSlab(page)) { > - cachep = page->slab_cache; > - if (!is_root_cache(cachep)) > - memcg = cachep->memcg_params.memcg; > - } else > - /* page allocated by alloc_kmem_pages */ > - memcg = page->mem_cgroup; > - > - return memcg; > -} > #endif /* CONFIG_MEMCG_KMEM */ > > #ifdef CONFIG_TRANSPARENT_HUGEPAGE > -- > 2.1.4 -- Michal Hocko SUSE Labs -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>