From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2BFB2C282DE for ; Thu, 13 Mar 2025 14:59:14 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 76E03280009; Thu, 13 Mar 2025 10:59:10 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 6F5FA280005; Thu, 13 Mar 2025 10:59:10 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4FC35280009; Thu, 13 Mar 2025 10:59:10 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 28946280005 for ; Thu, 13 Mar 2025 10:59:10 -0400 (EDT) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 297871A012D for ; Thu, 13 Mar 2025 14:59:10 +0000 (UTC) X-FDA: 83216835660.13.1444929 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf25.hostedemail.com (Postfix) with ESMTP id 84248A001C for ; Thu, 13 Mar 2025 14:59:08 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=CwZPMYUU; dmarc=none; spf=none (imf25.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1741877948; a=rsa-sha256; cv=none; b=vFYTY0jeyB2Sb+u2Uu5TDqzQ8acRhq77CbkXT4zFhsir4/x7duMP/yJOU1E/5pRHLV7xg+ v0NZG8o8U4cu5GAVcS+4LUoWvpA3Co7wOcgA3TqdDahdOq+0f31L3e8EFTPgSipTRYg/fd NkwidViXA6iJy1hjrEby7izOlXI5N68= ARC-Authentication-Results: i=1; imf25.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=CwZPMYUU; dmarc=none; spf=none (imf25.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1741877948; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=o/4on8DbGYdUiEKtJSpA+29xIYb2PmVMGs9xmHYiOgE=; b=3weQ7LwsVLkeJRSu+exSwgaRdGhhA33l71vMVrQdNDG+yht7W92kf2SIUeH6WuTeQxG/or JxWW1Yd84PNNSCAy0Ei4X+cCHVw3KEu6Kj80oJiZ2LrazX451zlQB7Aayj6k0rJVfrEtZ4 VmVvobq80KR5XY9/sCX43X+NRTWZqgQ= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Content-Transfer-Encoding:MIME-Version: References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Sender:Reply-To: Content-Type:Content-ID:Content-Description; bh=o/4on8DbGYdUiEKtJSpA+29xIYb2PmVMGs9xmHYiOgE=; b=CwZPMYUU6mtUGK2xPVskLb+JtP 9l0YWUPRC/KQ9/ygQ3fsbEH0k8jLouO+oRPuVlmfpZdeBizB3/G3iH0MtgDb0db6p/U6YWdFvEXpg YBoGG5Rsm3y8YfKZ5OEcWPI3SuOR7fBPn4hjFb7543LPsqki6/B/KDCE0o5/AtUwGkG4Pa0LXL4aQ aN2FQ+StEZ2p1yMsWu788OY80kBmYYsqfS4fZ4uNdw73L6LsVnx9kBkLIJ2V6JqQw+0wM9rE9KGog nT9M06yaQg87Bm5GOlIv5BLxQMaCBDxavWH/z4KnOuMJH9rCRSPKR2H03IGnph7UcRSzmdNUAas/+ thnfDtLA==; Received: from willy by casper.infradead.org with local (Exim 4.98 #2 (Red Hat Linux)) id 1tsk1S-0000000HHPG-1D4s; Thu, 13 Mar 2025 14:58:58 +0000 From: "Matthew Wilcox (Oracle)" To: linux-mm@kvack.org Cc: "Matthew Wilcox (Oracle)" , Johannes Weiner , Michal Hocko , Roman Gushchin , Shakeel Butt , Muchun Song , Zi Yan , David Hildenbrand Subject: [PATCH 3/5] mm: Remove references to folio in split_page_memcg() Date: Thu, 13 Mar 2025 14:58:52 +0000 Message-ID: <20250313145856.4118428-4-willy@infradead.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250313145856.4118428-1-willy@infradead.org> References: <20250313145856.4118428-1-willy@infradead.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspam-User: X-Rspamd-Queue-Id: 84248A001C X-Stat-Signature: te79fqa9fygc3hqi3jckj7nihgj87z1a X-Rspamd-Server: rspam06 X-HE-Tag: 1741877948-931539 X-HE-Meta: U2FsdGVkX18xrkM+VhzXKj2dCp3kwPp8Dlv/Tt3179JVQwb+iRpu7pTt4599pnpHTZx+RwVZWVq+kbF6JEi3Ii9JYSFwrHCeqT3jC9IKbHzDBhOe5HD3G/oXjxbm50Muz1KhAAoR9y7bnHvtac8APIZtHpM+4SnCzgd9TaQgoo2LdDH92Lm99HGPmJ/AI+C0UtMWELWMkTm4Rlg2iMZcbgvC/WHhxmDyc3IoepzzgedtIX8t73a/nksP18q0aBqf6+P5rOpybLwSNAqCYJYvCnpZqSb72IQ3lN5AUDOfUlTDUxRllJuoKD4mV9V7pk4oIIaRkankOtBdD+FWSZz6y5CdAhiLUgmIuy8cBY/WW7tZsljHZAkvWuFdERzPPrc6UgFmY1JcgyEJjCDkDeiky5P4yMDFfBvGTb+6SbuBpKbJx8y8BESlWCp14kD6npXTgK9W/GVQ0LQQxcSgeM43Eh4Ld7yVbdpH3FyqeuXLV9qsVG0nF054s7B56CSuYCBC8dcSNKdZe8BOKQYAb8XeS/uHZr8Wo/wlLwG/ZEM7lAZF305HI+XGzKam1JIep4h0G3+xhkbEiDDU+s9TVGZb7Imfq4KGb8pHcXInz8B6eWN4JGJJoIaUmDXJ55IdDqf38qYw4iEuqmS207IGb3Dh3bG/0xGoXbi28W/UtzkgL1pUXBTmxiEWgG9vvXC5u4uKo2UKUKbsvSB48SKFD1+uSyH4MDIsVzb00QlLuKHMzpyPtid3WWcBXO5TKV8CHtp8Hdj7OSDArOLs9RJ4sK3/LshgS0qbP923cl/P1jg3YgswbyqzUNtfLV8oblH/82YsfqRSDIZZ7YL5/UXUjOWQ5ggnjMr8H7fIsGIXQD9e8vbYcCX+nzeQu4kl09CUC6xNe7DrCHk2xT7AdqkXNFKwp3+lnUpOoYceBaTtkmU/7fQckr3ZY1BQlKkmoJlAhVikfnEhn1IK1U0cSJxyW7a SW7UQAkx A5kOJ9YI8k3IHEfBL3rYK/a6hKhfXzKuQ4ey2vCAN27+jBlLYw/c5LPy88MFuZAsi7zF3zcBFjEDbBE4Q0Nv3VWFvrbVamQcY23qJ1jReIYAlsS+c6eanBsIuMcIYvx9R5njc+PoS6+VMUkcNPzXkZ7vfPflbM9hv5CfMOAJbrKP+2t8Nq3QptOz6/nCXBwnXad/dz10gm/h0/qwH3VtzyYkt9ntBr0MeAhDerNkL4t0gXExSeY5JcSyhMlNiDNScQ3Gx4O+/ZmbolEx+xaMzf4T4+3BomVSYs3G9 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: We know that the passed in page is not part of a folio (it's a plain page allocated with GFP_ACCOUNT), so we should get rid of the misleading references to folios. Introduce page_objcg() and page_set_objcg() helpers to make things more clear. Signed-off-by: Matthew Wilcox (Oracle) --- mm/memcontrol.c | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/mm/memcontrol.c b/mm/memcontrol.c index 07f0b42fee05..93102319409a 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -2697,6 +2697,23 @@ static int obj_cgroup_charge_pages(struct obj_cgroup *objcg, gfp_t gfp, return ret; } +static struct obj_cgroup *page_objcg(const struct page *first) +{ + unsigned long memcg_data = first->memcg_data; + + if (!memcg_data) + return NULL; + + VM_BUG_ON_PAGE((memcg_data & OBJEXTS_FLAGS_MASK) != MEMCG_DATA_KMEM, + first); + return (struct obj_cgroup *)(memcg_data - MEMCG_DATA_KMEM); +} + +static void page_set_objcg(struct page *page, const struct obj_cgroup *objcg) +{ + page->memcg_data = (unsigned long)objcg | MEMCG_DATA_KMEM; +} + /** * __memcg_kmem_charge_page: charge a kmem page to the current memory cgroup * @page: page to charge @@ -2715,8 +2732,7 @@ int __memcg_kmem_charge_page(struct page *page, gfp_t gfp, int order) ret = obj_cgroup_charge_pages(objcg, gfp, 1 << order); if (!ret) { obj_cgroup_get(objcg); - page->memcg_data = (unsigned long)objcg | - MEMCG_DATA_KMEM; + page_set_objcg(page, objcg); return 0; } } @@ -3091,16 +3107,16 @@ void __memcg_slab_free_hook(struct kmem_cache *s, struct slab *slab, */ void split_page_memcg(struct page *first, unsigned order) { - struct folio *folio = page_folio(first); + struct obj_cgroup *objcg = page_objcg(first); unsigned int i, nr = 1 << order; - if (mem_cgroup_disabled() || !folio_memcg_charged(folio)) + if (!objcg) return; for (i = 1; i < nr; i++) - folio_page(folio, i)->memcg_data = folio->memcg_data; + page_set_objcg(&first[i], objcg); - obj_cgroup_get_many(__folio_objcg(folio), nr - 1); + obj_cgroup_get_many(objcg, nr - 1); } void folio_split_memcg(struct folio *folio, unsigned old_order, -- 2.47.2