aboutsummaryrefslogtreecommitdiffstats
path: root/mm
diff options
context:
space:
mode:
Diffstat (limited to 'mm')
-rw-r--r--mm/memcontrol.c16
-rw-r--r--mm/page_alloc.c4
-rw-r--r--mm/slab.h4
3 files changed, 10 insertions, 14 deletions
diff --git a/mm/memcontrol.c b/mm/memcontrol.c
index af7f18b32389..72414bb7e226 100644
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -2573,7 +2573,7 @@ void memcg_kmem_put_cache(struct kmem_cache *cachep)
2573} 2573}
2574 2574
2575/** 2575/**
2576 * memcg_kmem_charge_memcg: charge a kmem page 2576 * __memcg_kmem_charge_memcg: charge a kmem page
2577 * @page: page to charge 2577 * @page: page to charge
2578 * @gfp: reclaim mode 2578 * @gfp: reclaim mode
2579 * @order: allocation order 2579 * @order: allocation order
@@ -2581,7 +2581,7 @@ void memcg_kmem_put_cache(struct kmem_cache *cachep)
2581 * 2581 *
2582 * Returns 0 on success, an error code on failure. 2582 * Returns 0 on success, an error code on failure.
2583 */ 2583 */
2584int memcg_kmem_charge_memcg(struct page *page, gfp_t gfp, int order, 2584int __memcg_kmem_charge_memcg(struct page *page, gfp_t gfp, int order,
2585 struct mem_cgroup *memcg) 2585 struct mem_cgroup *memcg)
2586{ 2586{
2587 unsigned int nr_pages = 1 << order; 2587 unsigned int nr_pages = 1 << order;
@@ -2604,24 +2604,24 @@ int memcg_kmem_charge_memcg(struct page *page, gfp_t gfp, int order,
2604} 2604}
2605 2605
2606/** 2606/**
2607 * memcg_kmem_charge: charge a kmem page to the current memory cgroup 2607 * __memcg_kmem_charge: charge a kmem page to the current memory cgroup
2608 * @page: page to charge 2608 * @page: page to charge
2609 * @gfp: reclaim mode 2609 * @gfp: reclaim mode
2610 * @order: allocation order 2610 * @order: allocation order
2611 * 2611 *
2612 * Returns 0 on success, an error code on failure. 2612 * Returns 0 on success, an error code on failure.
2613 */ 2613 */
2614int memcg_kmem_charge(struct page *page, gfp_t gfp, int order) 2614int __memcg_kmem_charge(struct page *page, gfp_t gfp, int order)
2615{ 2615{
2616 struct mem_cgroup *memcg; 2616 struct mem_cgroup *memcg;
2617 int ret = 0; 2617 int ret = 0;
2618 2618
2619 if (mem_cgroup_disabled() || memcg_kmem_bypass()) 2619 if (memcg_kmem_bypass())
2620 return 0; 2620 return 0;
2621 2621
2622 memcg = get_mem_cgroup_from_current(); 2622 memcg = get_mem_cgroup_from_current();
2623 if (!mem_cgroup_is_root(memcg)) { 2623 if (!mem_cgroup_is_root(memcg)) {
2624 ret = memcg_kmem_charge_memcg(page, gfp, order, memcg); 2624 ret = __memcg_kmem_charge_memcg(page, gfp, order, memcg);
2625 if (!ret) 2625 if (!ret)
2626 __SetPageKmemcg(page); 2626 __SetPageKmemcg(page);
2627 } 2627 }
@@ -2629,11 +2629,11 @@ int memcg_kmem_charge(struct page *page, gfp_t gfp, int order)
2629 return ret; 2629 return ret;
2630} 2630}
2631/** 2631/**
2632 * memcg_kmem_uncharge: uncharge a kmem page 2632 * __memcg_kmem_uncharge: uncharge a kmem page
2633 * @page: page to uncharge 2633 * @page: page to uncharge
2634 * @order: allocation order 2634 * @order: allocation order
2635 */ 2635 */
2636void memcg_kmem_uncharge(struct page *page, int order) 2636void __memcg_kmem_uncharge(struct page *page, int order)
2637{ 2637{
2638 struct mem_cgroup *memcg = page->mem_cgroup; 2638 struct mem_cgroup *memcg = page->mem_cgroup;
2639 unsigned int nr_pages = 1 << order; 2639 unsigned int nr_pages = 1 << order;
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 1f9f1409df9b..034b8b6043a3 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -1056,7 +1056,7 @@ static __always_inline bool free_pages_prepare(struct page *page,
1056 if (PageMappingFlags(page)) 1056 if (PageMappingFlags(page))
1057 page->mapping = NULL; 1057 page->mapping = NULL;
1058 if (memcg_kmem_enabled() && PageKmemcg(page)) 1058 if (memcg_kmem_enabled() && PageKmemcg(page))
1059 memcg_kmem_uncharge(page, order); 1059 __memcg_kmem_uncharge(page, order);
1060 if (check_free) 1060 if (check_free)
1061 bad += free_pages_check(page); 1061 bad += free_pages_check(page);
1062 if (bad) 1062 if (bad)
@@ -4568,7 +4568,7 @@ __alloc_pages_nodemask(gfp_t gfp_mask, unsigned int order, int preferred_nid,
4568 4568
4569out: 4569out:
4570 if (memcg_kmem_enabled() && (gfp_mask & __GFP_ACCOUNT) && page && 4570 if (memcg_kmem_enabled() && (gfp_mask & __GFP_ACCOUNT) && page &&
4571 unlikely(memcg_kmem_charge(page, gfp_mask, order) != 0)) { 4571 unlikely(__memcg_kmem_charge(page, gfp_mask, order) != 0)) {
4572 __free_pages(page, order); 4572 __free_pages(page, order);
4573 page = NULL; 4573 page = NULL;
4574 } 4574 }
diff --git a/mm/slab.h b/mm/slab.h
index 384105318779..e5e6658eeacc 100644
--- a/mm/slab.h
+++ b/mm/slab.h
@@ -276,8 +276,6 @@ static __always_inline int memcg_charge_slab(struct page *page,
276 gfp_t gfp, int order, 276 gfp_t gfp, int order,
277 struct kmem_cache *s) 277 struct kmem_cache *s)
278{ 278{
279 if (!memcg_kmem_enabled())
280 return 0;
281 if (is_root_cache(s)) 279 if (is_root_cache(s))
282 return 0; 280 return 0;
283 return memcg_kmem_charge_memcg(page, gfp, order, s->memcg_params.memcg); 281 return memcg_kmem_charge_memcg(page, gfp, order, s->memcg_params.memcg);
@@ -286,8 +284,6 @@ static __always_inline int memcg_charge_slab(struct page *page,
286static __always_inline void memcg_uncharge_slab(struct page *page, int order, 284static __always_inline void memcg_uncharge_slab(struct page *page, int order,
287 struct kmem_cache *s) 285 struct kmem_cache *s)
288{ 286{
289 if (!memcg_kmem_enabled())
290 return;
291 memcg_kmem_uncharge(page, order); 287 memcg_kmem_uncharge(page, order);
292} 288}
293 289