Skip to content

Commit 1506c25

Browse files
Matthew Wilcox (Oracle)akpm00
authored andcommitted
mm: simplify split_page_memcg()
The last argument to split_page_memcg() is now always 0, so remove it, effectively reverting commit b879138. Link: https://lkml.kernel.org/r/[email protected] Signed-off-by: Matthew Wilcox (Oracle) <[email protected]> Acked-by: Johannes Weiner <[email protected]> Acked-by: Shakeel Butt <[email protected]> Acked-by: Zi Yan <[email protected]> Acked-by: Roman Gushchin <[email protected]> Cc: David Hildenbrand <[email protected]> Cc: Michal Hocko <[email protected]> Cc: Muchun Song <[email protected]> Signed-off-by: Andrew Morton <[email protected]>
1 parent fa23a33 commit 1506c25

File tree

3 files changed

+11
-12
lines changed

3 files changed

+11
-12
lines changed

include/linux/memcontrol.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1038,7 +1038,7 @@ static inline void memcg_memory_event_mm(struct mm_struct *mm,
10381038
rcu_read_unlock();
10391039
}
10401040

1041-
void split_page_memcg(struct page *head, int old_order, int new_order);
1041+
void split_page_memcg(struct page *first, unsigned order);
10421042
void folio_split_memcg_refs(struct folio *folio, unsigned old_order,
10431043
unsigned new_order);
10441044

@@ -1461,7 +1461,7 @@ void count_memcg_event_mm(struct mm_struct *mm, enum vm_event_item idx)
14611461
{
14621462
}
14631463

1464-
static inline void split_page_memcg(struct page *head, int old_order, int new_order)
1464+
static inline void split_page_memcg(struct page *first, unsigned order)
14651465
{
14661466
}
14671467

mm/memcontrol.c

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3066,22 +3066,21 @@ void __memcg_slab_free_hook(struct kmem_cache *s, struct slab *slab,
30663066
}
30673067

30683068
/*
3069-
* Because folio_memcg(head) is not set on tails, set it now.
3069+
* The objcg is only set on the first page, so transfer it to all the
3070+
* other pages.
30703071
*/
3071-
void split_page_memcg(struct page *head, int old_order, int new_order)
3072+
void split_page_memcg(struct page *first, unsigned order)
30723073
{
3073-
struct folio *folio = page_folio(head);
3074-
int i;
3075-
unsigned int old_nr = 1 << old_order;
3076-
unsigned int new_nr = 1 << new_order;
3074+
struct folio *folio = page_folio(first);
3075+
unsigned int i, nr = 1 << order;
30773076

30783077
if (mem_cgroup_disabled() || !folio_memcg_charged(folio))
30793078
return;
30803079

3081-
for (i = new_nr; i < old_nr; i += new_nr)
3080+
for (i = 1; i < nr; i++)
30823081
folio_page(folio, i)->memcg_data = folio->memcg_data;
30833082

3084-
obj_cgroup_get_many(__folio_objcg(folio), old_nr / new_nr - 1);
3083+
obj_cgroup_get_many(__folio_objcg(folio), nr - 1);
30853084
}
30863085

30873086
void folio_split_memcg_refs(struct folio *folio, unsigned old_order,

mm/page_alloc.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2778,7 +2778,7 @@ void split_page(struct page *page, unsigned int order)
27782778
set_page_refcounted(page + i);
27792779
split_page_owner(page, order, 0);
27802780
pgalloc_tag_split(page_folio(page), order, 0);
2781-
split_page_memcg(page, order, 0);
2781+
split_page_memcg(page, order);
27822782
}
27832783
EXPORT_SYMBOL_GPL(split_page);
27842784

@@ -4992,7 +4992,7 @@ static void *make_alloc_exact(unsigned long addr, unsigned int order,
49924992

49934993
split_page_owner(page, order, 0);
49944994
pgalloc_tag_split(page_folio(page), order, 0);
4995-
split_page_memcg(page, order, 0);
4995+
split_page_memcg(page, order);
49964996
while (page < --last)
49974997
set_page_refcounted(last);
49984998

0 commit comments

Comments
 (0)