[Devel] [PATCH RHEL7 COMMIT] Revert "mm/page_alloc.c: check if page cgroup still in use during alloc/free."

Konstantin Khorenko khorenko at virtuozzo.com
Tue Oct 22 13:36:47 MSK 2019


The commit is pushed to "branch-rh7-3.10.0-1062.1.2.vz7.114.x-ovz" and will appear at https://src.openvz.org/scm/ovz/vzkernel.git
after rh7-3.10.0-1062.1.2.vz7.114.8
------>
commit 6407127a944f1b8e2969b82643ceba99e04c588d
Author: Konstantin Khorenko <khorenko at virtuozzo.com>
Date:   Tue Oct 22 13:33:55 2019 +0300

    Revert "mm/page_alloc.c: check if page cgroup still in use during alloc/free."
    
    This reverts commit cf8aaacbc2c2b191b39ef9f677dbd5cbba3729a1.
    
    Reverting the debug patch: it did not provide us any single case,
    at the same time issues are not reported anymore, probably
    it was fixed as a side effect.
    
    Anyway, we don't need a debug BUG_ON() in the release code.
    
    https://jira.sw.ru/browse/PSBM-96036
    
    Signed-off-by: Konstantin Khorenko <khorenko at virtuozzo.com>
---
 mm/page_alloc.c  | 22 ----------------------
 mm/page_cgroup.c |  3 +--
 2 files changed, 1 insertion(+), 24 deletions(-)

diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 6094599b86b3..c9032ab1dc09 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -976,25 +976,6 @@ void __meminit reserve_bootmem_region(unsigned long start, unsigned long end)
 	}
 }
 
-static void check_memcg(struct page *page)
-{
-	struct page_cgroup *pc;
-	extern int page_cgroup_inited;
-
-	if (!page_cgroup_inited)
-		return;
-
-	pc = lookup_page_cgroup(page);
-	/*
-	 * Fast unlocked return. Theoretically might have changed, have to
-	 * check again after locking.
-	 */
-	if (!pc || !PageCgroupUsed(pc))
-		return;
-
-	BUG_ON(1);
-}
-
 static bool free_pages_prepare(struct page *page, unsigned int order)
 {
 	int i;
@@ -1007,8 +988,6 @@ static bool free_pages_prepare(struct page *page, unsigned int order)
 	if (PageAnon(page))
 		page->mapping = NULL;
 	memcg_kmem_uncharge_pages(page, order);
-	check_memcg(page);
-
 	for (i = 0; i < (1 << order); i++) {
 		bad += free_pages_check(page + i);
 		if (static_key_false(&zero_free_pages))
@@ -1602,7 +1581,6 @@ static int prep_new_page(struct page *page, int order, gfp_t gfp_flags)
 	arch_alloc_page(page, order);
 	kernel_map_pages(page, 1 << order, 1);
 	kasan_alloc_pages(page, order);
-	check_memcg(page);
 
 	if (gfp_flags & __GFP_ZERO)
 		prep_zero_page(page, order, gfp_flags);
diff --git a/mm/page_cgroup.c b/mm/page_cgroup.c
index a856d993f274..452f59a4fe90 100644
--- a/mm/page_cgroup.c
+++ b/mm/page_cgroup.c
@@ -266,7 +266,7 @@ static int __meminit page_cgroup_callback(struct notifier_block *self,
 }
 
 #endif
-int page_cgroup_inited;
+
 void __init page_cgroup_init(void)
 {
 	unsigned long pfn;
@@ -309,7 +309,6 @@ void __init page_cgroup_init(void)
 	printk(KERN_INFO "please try 'cgroup_disable=memory' option if you "
 			 "don't want memory cgroups\n");
 	invoke_page_ext_init_callbacks();
-	page_cgroup_inited = true;
 	return;
 oom:
 	printk(KERN_CRIT "try 'cgroup_disable=memory' boot option\n");



More information about the Devel mailing list