From patchwork Mon Apr 3 20:18:32 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zi Yan X-Patchwork-Id: 13198726 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 90296C76196 for ; Mon, 3 Apr 2023 20:19:07 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B52686B0075; Mon, 3 Apr 2023 16:19:06 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id ADB216B0078; Mon, 3 Apr 2023 16:19:06 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 97BE96B007B; Mon, 3 Apr 2023 16:19:06 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 86CEB6B0075 for ; Mon, 3 Apr 2023 16:19:06 -0400 (EDT) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 5A50CC0A0E for ; Mon, 3 Apr 2023 20:19:06 +0000 (UTC) X-FDA: 80641193892.16.9B4304A Received: from out3-smtp.messagingengine.com (out3-smtp.messagingengine.com [66.111.4.27]) by imf02.hostedemail.com (Postfix) with ESMTP id 094E98000F for ; Mon, 3 Apr 2023 20:19:03 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=sent.com header.s=fm2 header.b="B9s/caMa"; dkim=pass header.d=messagingengine.com header.s=fm2 header.b=hdQl9dH6; spf=pass (imf02.hostedemail.com: domain of zi.yan@sent.com designates 66.111.4.27 as permitted sender) smtp.mailfrom=zi.yan@sent.com; dmarc=pass (policy=none) header.from=sent.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1680553144; h=from:from:sender:reply-to: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:references:dkim-signature; bh=PtE34Mi5e7fcyqY/yn1ZOTjs4FeBAcshGnyuLTQZvAU=; b=yijRJ8kvHxY0QHSMThQx54cCKHRc7nGhYUqf3lrDoaGaGWkKDaKA/1l9J1GfPHTYtIVi5Z XFxYNZTtPgtVg4fzpuJFqGNtwZnzwpWY4vTEzUBHFXVvAY8GSF9AuskcakNCLsAtAeYSg8 uAtFIDi/gccjuZf/1gX/QfrfKfUfKOg= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=pass header.d=sent.com header.s=fm2 header.b="B9s/caMa"; dkim=pass header.d=messagingengine.com header.s=fm2 header.b=hdQl9dH6; spf=pass (imf02.hostedemail.com: domain of zi.yan@sent.com designates 66.111.4.27 as permitted sender) smtp.mailfrom=zi.yan@sent.com; dmarc=pass (policy=none) header.from=sent.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1680553144; a=rsa-sha256; cv=none; b=aHTb7qiI18VWwnCsHXCngk6zd6nYxL2OvuxjHoaXF36fuIOWjDgwPxcFm/996BytjCwLlb jz0cJSN/zp6fTivzl9u1PdcGn8iNuxoemJSRSTkatt+EmVeqx77FBduuKZKXY0NnAQQe1h OJlqrPKIwYqwuvs69P3cyTCVEqftXiw= Received: from compute5.internal (compute5.nyi.internal [10.202.2.45]) by mailout.nyi.internal (Postfix) with ESMTP id 3E05D5C0081; Mon, 3 Apr 2023 16:19:03 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute5.internal (MEProxy); Mon, 03 Apr 2023 16:19:03 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sent.com; h=cc :cc:content-transfer-encoding:content-type:date:date:from:from :in-reply-to:message-id:mime-version:reply-to:reply-to:sender :subject:subject:to:to; s=fm2; t=1680553143; x=1680639543; bh=Pt E34Mi5e7fcyqY/yn1ZOTjs4FeBAcshGnyuLTQZvAU=; b=B9s/caMaukwcV+M6dZ kL9rfGdE67qmnEh6DZ+AUJ55B1lwYnKkiaFZvFvxWifT6Qeb1s+1Qzsdmuhybud9 yEJBjwhl17/yloWHzzlfAv0RE9u/jJDvDsBPxlC3V/+RtFzChmK/Iew9OQXh+BnW vTvWyK6zGm2BkJ3cYwL/+pUM0bq2Q/612wWE9WO7Y8w7gx1bxVRfySjBY8ffm+2S ouTUAk1Df/BVj5cSdbAM3AJY67x4h7boC1NsLkdywmHS5e/oU/GBeCPrrA795zDu mVP7OA8dK3cDuGuXOCDx9ca+E4uiXThMzuwRIeF+5edpSmRg7vFYqsxfu4jyB/j7 HY4A== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:message-id:mime-version:reply-to:reply-to:sender :subject:subject:to:to:x-me-proxy:x-me-proxy:x-me-sender :x-me-sender:x-sasl-enc; s=fm2; t=1680553143; x=1680639543; bh=P tE34Mi5e7fcyqY/yn1ZOTjs4FeBAcshGnyuLTQZvAU=; b=hdQl9dH6VQ/26IqYX DLyWdDnhElnsE5R5dMTtqP9vEPsjctti3fMutSNYYpRDF6z4WAhpyOlLdqQR/y5Z xko0rDzCgzEgEh/VJwcwic9W9BvKECkYWUtgNXga7PhLmmQUFPmi0LC5kx6zvKlX 1q18Xnd7DIGG0EupwueU/TfD14QpewPnBuxdDStvScTEMTYwylClaaoqhqvvJ/o2 9rLR0o+Q1ksTidiE0O+b+/7jCIzNyYaI/CLOfG5Gt6AJaT+HqXYBkhxzxzPOSGrU gE+Kd3Bjs59c9LjTGyD/ArDHxMJ9XS4JJwvMONKrytkBORXYOG7b4UYyTpZGs09T c9qqA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvhedrvdeijedgudegkecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfgh necuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmd enucfjughrpefhvfevufffkfforhgggfestdhqredtredttdenucfhrhhomhepkghiucgj rghnuceoiihirdihrghnsehsvghnthdrtghomheqnecuggftrfgrthhtvghrnhepvdeiue dthedttdfhgeevkeeuveefvdeuheejledtvefgjeetkedugfdvleevkeffnecuffhomhgr ihhnpehkvghrnhgvlhdrohhrghenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmh epmhgrihhlfhhrohhmpeiiihdrhigrnhesshgvnhhtrdgtohhm X-ME-Proxy: Feedback-ID: iccd040f4:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon, 3 Apr 2023 16:19:02 -0400 (EDT) From: Zi Yan To: "Matthew Wilcox (Oracle)" , Yang Shi , Yu Zhao , linux-mm@kvack.org Cc: Zi Yan , "Kirill A . Shutemov" , Ryan Roberts , =?utf-8?q?Michal_Koutn=C3=BD?= , Roman Gushchin , "Zach O'Keefe" , Andrew Morton , linux-kernel@vger.kernel.org, cgroups@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-kselftest@vger.kernel.org Subject: [PATCH v3 0/7] Split a folio to any lower order folios Date: Mon, 3 Apr 2023 16:18:32 -0400 Message-Id: <20230403201839.4097845-1-zi.yan@sent.com> X-Mailer: git-send-email 2.39.2 Reply-To: Zi Yan MIME-Version: 1.0 X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: 094E98000F X-Stat-Signature: 6hhjnumt7gs9p96wyf9xk1uq633akfk3 X-Rspam-User: X-HE-Tag: 1680553143-551680 X-HE-Meta: U2FsdGVkX19djKj63OO0u2aIT4EP3RNB+g0mPJ8DC+1g4jlu6pUpdjx4P9yhPHkv8YpLSlzGjl4oJoqzji3pAFW2K1vfT6TlXCMdk8dHV64+qWJ5YoTzFb9osB/x5+iQI5lRaBTMqCN5o/2WT1AL3KpxzEISgNFBYPOjU815Gx5k3HCoapd8Ieb0szh6WaAbXMUkMufXXXPF2z+tsLLLr4hnMRWqvxSJ0xt7xe5TUKmWAmXYO9EHXe+sjA3LTLs6S2NEZETqsIQ1z0T/citgyudc0YxpJz27m52wMfyfFUKhduBS9+No0PY1OT5kGfZUlQOh0o+MKGTEdsO/KN2O1eOvkUcyhub78RTO/zllBxf2TWJlXmDeYAiRYEibiCc6vmS4ue1s70nGUa7mQk2IW87I5XeYS1GEZYTU+VMnucNdlYNKcxCG5r3sHJrcVPkXDJZBlN63J2R08qvt2KX3XGbs6b/WuwEjY97K/3K50nZeKFcUre7DMYznkyEOhSgbjoDgiZXnt7E2VATSdyrKbqiPOAQFqWy0URcs6r/NzlC7e0ascCTsGnA7U4JVY/dZFMlKu6ritldtaMAQmwknND0W/pPOALDgwfAMS6IQ1N0vMPGHCsCUkBAPwTGS4I+WCdiLzsb6ntLdRMC8f4MDr02VUivqEguNXMrOlR0Fenab01d5xJ42rA/lb3t0nuyAHN1DgHCk24vNRYyQ2tnRjuYpJVR+WgkQiH/OqFX10ajc9SMNG+Jo+WT1iJEqWfYy3pRIpMGWpxskiVPodp9rWDC/PcXrlb4C7tX9AaAgBcNCF1hTnueLk5AseG9wKvZIK8an8/aanZl63dL6nnJ8EZiBY/zy3lpYk1cFUW1114ppT4D5gmF0Ekzj3CjG8KkQtXLr3SOzGqxfB8aC6yPaipYraBr7+l1GdNyAD0FQFKZL1HASUwcPkM/NoI04/X84gWaCGmjCrRchYswz3Bl XcCSRkiU C+E6HILkJ9aznvsbRl2sWT/PQ6CrpqT4pSbDKkqgOTYQJHzr5oUPOMacQBPUcrfum8LtDvC/EXbhiox5kCqEPU3vRNpkOtjAWZsBcqZGAkT76axteYS/7IkFBUfBN/pCcwdzjUisFbXKICLvZM+1zy6CIPvYH8fhlutNZluUikPgbHnH+RAhsR9zRqoFgqo0AsgUwg0vcI9ZRZ0BrLm/xJAsYkhFbWvFMXFbYaSArGqyZrPRjuU8XrPrv3KGvJ7SvM6ptUf0nvV5gnsQAsdHew0meJmUJuUb0on3C4STDpnJ/gWQn9lQEpHOQZBSm1I/7W4coRCN1RSX1wcKBOTjCeZaK8pfNxscvx6Z/7vX3Ih/5K7dnRoj7lly6tOAW+dV32G7ljDYijX2riG2kRgxspE2LQq0mF4mrHnF/dnnSM/ZJn7anHSN2k7PTLnNENM7zfCaNFHRaAzAYU22FL+w4fzAXJYFc4FWZxqDDgTnWaEPXhU3R2hmnzm/LjFq6ElUXOZTGB9dJtO+mQhpaFzlZ7j5HJd5tC16+3aXr 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: From: Zi Yan Hi all, File folio supports any order and people would like to support flexible orders for anonymous folio[1] too. Currently, split_huge_page() only splits a huge page to order-0 pages, but splitting to orders higher than 0 is also useful. This patchset adds support for splitting a huge page to any lower order pages and uses it during file folio truncate operations. The patchset is on top of mm-everything-2023-03-27-21-20. Changelog === Since v2 --- 1. Fixed an issue in __split_page_owner() introduced during my rebase Since v1 --- 1. Changed split_page_memcg() and split_page_owner() parameter to use order 2. Used folio_test_pmd_mappable() in place of the equivalent code Details === * Patch 1 changes split_page_memcg() to use order instead of nr_pages * Patch 2 changes split_page_owner() to use order instead of nr_pages * Patch 3 and 4 add new_order parameter split_page_memcg() and split_page_owner() and prepare for upcoming changes. * Patch 5 adds split_huge_page_to_list_to_order() to split a huge page to any lower order. The original split_huge_page_to_list() calls split_huge_page_to_list_to_order() with new_order = 0. * Patch 6 uses split_huge_page_to_list_to_order() in large pagecache folio truncation instead of split the large folio all the way down to order-0. * Patch 7 adds a test API to debugfs and test cases in split_huge_page_test selftests. Comments and/or suggestions are welcome. [1] https://lore.kernel.org/linux-mm/Y%2FblF0GIunm+pRIC@casper.infradead.org/ Zi Yan (7): mm/memcg: use order instead of nr in split_page_memcg() mm/page_owner: use order instead of nr in split_page_owner() mm: memcg: make memcg huge page split support any order split. mm: page_owner: add support for splitting to any order in split page_owner. mm: thp: split huge page to any lower order pages. mm: truncate: split huge page cache page to a non-zero order if possible. mm: huge_memory: enable debugfs to split huge pages to any order. include/linux/huge_mm.h | 10 +- include/linux/memcontrol.h | 4 +- include/linux/page_owner.h | 10 +- mm/huge_memory.c | 137 ++++++++--- mm/memcontrol.c | 10 +- mm/page_alloc.c | 8 +- mm/page_owner.c | 8 +- mm/truncate.c | 21 +- .../selftests/mm/split_huge_page_test.c | 225 +++++++++++++++++- 9 files changed, 365 insertions(+), 68 deletions(-)