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 6A15ECD11C2 for ; Wed, 10 Apr 2024 03:47:22 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BDDB36B0082; Tue, 9 Apr 2024 23:47:21 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id B3F606B0083; Tue, 9 Apr 2024 23:47:21 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9B9396B0087; Tue, 9 Apr 2024 23:47:21 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 792506B0082 for ; Tue, 9 Apr 2024 23:47:21 -0400 (EDT) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 6767716062C for ; Wed, 10 Apr 2024 03:47:20 +0000 (UTC) X-FDA: 81992237040.10.5DD089C Received: from mail-pf1-f179.google.com (mail-pf1-f179.google.com [209.85.210.179]) by imf14.hostedemail.com (Postfix) with ESMTP id 7829B100002 for ; Wed, 10 Apr 2024 03:47:18 +0000 (UTC) Authentication-Results: imf14.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="HjM/08HM"; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf14.hostedemail.com: domain of seakeel@gmail.com designates 209.85.210.179 as permitted sender) smtp.mailfrom=seakeel@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1712720838; 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-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=3ScVv2cVL2IqKu4xZ+K+tP2lIBxE9zyAR4grQNU+Bjo=; b=aBHG5rWCswqBc7Ef8rSZb1JWZN2dv8Nk2yHPWof4+m6q3MqMZqZlh0zoIdeJSLNlxQnRLg DOgcXtc7lr4aM3XM+h22phZcdPtxknTNK88UBGASRrBkRgSnsxqNjHHfO75gKyKn2dq0kR mvUrs7LmNLw/EKp1B7N3Vwhxj7aS0xE= ARC-Authentication-Results: i=1; imf14.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="HjM/08HM"; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf14.hostedemail.com: domain of seakeel@gmail.com designates 209.85.210.179 as permitted sender) smtp.mailfrom=seakeel@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1712720838; a=rsa-sha256; cv=none; b=p6kmbhhMkYSQ1VuE1sGL9MFuou8dvwSe5KJMlFj6EHy7DE0FMU0iiHVQGD7vO7zz+znduh 93BKGDMKbyNNJ8oteUm4BU+PLQ1o3X55kznMDkz9BMizJHFtcyuPj17NMdklSDHs4U8Pgy KoqXw9Sr7WKBqzV1qR1xp+3CmbK+Lkw= Received: by mail-pf1-f179.google.com with SMTP id d2e1a72fcca58-6ed2170d89fso2019485b3a.1 for ; Tue, 09 Apr 2024 20:47:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1712720837; x=1713325637; darn=kvack.org; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=3ScVv2cVL2IqKu4xZ+K+tP2lIBxE9zyAR4grQNU+Bjo=; b=HjM/08HMxEblX55P2NV3TgIWZQk1ksMVA50VIo8AEsDIZ+GuBrAsWNWXUeHMz1HF7W 3LFPydra4EhWNJ9DNBqMadKmTsC7fuMhLwczKqT4sLjrA1QohJh+hcQlJ2m7HtcVjkdO 5zQAJZCkqSej+Lmi8Zi96FSP5zds928h4HPengaWQIKjvlafjmpyxUjRv6HOONAycaN4 SaFLaz/KuKfHyv+TYm2T/vW4KEafYFXGzcwDVMYDTZDeuD/viE8uNqabDfqO5U32+fau rr3pDfZboGBN2abnpsx59T0i/6j5+nyjnxwEARX+jzOKWTIca3fRXl87lsKpT2IEcjjw wbOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712720837; x=1713325637; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=3ScVv2cVL2IqKu4xZ+K+tP2lIBxE9zyAR4grQNU+Bjo=; b=pj0UVj+9kwl+Nq8VeO3vE+DiHTHExDp139yLwsuhvSmQxfQfPs2ppbNUzd4pSDda4Z 9czWXP1RTQIT3wqsJ942WvJptvZhxqJ4NgbHG4ZvD4U2d6jW6OfMUYQapEa27TgLbg5O 9DkiwKCPN08JANaOmDqfbovRfFgaaP1ZnzaNtPttwzBx6s5Lpj16VSmeDq3ST0Z3Lqvh 2ugbgEKws6feQu1XRzciwSkaT4DVMvEVxuBjYz/cRsE1MuDjaHejK5wGOKHo98eLHXNc w6dfPHcyD1QyKbdeQWGfy/jdpnhtLU7SO/DU/nI25lpLYZX9sR2MMJbYvlyXlJJIdi8M PrOw== X-Forwarded-Encrypted: i=1; AJvYcCVnxu7+R+jWKAzfxIPaty/hwHdrhwJNjFjA0XayWP1vCOd7ZyfYchx7OdZl5OSgHf4uQaNbV5b4MfkD8U+58tR/R+s= X-Gm-Message-State: AOJu0YyefP6/S7drLluLhuToKTcV1vqzSIVlASkbw6U3/WZnlM0P6shr ZXD4AAu/8h+pMWwTw5hEyejB6nVdlSVgP5LHRSwBbQu1AA5upj1Q2iVUaih7 X-Google-Smtp-Source: AGHT+IFiB5jsn3AGo/5iAgNUbHEhKu4d5iOYuirmAZu/Ka6Satlkn8EVmM7q7CuefwC6pNruOCFhXw== X-Received: by 2002:a05:6a20:9185:b0:1a8:6727:1c6 with SMTP id v5-20020a056a20918500b001a8672701c6mr2242227pzd.14.1712720837184; Tue, 09 Apr 2024 20:47:17 -0700 (PDT) Received: from [192.168.255.10] ([43.132.141.21]) by smtp.gmail.com with ESMTPSA id f24-20020a631018000000b005f07f34eb59sm9050174pgl.27.2024.04.09.20.47.14 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 09 Apr 2024 20:47:16 -0700 (PDT) Message-ID: Date: Wed, 10 Apr 2024 11:47:12 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v4 8/9] mm/ksm: Convert chain series funcs and replace get_ksm_page To: David Hildenbrand , alexs@kernel.org, Andrew Morton , linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: Izik Eidus , Matthew Wilcox , Andrea Arcangeli , Hugh Dickins , Chris Wright References: <20240409092826.1733637-1-alexs@kernel.org> <20240409092826.1733637-9-alexs@kernel.org> <7a8d8005-3cec-4647-82b0-2d55d0ef34fc@redhat.com> Content-Language: en-US From: Alex Shi In-Reply-To: <7a8d8005-3cec-4647-82b0-2d55d0ef34fc@redhat.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: 7829B100002 X-Stat-Signature: iz4i5e399c8g453knczfnarssqe9f9ia X-Rspam-User: X-HE-Tag: 1712720838-889055 X-HE-Meta: U2FsdGVkX1+Pe3hRjz3853lVX94qG5u2sw8+efqwYSBdMglJ7xTIAuk7erOBRmfaKOU7uyFN+TEEXoZzIDjNXdI6VeLuCphmSmdvWUECtdoS1GPGncGbHnxjd8kkYOpjBneXdZfZ15deWWlC847OIRXXI5nJmxan1BVxuEgSiI9AwPA42wpnbjhPjeoeEVhET1zmitF8+MhB9c40ySI+iSjS3sgUNMeSSfJooUv28ao6C9TbVifAqYXvZHhI65TVLcGs/I1Krhdk/W7qdSITLVUSGYtDtRleWfAe3oxO1wJToyEna+p955dZfaPdsJXabJgH1GwaBq64QmfPHSOY40Z6Xu7ijhCUhV0Vm+4XASdSJqCMSBjgUhdngsHTEAWi8TZSfMPGAMHjJwxDGVIbFlPMRaIZBnSZOPrq047DtxAt9IKILAlfLo4OwzGgrdUCbG7mgMTggHwW2sMzz77ncKrL/zZJyKEXhT/OVF7bCmqN/sJindLA1B2XBn0C5Qg6FYWc3GL9NjoQJKl0XWIEMiITKP0mzNL86x5FNX12CnAoAvuSThkveWj8+NSqvSxF9ynj+d5q7ePxBDKcYxwZ4/JHpg/Y6Vh2tlx5yFK77LcDLYVvioxJbEgy9nBnD19qmSOUOI5KP2axykjVK1TqKHuoa143rL79byBxCEMNiqBncDxTzpjQCWYY5ju7u6X+fok+BDerbkwu4KeoKBwPjEhXu9xctKquGEBeo5D3zVDSTf6AWDr09HHOfAPoD5Y5e+Z8FGGGXy+PicY2Y3zhfTTZyAEyd9UEXIZljY9BE+gKqA5QRKtSYS2/L4dytOZMAgBiPVcd/62vTgW6LIwTvI4xvrugcIP5uTWNEhQpdVWJB9jtM2L4KkhQNYrhXkZVk/BiRLtq5PQSep2icMplPE4xs5fdCh/ZWPqppij9HgW/vJM3JN9Zyk6IopfHYpZ292HopjQ8NKcjF1NNUW9 Hg0odV75 lpEvrQ2JIWN/C88UdQ+tN/A8ZcMnD6aPwmCp+nW91M5L8Ez/2eUNPxRfslvy+h0qgZNe2/qb32OciSrqV+CFqSIgCrsz2fYJqHmXtFDhcsDG3Z5iJPwqn6xQrK61agFxWu+FesobWSeuNE6A9y2osH1Mozua4I3gQVaDjn3nmdQXw0ScEsrSOMTNZcPA66KoyP7pj+dfggiUgu26lZ6K+OA0ocEQWU5XAK2C/EfPmjNDySB2HZeV7IMvsER8BauqXE3JzXhACQ28mfFMFqvDRuo9wUbs5FYaoAZCRGL5LTmIQE2zr5PkJyH827PHDpKWqh/CNVBPq0+lUpwSwUkNRu6/reiqF24cbpinLPcNJknVjLAqOwkMWmEsEo1HrBeq8BHElNYDX8mdUNhuWAL2cI2/4sRYAYxCESN7vaUIisQmfJihFOFv14RY872/IZKxExThNhL+Q5OytTk2JpTpdO2CbiMw8vEG+OzINLf/5OIUGktAulbs3Zrv801YjF8RodafbejbQCqYG+alzxD59TSjX8xne8xFluVmmwopboiG5ux8zDN+t0Sz81/Vv9TIL/7b/XXCglOos+PLD0deBscCMduktltoH8NtPIQ1VljxtW6RsteuR11m/fbzhw+f0pR6asGecOGZRgKbKqroxV6R9ITsYK1ISkGlLlitqqoaAyQJwc76qyA5kMTYr018YMiGdAM8vwmIsOx8FAlYI8Tfi4HvM2fOLolmhiNPvF7Xu7noQwf1m0KgDYozVJr6xgXpAaUzVSbK532cFxl6TCNI93H+7ciW4lyjLx/AmsvCaYNvOJ4CLFgaX2O0JjnC3rvIr 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: On 4/9/24 7:02 PM, David Hildenbrand wrote: > On 09.04.24 11:28, alexs@kernel.org wrote: >> From: "Alex Shi (tencent)" >> >> In ksm stable tree all page are single, let's convert them to use and >> folios as well as stable_tree_insert/stable_tree_search funcs. >> And replace get_ksm_page() by ksm_get_folio() since there is no more >> needs. >> >> It could save a few compound_head calls. >> >> Signed-off-by: Alex Shi (tencent) >> Cc: Izik Eidus >> Cc: Matthew Wilcox >> Cc: Andrea Arcangeli >> Cc: Hugh Dickins >> Cc: Chris Wright >> Reviewed-by: David Hildenbrand > > I don't recall giving that yet :) Ops... Sorry for misunderstand! > > You could have kept some get_ksm_page()->ksm_get_folio() into a separate patch. > > i.e., "[PATCH v3 11/14] mm/ksm: remove get_ksm_page and related info" from your old series could have mostly stayed separately. > Yes, but the 12th and 11th patches are kind of depends each other, like after merge 8,9,10,12th with get_ksm_page replaced, ../mm/ksm.c:993:21: error: ‘get_ksm_page’ defined but not used [-Werror=unused-function] 993 | static struct page *get_ksm_page(struct ksm_stable_node *stable_node, | ^~~~~~~~~~~~ so we have to squash the 11th and 12th if we want to merge 12th with 8,9,10... or we can do just merge the 8,9,10 and keep 11th, 12th as your first suggestion? > [...] > >>   /* >> @@ -1829,7 +1821,7 @@ static __always_inline struct page *chain(struct ksm_stable_node **s_n_d, >>    * This function returns the stable tree node of identical content if found, >>    * NULL otherwise. >>    */ >> -static struct page *stable_tree_search(struct page *page) >> +static void *stable_tree_search(struct page *page) > > There is one caller of stable_tree_search() in cmp_and_merge_page(). > > Why the change from page* to void* ? Uh, a bit more changes needs if we want to remove void*. diff --git a/mm/ksm.c b/mm/ksm.c index 0d703c3da9d8..cd414a9c33ad 100644 --- a/mm/ksm.c +++ b/mm/ksm.c @@ -1815,7 +1815,7 @@ static __always_inline struct folio *chain(struct ksm_stable_node **s_n_d, * This function returns the stable tree node of identical content if found, * NULL otherwise. */ -static void *stable_tree_search(struct page *page) +static struct folio *stable_tree_search(struct page *page) { int nid; struct rb_root *root; @@ -2308,6 +2308,7 @@ static void cmp_and_merge_page(struct page *page, struct ksm_rmap_item *rmap_ite struct page *tree_page = NULL; struct ksm_stable_node *stable_node; struct page *kpage; + struct folio *folio; unsigned int checksum; int err; bool max_page_sharing_bypass = false; @@ -2333,7 +2334,8 @@ static void cmp_and_merge_page(struct page *page, struct ksm_rmap_item *rmap_ite } /* We first start with searching the page inside the stable tree */ - kpage = stable_tree_search(page); + folio = stable_tree_search(page); + kpage = &folio->page; if (kpage == page && rmap_item->head == stable_node) { put_page(kpage); return; > I suspect cmp_and_merge_page() could similarly be converted to some degree to let kpage be a folio (separate patch). > Yes, there are couple of changes needed for cmp_and_merge_page() and series try_to_merge_xx_pages(), I am going to change them on the next series patches. Guess 2 phases patches are better for a big/huge one, is this right? Thanks Alex