From nobody Sat Feb 7 12:11:36 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9EF0C1B27A for ; Fri, 22 Mar 2024 08:34:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711096474; cv=none; b=h9swTYvqRfToVz1PQL1uo0ax5dX62w+fX2yDzEfIG0Svkr7G/WlTKf/HbPklbswp40aJXpWDg2H1vfFXRp5RXk7j9TlEMRGMUZJCIYP1BNYo2yDZD0K3kTjtYrXda0ll54f++XjeoipZiQqNnw042xFFE+ICoF8ey+nHIrC18+A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711096474; c=relaxed/simple; bh=QDhgdKPLSZ+LCN9CDxfi2X7NfAWh6m7wtgm+INCh864=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=AvMtxBHPUgP/whNuaXLyrIEVkk9CEbKKKimAVlVpR4bsfeixMhgepx9NSxUueTBV9d90oqqGWzBH/cwdDaPIsKFHXiGENSTxVYiIgLp9emdRnVWwklqckkO4138od138MCHYCONmmevFyguMee4A9SLfsdZxHTKD9MLxq/YNKpQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=UAsYbdgL; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="UAsYbdgL" Received: by smtp.kernel.org (Postfix) with ESMTPSA id E7644C433C7; Fri, 22 Mar 2024 08:34:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1711096474; bh=QDhgdKPLSZ+LCN9CDxfi2X7NfAWh6m7wtgm+INCh864=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=UAsYbdgLPm6ColwLuGvdCRPIly5CPWzeKDimqEmd+ahSq/lji8PuZyO5ikptMXNRE 0tN4+9vjCPhdJSaDLadCTU3io0sosPse0dDeI6FKQ2pgfwAemBf0qoA+v3qWYHKnEL 7MznxUdS1LckQw/aHwXlA3ZFmNKMQguN28vs2gLoNP1+0neQAeiUc0mcZ4dwY64YiL 5gypatqFtmUoPs7+xuYnnWR+CdUeeLwrrRtJKVaxpvTom1yRJ8lGxDHp4jBIdacHTo pU3UuLwbIwtPPqIK3iAJwZJ+psijiC4YyAKdZEB5LFMfWXVtIN3kitnpzNMn9SOplM P9GkJonvDhM3g== From: alexs@kernel.org To: Matthew Wilcox , Andrea Arcangeli , Izik Eidus , david@redhat.com, Andrew Morton , linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: "Alex Shi (tencent)" , Hugh Dickins , Chris Wright Subject: [PATCH v2 01/14] mm/ksm: add ksm_get_folio Date: Fri, 22 Mar 2024 16:36:48 +0800 Message-ID: <20240322083703.232364-2-alexs@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240322083703.232364-1-alexs@kernel.org> References: <20240322083703.232364-1-alexs@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: "Alex Shi (tencent)" The ksm only contains single pages, so we could add a new func ksm_get_folio for get_ksm_page to use folio instead of pages to save a couple of compound_head calls. After all caller replaced, get_ksm_page will be removed. Signed-off-by: Alex Shi (tencent) Cc: Izik Eidus Cc: Matthew Wilcox Cc: Andrea Arcangeli Cc: Hugh Dickins Cc: Chris Wright --- mm/ksm.c | 40 ++++++++++++++++++++++++---------------- 1 file changed, 24 insertions(+), 16 deletions(-) diff --git a/mm/ksm.c b/mm/ksm.c index 8c001819cf10..ac080235b002 100644 --- a/mm/ksm.c +++ b/mm/ksm.c @@ -915,10 +915,10 @@ enum get_ksm_page_flags { * a page to put something that might look like our key in page->mapping. * is on its way to being freed; but it is an anomaly to bear in mind. */ -static struct page *get_ksm_page(struct ksm_stable_node *stable_node, +static struct folio *ksm_get_folio(struct ksm_stable_node *stable_node, enum get_ksm_page_flags flags) { - struct page *page; + struct folio *folio; void *expected_mapping; unsigned long kpfn; =20 @@ -926,8 +926,8 @@ static struct page *get_ksm_page(struct ksm_stable_node= *stable_node, PAGE_MAPPING_KSM); again: kpfn =3D READ_ONCE(stable_node->kpfn); /* Address dependency. */ - page =3D pfn_to_page(kpfn); - if (READ_ONCE(page->mapping) !=3D expected_mapping) + folio =3D pfn_folio(kpfn); + if (READ_ONCE(folio->mapping) !=3D expected_mapping) goto stale; =20 /* @@ -940,41 +940,41 @@ static struct page *get_ksm_page(struct ksm_stable_no= de *stable_node, * in folio_migrate_mapping(), it might still be our page, * in which case it's essential to keep the node. */ - while (!get_page_unless_zero(page)) { + while (!folio_try_get(folio)) { /* * Another check for page->mapping !=3D expected_mapping would * work here too. We have chosen the !PageSwapCache test to * optimize the common case, when the page is or is about to * be freed: PageSwapCache is cleared (under spin_lock_irq) * in the ref_freeze section of __remove_mapping(); but Anon - * page->mapping reset to NULL later, in free_pages_prepare(). + * folio->mapping reset to NULL later, in free_pages_prepare(). */ - if (!PageSwapCache(page)) + if (!folio_test_swapcache(folio)) goto stale; cpu_relax(); } =20 - if (READ_ONCE(page->mapping) !=3D expected_mapping) { - put_page(page); + if (READ_ONCE(folio->mapping) !=3D expected_mapping) { + folio_put(folio); goto stale; } =20 if (flags =3D=3D GET_KSM_PAGE_TRYLOCK) { - if (!trylock_page(page)) { - put_page(page); + if (!folio_trylock(folio)) { + folio_put(folio); return ERR_PTR(-EBUSY); } } else if (flags =3D=3D GET_KSM_PAGE_LOCK) - lock_page(page); + folio_lock(folio); =20 if (flags !=3D GET_KSM_PAGE_NOLOCK) { - if (READ_ONCE(page->mapping) !=3D expected_mapping) { - unlock_page(page); - put_page(page); + if (READ_ONCE(folio->mapping) !=3D expected_mapping) { + folio_unlock(folio); + folio_put(folio); goto stale; } } - return page; + return folio; =20 stale: /* @@ -990,6 +990,14 @@ static struct page *get_ksm_page(struct ksm_stable_nod= e *stable_node, return NULL; } =20 +static struct page *get_ksm_page(struct ksm_stable_node *stable_node, + enum get_ksm_page_flags flags) +{ + struct folio *folio =3D ksm_get_folio(stable_node, flags); + + return &folio->page; +} + /* * Removing rmap_item from stable or unstable tree. * This function will clean the information from the stable/unstable tree. --=20 2.43.0 From nobody Sat Feb 7 12:11:36 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9914C1CAA9 for ; Fri, 22 Mar 2024 08:34:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711096477; cv=none; b=Ud8+2DRwvGrq9tnb0pj39vKIFx9rcoGWZS25uMH0ISb0yA9Y/IwNPs/WWdIZyV5OQ0fVGhiOdcrstNDOKZ63pY6lJYBQioeY8ECE4VRCAKAi6NuwW1TAv9uo1AOpJuMdp/prPwvbNuJUeHO2QppMfshRT4hUvSZC2Y5xkGj+YeM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711096477; c=relaxed/simple; bh=u2CpON+ylVsyq590GuxgPX8aACtNcQ54tsZFdjhyaWs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=JfiFO3fakYSj8x5p5z87/fPbpwJ5MzmpAyv/GafkgeAsNGNJVbazt+8KZ82UQJyqRswhAji58UltSVvv97479s7toIjMGpDPNkVfokFcWCr3+0g7QeWPW6DvwVPHS0icQY4iOYneRJ2FMSo/ADBoe4QIbzLH/BpaQAyP5mxkdyI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=AaBhc3oW; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="AaBhc3oW" Received: by smtp.kernel.org (Postfix) with ESMTPSA id C4E41C433C7; Fri, 22 Mar 2024 08:34:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1711096477; bh=u2CpON+ylVsyq590GuxgPX8aACtNcQ54tsZFdjhyaWs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=AaBhc3oW54M2fVP4zko3bI7wwqPbKFrZpITxoE8zMB09nSGioEQ8ciGrhyoNVw9dl 5YrCQpT1pseBVwA33cgDlGFOx4FQlanhgK2UjNScC+SZBglLPfDqK1UofWxdr47roq 6GMyA8MaGGHVqiCCLVMQRL+VqScXIDmuLZrG9NMJ66kWpS40p0Zaj/cm+2GbhOMhTu e0ethnI0isP9gkZHmiQAYCHBVOZaM2T/frovkexYNf6fSyJbKzLJGhv/JOGivKU3Zb RCqpiaOpNDTHCBh4+Tx8KnVwnrqI1pqgWU499eH8OT7ssfyiP0MU1lfCoLJ1RBaMHz M4RaK8HjY2+1A== From: alexs@kernel.org To: Matthew Wilcox , Andrea Arcangeli , Izik Eidus , david@redhat.com, Andrew Morton , linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: "Alex Shi (tencent)" , Hugh Dickins , Chris Wright Subject: [PATCH v2 02/14] mm/ksm: use folio in remove_rmap_item_from_tree Date: Fri, 22 Mar 2024 16:36:49 +0800 Message-ID: <20240322083703.232364-3-alexs@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240322083703.232364-1-alexs@kernel.org> References: <20240322083703.232364-1-alexs@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: "Alex Shi (tencent)" To save 2 compound_head calls. Signed-off-by: Alex Shi (tencent) Cc: Izik Eidus Cc: Matthew Wilcox Cc: Andrea Arcangeli Cc: Hugh Dickins Cc: Chris Wright --- mm/ksm.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/mm/ksm.c b/mm/ksm.c index ac080235b002..ea3dabf71e47 100644 --- a/mm/ksm.c +++ b/mm/ksm.c @@ -1006,16 +1006,16 @@ static void remove_rmap_item_from_tree(struct ksm_r= map_item *rmap_item) { if (rmap_item->address & STABLE_FLAG) { struct ksm_stable_node *stable_node; - struct page *page; + struct folio *folio; =20 stable_node =3D rmap_item->head; - page =3D get_ksm_page(stable_node, GET_KSM_PAGE_LOCK); - if (!page) + folio =3D ksm_get_folio(stable_node, GET_KSM_PAGE_LOCK); + if (!folio) goto out; =20 hlist_del(&rmap_item->hlist); - unlock_page(page); - put_page(page); + folio_unlock(folio); + folio_put(folio); =20 if (!hlist_empty(&stable_node->hlist)) ksm_pages_sharing--; --=20 2.43.0 From nobody Sat Feb 7 12:11:36 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2F7C9210E9 for ; Fri, 22 Mar 2024 08:34:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711096480; cv=none; b=jXb2HuPt1lfQGRcN3yalseA7iW/3RYp8yxxDBw5UoDXcOb5zca9z79h263AhDvWM3FOnioew2gLg6lY6KN7ITgHO5LzzGBfixhskBYidDz4atJ1gmk2Wbt9MLXiZT7pnM3r4Na68DgYbWUmJYlyUtiDxVyZD0Iaw6B3lRO6bdcY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711096480; c=relaxed/simple; bh=JrD4352jMaYHyAz8IW4Sk3DaQV9z/B+p1XK/ErSE0cs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=BxfIdZrsTbbJFVpFIb1gU9rH0vfHbhTlZI8DLJDvXuY71jynt2QJdD4moMNO+jmMMbLscxSGr+jRlUFTtngGTvmbNTZ0grI/RQhsqrIHPTTWTzj6r07/gekPgY8r23gxyn29xfQF5MX+STkqc3yF7zTNK4aOf3i9hZW7lhcfkVE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=oZsUV3DT; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="oZsUV3DT" Received: by smtp.kernel.org (Postfix) with ESMTPSA id C6D24C433C7; Fri, 22 Mar 2024 08:34:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1711096480; bh=JrD4352jMaYHyAz8IW4Sk3DaQV9z/B+p1XK/ErSE0cs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=oZsUV3DTdJGLOu3ArzMd4oBovBPkSTl3ExBe2TyrGm2/jsGBl0k10Tvb00FSPq3S6 HrYImJ0RI3HDEKE7ufsczVtoViNfJEwZN9YIkae2ZLk6e3LzCTFevFL5JDTvjrfEi2 1Krww+MAEQwxg1AHgGsJp/Ixwx4wJqSIL3gSdw6vxRe5OKsZC9Q1IKRshBGsMmOMOI CEvi84IPNAKHdOC78TlZvwbMIAMRx/CYz+BIm3cTd59Td9FnlatulZGWWUAh0h/2Zo QrPXJLuUfcwuY1AVKIhMNeokjf9qdt96JM8SbuxOL/2KIkf6uHch3y3hWX9UK8wv3P OYqn8jLHP5OCQ== From: alexs@kernel.org To: Matthew Wilcox , Andrea Arcangeli , Izik Eidus , david@redhat.com, Andrew Morton , linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: "Alex Shi (tencent)" , Hugh Dickins , Chris Wright Subject: [PATCH v2 03/14] mm/ksm: add folio_set_stable_node Date: Fri, 22 Mar 2024 16:36:50 +0800 Message-ID: <20240322083703.232364-4-alexs@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240322083703.232364-1-alexs@kernel.org> References: <20240322083703.232364-1-alexs@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: "Alex Shi (tencent)" Turn set_page_stable_node() into a wrapper folio_set_stable_node, and then use it to replace the former. we will merge them together after all place converted to folio. Signed-off-by: Alex Shi (tencent) Cc: Izik Eidus Cc: Matthew Wilcox Cc: Andrea Arcangeli Cc: Hugh Dickins Cc: Chris Wright --- mm/ksm.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/mm/ksm.c b/mm/ksm.c index ea3dabf71e47..c9b7c5701f22 100644 --- a/mm/ksm.c +++ b/mm/ksm.c @@ -1109,6 +1109,12 @@ static inline void set_page_stable_node(struct page = *page, page->mapping =3D (void *)((unsigned long)stable_node | PAGE_MAPPING_KSM); } =20 +static inline void folio_set_stable_node(struct folio *folio, + struct ksm_stable_node *stable_node) +{ + set_page_stable_node(&folio->page, stable_node); +} + #ifdef CONFIG_SYSFS /* * Only called through the sysfs control interface: @@ -3241,7 +3247,7 @@ void folio_migrate_ksm(struct folio *newfolio, struct= folio *folio) * has gone stale (or that folio_test_swapcache has been cleared). */ smp_wmb(); - set_page_stable_node(&folio->page, NULL); + folio_set_stable_node(folio, NULL); } } #endif /* CONFIG_MIGRATION */ --=20 2.43.0 From nobody Sat Feb 7 12:11:36 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5F75E249FE for ; Fri, 22 Mar 2024 08:34:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711096483; cv=none; b=Wip+CpcuPqV8s0uqH9Dwy4OymN5o29I8/LLD2RhhZAbOSM8NJl+Lfo1vOTjYK15fQ9yU9OrDRxUPWHv+MwBNqVQmEBjAHNfF95il0cKDCuTZA2ICq09fDTC+J4O6i9aI2PuD3LMQj+UE4wMTszaMDCuoJo+aMMxJeH9xLrinPZg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711096483; c=relaxed/simple; bh=k8zytA2A5T1rgDUiIACZ6hBdX8Fv5Jcn+9QWsQNKn6E=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=uWJgjO0M6FncJ+jqgzi0jMNTyjNPqJyc0xPV4BN2BTcrIzN9nA6zfMTlNVxCJYY7S7Eptl7af1HPolLzR0DCzv1AUsKs8wAnS1iReU+2ppUgf0OB/HkeRDM8iZJjRWOkTs0aY8V6IGlcajC2GBEl2f4oucbta2UTfzkdHthON3Y= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=imVmTgVq; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="imVmTgVq" Received: by smtp.kernel.org (Postfix) with ESMTPSA id A5AF0C433F1; Fri, 22 Mar 2024 08:34:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1711096482; bh=k8zytA2A5T1rgDUiIACZ6hBdX8Fv5Jcn+9QWsQNKn6E=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=imVmTgVqlm+AmLk8Z+ZTMWUVNgNEq2BRlwccjhVyXLCB5qbeGmW6fnWIQVCdNlzid 06QraqFqwlS6y3vmnpi4Ap+WlLV/fStE6rPaOVtdHzI8NrNZ42fTJC9XPUrPp6ir+c GV4rj/JQSVNeSlk0ugfN6JCQ1XDjD1pSqTglUpse/EvLUm2T2jWrtq9YXKNEu9fuzn t69uwVBV97Ya9HH95qLpXX8br7iG5co6wHQvXztAm3v6yEEo3yOuQ4k31/8fwPTdEs MBLkSjMg134iZq1KJzMzfVW8NG/QHXg85sUGpSMLwN1pLXyxCrtZ7TX+M/Nl8s3kO0 7Uingur0uvApA== From: alexs@kernel.org To: Matthew Wilcox , Andrea Arcangeli , Izik Eidus , david@redhat.com, Andrew Morton , linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: "Alex Shi (tencent)" , Hugh Dickins , Chris Wright Subject: [PATCH v2 04/14] mm/ksm: use folio in remove_stable_node Date: Fri, 22 Mar 2024 16:36:51 +0800 Message-ID: <20240322083703.232364-5-alexs@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240322083703.232364-1-alexs@kernel.org> References: <20240322083703.232364-1-alexs@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: "Alex Shi (tencent)" pages in stable tree are all single normal page, so uses ksm_get_folio() and folio_set_stable_node(), also saves 3 calls to compound_head(). Signed-off-by: Alex Shi (tencent) Cc: Izik Eidus Cc: Matthew Wilcox Cc: Andrea Arcangeli Cc: Hugh Dickins Cc: Chris Wright --- mm/ksm.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/mm/ksm.c b/mm/ksm.c index c9b7c5701f22..b6ee2bc7646f 100644 --- a/mm/ksm.c +++ b/mm/ksm.c @@ -1121,11 +1121,11 @@ static inline void folio_set_stable_node(struct fol= io *folio, */ static int remove_stable_node(struct ksm_stable_node *stable_node) { - struct page *page; + struct folio *folio; int err; =20 - page =3D get_ksm_page(stable_node, GET_KSM_PAGE_LOCK); - if (!page) { + folio =3D ksm_get_folio(stable_node, GET_KSM_PAGE_LOCK); + if (!folio) { /* * get_ksm_page did remove_node_from_stable_tree itself. */ @@ -1138,22 +1138,22 @@ static int remove_stable_node(struct ksm_stable_nod= e *stable_node) * merge_across_nodes/max_page_sharing be switched. */ err =3D -EBUSY; - if (!page_mapped(page)) { + if (!folio_mapped(folio)) { /* * The stable node did not yet appear stale to get_ksm_page(), - * since that allows for an unmapped ksm page to be recognized + * since that allows for an unmapped ksm folio to be recognized * right up until it is freed; but the node is safe to remove. - * This page might be in an LRU cache waiting to be freed, - * or it might be PageSwapCache (perhaps under writeback), + * This folio might be in an LRU cache waiting to be freed, + * or it might be in the swapcache (perhaps under writeback), * or it might have been removed from swapcache a moment ago. */ - set_page_stable_node(page, NULL); + folio_set_stable_node(folio, NULL); remove_node_from_stable_tree(stable_node); err =3D 0; } =20 - unlock_page(page); - put_page(page); + folio_unlock(folio); + folio_put(folio); return err; } =20 --=20 2.43.0 From nobody Sat Feb 7 12:11:36 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 42624383AD for ; Fri, 22 Mar 2024 08:34:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711096486; cv=none; b=Gj8aAINrXWg6GGuULApgePjuJEox+QIN4y/v3arKnYyYE9KaM6kAu8VRzpFQviorZBJxcyFye8JzOPqIKeuiUM2YcvQdvOghmtfUuWW0ovr97fLlkJ3KFrfJF2owesgsROnKFNgHdx4ui4i+0QG3zNKjKUa7sQK53vKIaSYyhRs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711096486; c=relaxed/simple; bh=swBWDDTfKPZfIshmO9+8+Tzqpp1exgNxKwXg3dE2124=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=bvDVumDV/iFnyRHvA2LYAwgEoj+q/5/obVi5PFGVOp84QxPNNeN71dYEHBXNTboudC/5P8mCCg9aNTAzp2S0cKbLAENXdb/jq7lzWJcOEqsoRx769vPzzLnWPCvN4oWa4wpb01v9ihXT2mhVocRRqwcMpSEXtWeD4hai/DbOz9A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=tGS9D7Rv; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="tGS9D7Rv" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 87C74C433C7; Fri, 22 Mar 2024 08:34:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1711096485; bh=swBWDDTfKPZfIshmO9+8+Tzqpp1exgNxKwXg3dE2124=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=tGS9D7RvKPTXxnlUVQ0m7lLcLgSe2JsQ/C16nFNsWIGdx4hoVu89jKYQPZ4pVIQkm LUZdfrNIl0j5qWWmh4/GQMYf3eOKTE6mHp5fIGtBMuuvvVAP+R5SFBNQbMPnw36m3V Rf2vKsB8o3WwISyorzm7bMYUo9LsItXJR25HAL8vwOxVRpln+3DCSY0tLqkFXpRFcx xS1EuUj37mxQQVQ1p71HaIYocf9QpwNj0O7EzfE4w/5f+JtGoz5o3C1LZy8CGETqLl Bm7PkXRuP6Zq38bMbL9QYNQNM6p9vGLqBrL3lahxrNBsWhLEtglFCySXScJBlQ1LDs bCd5xTUf+YRVA== From: alexs@kernel.org To: Matthew Wilcox , Andrea Arcangeli , Izik Eidus , david@redhat.com, Andrew Morton , linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: "Alex Shi (tencent)" , Hugh Dickins , Chris Wright Subject: [PATCH v2 05/14] mm/ksm: use folio in stable_node_dup Date: Fri, 22 Mar 2024 16:36:52 +0800 Message-ID: <20240322083703.232364-6-alexs@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240322083703.232364-1-alexs@kernel.org> References: <20240322083703.232364-1-alexs@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: "Alex Shi (tencent)" Use ksm_get_folio() and save 2 compound_head calls. Signed-off-by: Alex Shi (tencent) Cc: Izik Eidus Cc: Matthew Wilcox Cc: Andrea Arcangeli Cc: Hugh Dickins Cc: Chris Wright --- mm/ksm.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/mm/ksm.c b/mm/ksm.c index b6ee2bc7646f..a1e382ecd501 100644 --- a/mm/ksm.c +++ b/mm/ksm.c @@ -1631,14 +1631,14 @@ bool is_page_sharing_candidate(struct ksm_stable_no= de *stable_node) return __is_page_sharing_candidate(stable_node, 0); } =20 -static struct page *stable_node_dup(struct ksm_stable_node **_stable_node_= dup, - struct ksm_stable_node **_stable_node, - struct rb_root *root, - bool prune_stale_stable_nodes) +static void *stable_node_dup(struct ksm_stable_node **_stable_node_dup, + struct ksm_stable_node **_stable_node, + struct rb_root *root, + bool prune_stale_stable_nodes) { struct ksm_stable_node *dup, *found =3D NULL, *stable_node =3D *_stable_n= ode; struct hlist_node *hlist_safe; - struct page *_tree_page, *tree_page =3D NULL; + struct folio *folio, *tree_folio =3D NULL; int nr =3D 0; int found_rmap_hlist_len; =20 @@ -1663,18 +1663,18 @@ static struct page *stable_node_dup(struct ksm_stab= le_node **_stable_node_dup, * stable_node parameter itself will be freed from * under us if it returns NULL. */ - _tree_page =3D get_ksm_page(dup, GET_KSM_PAGE_NOLOCK); - if (!_tree_page) + folio =3D ksm_get_folio(dup, GET_KSM_PAGE_NOLOCK); + if (!folio) continue; nr +=3D 1; if (is_page_sharing_candidate(dup)) { if (!found || dup->rmap_hlist_len > found_rmap_hlist_len) { if (found) - put_page(tree_page); + folio_put(tree_folio); found =3D dup; found_rmap_hlist_len =3D found->rmap_hlist_len; - tree_page =3D _tree_page; + tree_folio =3D folio; =20 /* skip put_page for found dup */ if (!prune_stale_stable_nodes) @@ -1682,7 +1682,7 @@ static struct page *stable_node_dup(struct ksm_stable= _node **_stable_node_dup, continue; } } - put_page(_tree_page); + folio_put(folio); } =20 if (found) { @@ -1747,7 +1747,7 @@ static struct page *stable_node_dup(struct ksm_stable= _node **_stable_node_dup, } =20 *_stable_node_dup =3D found; - return tree_page; + return tree_folio; } =20 static struct ksm_stable_node *stable_node_dup_any(struct ksm_stable_node = *stable_node, --=20 2.43.0 From nobody Sat Feb 7 12:11:36 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0E13D3A8F0 for ; Fri, 22 Mar 2024 08:34:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711096489; cv=none; b=ZmeoEloRZePAWnk71PU7H15Wv8DTX/ohvad8yVNb9jISv3A76xGlZR6j+M+jhX3YD5HSF5OlxPf6ZZyQPpmXsW9m9Q+X8V0ONnQ90y10yKTgywBanEeWI1PdTO7BB3NI1qdcdrWyC/DI7Dfl3KA5DrVnlg+PV5/mqt7oVkreI9Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711096489; c=relaxed/simple; bh=mMH/7is2PyQdNPPcgd1XKt1tQVN1U+t8U42cK5CGbhw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=kaI+pWQpOcdrwowvf9pduyHmxcjoRLnLe7rexYeJTalgWUkRKOEIhiWmj3Ctjqev7OTtFUG+XVALDnXDbN6EYmEJ0pdZD99Fe64yGahtTruRucGpv+YIE/EMt5Exx1vrTHgiUbHBC2gF+M4AXxQ4JU4/g82PB6CXzFP8AAyD0MY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ZymVidz3; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="ZymVidz3" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 61807C433B2; Fri, 22 Mar 2024 08:34:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1711096488; bh=mMH/7is2PyQdNPPcgd1XKt1tQVN1U+t8U42cK5CGbhw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ZymVidz3av9KUT6Go6vA7X/x8b1ArdeFvYp18yRZGRi7LFSF5BGygSy2nSAuNS48N oV//U8dnoMVOjWa0BZ4rHVLr0EJ1qsYlNQfQ9RbKxZMY2/ATKY8XT1JCPMhq2ivANK u/nMXB+FYxQ9VgJFCSrQ+X7XAr1LA5u2XDrmtrwHXsB1AFYesR/Vm1xs/IKR5jygoU n2X+VDFIExCWPIFpToJPdrk1bWwaZmv3OEEGmZ96CEje5LCAjnu9xki4q/3PG0umlS B12ZuA20VXl0otZBh8fT6hYqd0DzBi8jxdsBwcVHmIBZBPffkFvku1uFrC1z8tcL0h oikhkdgIYR9Rg== From: alexs@kernel.org To: Matthew Wilcox , Andrea Arcangeli , Izik Eidus , david@redhat.com, Andrew Morton , linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: "Alex Shi (tencent)" , Hugh Dickins , Chris Wright Subject: [PATCH v2 06/14] mm/ksm: use ksm_get_folio in scan_get_next_rmap_item Date: Fri, 22 Mar 2024 16:36:53 +0800 Message-ID: <20240322083703.232364-7-alexs@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240322083703.232364-1-alexs@kernel.org> References: <20240322083703.232364-1-alexs@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: "Alex Shi (tencent)" Save a compound calls. Signed-off-by: Alex Shi (tencent) Cc: Izik Eidus Cc: Matthew Wilcox Cc: Andrea Arcangeli Cc: Hugh Dickins Cc: Chris Wright --- mm/ksm.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/mm/ksm.c b/mm/ksm.c index a1e382ecd501..cd607b942c26 100644 --- a/mm/ksm.c +++ b/mm/ksm.c @@ -2611,14 +2611,14 @@ static struct ksm_rmap_item *scan_get_next_rmap_ite= m(struct page **page) */ if (!ksm_merge_across_nodes) { struct ksm_stable_node *stable_node, *next; - struct page *page; + struct folio *folio; =20 list_for_each_entry_safe(stable_node, next, &migrate_nodes, list) { - page =3D get_ksm_page(stable_node, - GET_KSM_PAGE_NOLOCK); - if (page) - put_page(page); + folio =3D ksm_get_folio(stable_node, + GET_KSM_PAGE_NOLOCK); + if (folio) + folio_put(folio); cond_resched(); } } --=20 2.43.0 From nobody Sat Feb 7 12:11:36 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C1D9A168A8 for ; Fri, 22 Mar 2024 08:34:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711096491; cv=none; b=thB+W3dP1JV1ETyM0tdJpAC4L7leHEJ+TW7EHyKckIYb0RLLawjIZ9+V5WMW2WHU8fEpNu/trPjKjKz/Iqc9jEdYJLWGLvPQZrm0Ya1CgBnUK5Em1ZQlYzBGAtml/Fm881X5SYtZlmHOfv/vMPKuPJkVIpJzmOss5pzEXJeLqJQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711096491; c=relaxed/simple; bh=CRD+qsq6X8eUY6+mfkkDNsd4MjPhDaxu0Mmm/KE7kcA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=YZBlhBS0uj6alESBnWiFBCOWARiwke1q3FhPKlnt9eD3sV9I6SQcA1+gUiEJHnqeH5xcFPMbL/yKlGLkANTCbbICC4asrVGZxFH9fO5VugC9RhpZXj4KUjudm/lpEdje5AaEphzeRFEw90yDU6Qs+bddXCQVF8ZSKSUIKplLFDg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=GPndUjay; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="GPndUjay" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 42C56C433F1; Fri, 22 Mar 2024 08:34:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1711096491; bh=CRD+qsq6X8eUY6+mfkkDNsd4MjPhDaxu0Mmm/KE7kcA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=GPndUjayFYuvxAfrdHVpgbn3recU3ex9yh6yyygkZajGGC43bK7JvpNx2k8KyYj2J SJ3AcquFw5gxtAwAzsgJcAX10ry74rQoDSQg6coQUWfwSoNnkQ4hPcT6KoDm4Qj8/U 6y5ZJFVIIb9ByKLPS6cnCjQgKXY/+0LepUrK+9bYUtm0y6hw/KBKkQM+3wp0RX2pLG neO9o9EmWT94cbmzT1QVbawxNScHRds6LaBQoT+obrK3rMc57EGxTIrZysRoIg/vO1 UJJsrjQG4U4+0lxFljPG9881vtHf5Bm7IZpbJ8h5yXFaMcVQg9g2Fa4AhjlRGpICqL z8SLLhp6LhmDw== From: alexs@kernel.org To: Matthew Wilcox , Andrea Arcangeli , Izik Eidus , david@redhat.com, Andrew Morton , linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: "Alex Shi (tencent)" , Hugh Dickins , Chris Wright Subject: [PATCH v2 07/14] mm/ksm: use folio in write_protect_page Date: Fri, 22 Mar 2024 16:36:54 +0800 Message-ID: <20240322083703.232364-8-alexs@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240322083703.232364-1-alexs@kernel.org> References: <20240322083703.232364-1-alexs@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: "Alex Shi (tencent)" Compound page is checked and skipped before write_protect_page() called, use folio to save a few compound_head checking. Signed-off-by: Alex Shi (tencent) Cc: Izik Eidus Cc: Matthew Wilcox Cc: Andrea Arcangeli Cc: Hugh Dickins Cc: Chris Wright --- mm/ksm.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/mm/ksm.c b/mm/ksm.c index cd607b942c26..f41491cf13c6 100644 --- a/mm/ksm.c +++ b/mm/ksm.c @@ -1289,22 +1289,22 @@ static u32 calc_checksum(struct page *page) return checksum; } =20 -static int write_protect_page(struct vm_area_struct *vma, struct page *pag= e, +static int write_protect_page(struct vm_area_struct *vma, struct folio *fo= lio, pte_t *orig_pte) { struct mm_struct *mm =3D vma->vm_mm; - DEFINE_PAGE_VMA_WALK(pvmw, page, vma, 0, 0); + DEFINE_FOLIO_VMA_WALK(pvmw, folio, vma, 0, 0); int swapped; int err =3D -EFAULT; struct mmu_notifier_range range; bool anon_exclusive; pte_t entry; =20 - pvmw.address =3D page_address_in_vma(page, vma); + pvmw.address =3D page_address_in_vma(&folio->page, vma); if (pvmw.address =3D=3D -EFAULT) goto out; =20 - BUG_ON(PageTransCompound(page)); + VM_BUG_ON(folio_test_large(folio)); =20 mmu_notifier_range_init(&range, MMU_NOTIFY_CLEAR, 0, mm, pvmw.address, pvmw.address + PAGE_SIZE); @@ -1315,12 +1315,12 @@ static int write_protect_page(struct vm_area_struct= *vma, struct page *page, if (WARN_ONCE(!pvmw.pte, "Unexpected PMD mapping?")) goto out_unlock; =20 - anon_exclusive =3D PageAnonExclusive(page); + anon_exclusive =3D PageAnonExclusive(&folio->page); entry =3D ptep_get(pvmw.pte); if (pte_write(entry) || pte_dirty(entry) || anon_exclusive || mm_tlb_flush_pending(mm)) { - swapped =3D PageSwapCache(page); - flush_cache_page(vma, pvmw.address, page_to_pfn(page)); + swapped =3D folio_test_swapcache(folio); + flush_cache_page(vma, pvmw.address, folio_pfn(folio)); /* * Ok this is tricky, when get_user_pages_fast() run it doesn't * take any lock, therefore the check that we are going to make @@ -1340,20 +1340,20 @@ static int write_protect_page(struct vm_area_struct= *vma, struct page *page, * Check that no O_DIRECT or similar I/O is in progress on the * page */ - if (page_mapcount(page) + 1 + swapped !=3D page_count(page)) { + if (folio_mapcount(folio) + 1 + swapped !=3D folio_ref_count(folio)) { set_pte_at(mm, pvmw.address, pvmw.pte, entry); goto out_unlock; } =20 /* See folio_try_share_anon_rmap_pte(): clear PTE first. */ if (anon_exclusive && - folio_try_share_anon_rmap_pte(page_folio(page), page)) { + folio_try_share_anon_rmap_pte(folio, &folio->page)) { set_pte_at(mm, pvmw.address, pvmw.pte, entry); goto out_unlock; } =20 if (pte_dirty(entry)) - set_page_dirty(page); + folio_mark_dirty(folio); entry =3D pte_mkclean(entry); =20 if (pte_write(entry)) @@ -1519,7 +1519,7 @@ static int try_to_merge_one_page(struct vm_area_struc= t *vma, * ptes are necessarily already write-protected. But in either * case, we need to lock and check page_count is not raised. */ - if (write_protect_page(vma, page, &orig_pte) =3D=3D 0) { + if (write_protect_page(vma, page_folio(page), &orig_pte) =3D=3D 0) { if (!kpage) { /* * While we hold page lock, upgrade page from --=20 2.43.0 From nobody Sat Feb 7 12:11:36 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DF35E1B7EF for ; Fri, 22 Mar 2024 08:34:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711096495; cv=none; b=goo4azYaamFpw3io2TdZ08kFKRaNVkZ/EAcxZUrRTJBdH9nmA781K9FsjH8aaJpxqd1Zt9ownRYSaWWYiJ5271eq4edAF772omJLR5rMY1SftrOg6WG1YTnxoMsf3t2pCuMTAbQVaKgA6W3vz/Ek/jCWaZiowStOp48YmSNnNzY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711096495; c=relaxed/simple; bh=Czj2cXDjtWaQ7qWM/ntpEjf7pxB7Zlc771aFb0A0Wn0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=f7anrIuR4+nuwhWwq/bhqDwcBEV72LxdE8jOZKLt7hNL+dA9pE2s/lrpEyeyEAvgwZhJGME6dqVctAadgc5Z/Gfcep+k3mhAsGCYr0z19Q0B3i+W7IdBIJQ332OBz6BNX/IX8+A4zXdJ38jZ4mDA1ZMHzwzqJVwaMvBEU2DPuxE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=iSqvlKnQ; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="iSqvlKnQ" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 45184C43399; Fri, 22 Mar 2024 08:34:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1711096494; bh=Czj2cXDjtWaQ7qWM/ntpEjf7pxB7Zlc771aFb0A0Wn0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=iSqvlKnQKbuzNlo/1UqKPoPip2scXPO84E9+9X8dNblrtlYt2FWgou2idLr2Cf624 8JDv38d4rMAdgz4MTUUko9xkN20vVseInMkafo4ridyT8QrSEK6mUIMSW1s2bGoCWb 2oA1/SD9crmzZec6ZPZSk2pUNViw39caL5q+bQOFPvg7lP7aJp0rZC7ZSkDGyd6tr1 fZxBXpnGQ83pK0lK/Su/GbJrSrPEaS2sLnmOcnErBD6joRlbQsbF4sqsMRfph6EfUs EJCIbyKNVbuK1tMDzHm/u1kuRYEqAnEIsJ/orGgHG7dy/Yqe89xaP0SuprV37NcFFC 2Stk7Cot+7HvA== From: alexs@kernel.org To: Matthew Wilcox , Andrea Arcangeli , Izik Eidus , david@redhat.com, Andrew Morton , linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: "Alex Shi (tencent)" , Hugh Dickins , Chris Wright Subject: [PATCH v2 08/14] mm/ksm: Convert chain series funcs to use folio Date: Fri, 22 Mar 2024 16:36:55 +0800 Message-ID: <20240322083703.232364-9-alexs@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240322083703.232364-1-alexs@kernel.org> References: <20240322083703.232364-1-alexs@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: "Alex Shi (tencent)" In ksm stable tree all page are single, let's convert them to use folios. Change return type to void is ugly, but for a series funcs, it's still a bit simpler than adding new funcs. And they will be changed to 'struct folio' soon. Signed-off-by: Alex Shi (tencent) Cc: Izik Eidus Cc: Matthew Wilcox Cc: Andrea Arcangeli Cc: Hugh Dickins Cc: Chris Wright --- mm/ksm.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/mm/ksm.c b/mm/ksm.c index f41491cf13c6..30570e1f68ec 100644 --- a/mm/ksm.c +++ b/mm/ksm.c @@ -1777,7 +1777,7 @@ static struct ksm_stable_node *stable_node_dup_any(st= ruct ksm_stable_node *stabl * function and will be overwritten in all cases, the caller doesn't * need to initialize it. */ -static struct page *__stable_node_chain(struct ksm_stable_node **_stable_n= ode_dup, +static void *__stable_node_chain(struct ksm_stable_node **_stable_node_dup, struct ksm_stable_node **_stable_node, struct rb_root *root, bool prune_stale_stable_nodes) @@ -1799,24 +1799,24 @@ static struct page *__stable_node_chain(struct ksm_= stable_node **_stable_node_du prune_stale_stable_nodes); } =20 -static __always_inline struct page *chain_prune(struct ksm_stable_node **s= _n_d, +static __always_inline void *chain_prune(struct ksm_stable_node **s_n_d, struct ksm_stable_node **s_n, struct rb_root *root) { return __stable_node_chain(s_n_d, s_n, root, true); } =20 -static __always_inline struct page *chain(struct ksm_stable_node **s_n_d, +static __always_inline void *chain(struct ksm_stable_node **s_n_d, struct ksm_stable_node *s_n, struct rb_root *root) { struct ksm_stable_node *old_stable_node =3D s_n; - struct page *tree_page; + struct folio *tree_folio; =20 - tree_page =3D __stable_node_chain(s_n_d, &s_n, root, false); + tree_folio =3D __stable_node_chain(s_n_d, &s_n, root, false); /* not pruning dups so s_n cannot have changed */ VM_BUG_ON(s_n !=3D old_stable_node); - return tree_page; + return tree_folio; } =20 /* --=20 2.43.0 From nobody Sat Feb 7 12:11:36 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D38EC3A1CB for ; Fri, 22 Mar 2024 08:34:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711096497; cv=none; b=O3Pn1FRFJKDRnAwrdjr9Br35WTdKpoWSGZFB2NK2WznxPiO/bM1w6nG4yWxiBqYu1UX4f+zoloeMuVxjzmlDay3E0p82H1yYFPb2xno3AfnIfrM6rS5wf1Mq++j8pD+dSS7z1HJ9wejSHcc10lDHk46BQ4li/x3sSUHhVPm6MHY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711096497; c=relaxed/simple; bh=WVA5iQMpP6XRPAUdm6BGPXwO6vUlPgINWjhmK5fNggI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=SdTH04anO6i6Jfw2LPXgEw8KKgQ538fwfg2mei1yMenBp6dRl8b4ES1xtKQ2NJJWmWwOu+KlaPoq1mr+kdxl7l9QAo3IN8vaDHXxxdoQkgUrdFH1QNv3xSlfVK7eSL+XTvzZQR1GxFXnuhRH7QIxsNkMdpY8Z4N6gpiWWiJC68A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=h4/d94dF; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="h4/d94dF" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 26435C43394; Fri, 22 Mar 2024 08:34:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1711096497; bh=WVA5iQMpP6XRPAUdm6BGPXwO6vUlPgINWjhmK5fNggI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=h4/d94dFJHh92jVFstIb123+K+uECJMzjhO5h6qNXziYhpASueY+JlCKsaASBC+B6 /kJdoOCiCE9/rxMx3VTLNNK1Dpd34UZDHm+FWEqaJftEAHTC+UneL2xXg2HGZFNUHH SVcA+FYM77wBYYMu6uTlKeYWFjsJhs8wJfd6mbR6slOLLb2dGCEg0O7Rbfjw5kEDmw VIA8AsLhzenXMSa8OzzAKuSoTa2rW3/BOkmCBllehPo+yTPgSWRNyM07qug6chSimL WEgTi0VvMwYWegCZkEERh5MdlBztXBBTNm7XvJcjUUfg/eP/bZe+UzB5S/hrpwq/ND namI+bYeJFPvw== From: alexs@kernel.org To: Matthew Wilcox , Andrea Arcangeli , Izik Eidus , david@redhat.com, Andrew Morton , linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: "Alex Shi (tencent)" , Hugh Dickins , Chris Wright Subject: [PATCH v2 09/14] mm/ksm: Convert stable_tree_insert to use folio Date: Fri, 22 Mar 2024 16:36:56 +0800 Message-ID: <20240322083703.232364-10-alexs@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240322083703.232364-1-alexs@kernel.org> References: <20240322083703.232364-1-alexs@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: "Alex Shi (tencent)" KSM stable tree only store single page, so convert the func users to use folio and save 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 --- mm/ksm.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/mm/ksm.c b/mm/ksm.c index 30570e1f68ec..e6837e615ef0 100644 --- a/mm/ksm.c +++ b/mm/ksm.c @@ -2078,7 +2078,7 @@ static struct page *stable_tree_search(struct page *p= age) * This function returns the stable tree node just allocated on success, * NULL otherwise. */ -static struct ksm_stable_node *stable_tree_insert(struct page *kpage) +static struct ksm_stable_node *stable_tree_insert(struct folio *kfolio) { int nid; unsigned long kpfn; @@ -2088,7 +2088,7 @@ static struct ksm_stable_node *stable_tree_insert(str= uct page *kpage) struct ksm_stable_node *stable_node, *stable_node_dup, *stable_node_any; bool need_chain =3D false; =20 - kpfn =3D page_to_pfn(kpage); + kpfn =3D folio_pfn(kfolio); nid =3D get_kpfn_nid(kpfn); root =3D root_stable_tree + nid; again: @@ -2096,13 +2096,13 @@ static struct ksm_stable_node *stable_tree_insert(s= truct page *kpage) new =3D &root->rb_node; =20 while (*new) { - struct page *tree_page; + struct folio *tree_folio; int ret; =20 cond_resched(); stable_node =3D rb_entry(*new, struct ksm_stable_node, node); stable_node_any =3D NULL; - tree_page =3D chain(&stable_node_dup, stable_node, root); + tree_folio =3D chain(&stable_node_dup, stable_node, root); if (!stable_node_dup) { /* * Either all stable_node dups were full in @@ -2124,11 +2124,11 @@ static struct ksm_stable_node *stable_tree_insert(s= truct page *kpage) * write protected at all times. Any will work * fine to continue the walk. */ - tree_page =3D get_ksm_page(stable_node_any, - GET_KSM_PAGE_NOLOCK); + tree_folio =3D ksm_get_folio(stable_node_any, + GET_KSM_PAGE_NOLOCK); } VM_BUG_ON(!stable_node_dup ^ !!stable_node_any); - if (!tree_page) { + if (!tree_folio) { /* * If we walked over a stale stable_node, * get_ksm_page() will call rb_erase() and it @@ -2141,8 +2141,8 @@ static struct ksm_stable_node *stable_tree_insert(str= uct page *kpage) goto again; } =20 - ret =3D memcmp_pages(kpage, tree_page); - put_page(tree_page); + ret =3D memcmp_pages(&kfolio->page, &tree_folio->page); + folio_put(tree_folio); =20 parent =3D *new; if (ret < 0) @@ -2161,7 +2161,7 @@ static struct ksm_stable_node *stable_tree_insert(str= uct page *kpage) =20 INIT_HLIST_HEAD(&stable_node_dup->hlist); stable_node_dup->kpfn =3D kpfn; - set_page_stable_node(kpage, stable_node_dup); + folio_set_stable_node(kfolio, stable_node_dup); stable_node_dup->rmap_hlist_len =3D 0; DO_NUMA(stable_node_dup->nid =3D nid); if (!need_chain) { @@ -2439,7 +2439,7 @@ static void cmp_and_merge_page(struct page *page, str= uct ksm_rmap_item *rmap_ite * node in the stable tree and add both rmap_items. */ lock_page(kpage); - stable_node =3D stable_tree_insert(kpage); + stable_node =3D stable_tree_insert(page_folio(kpage)); if (stable_node) { stable_tree_append(tree_rmap_item, stable_node, false); --=20 2.43.0 From nobody Sat Feb 7 12:11:36 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EAB5F3D57A for ; Fri, 22 Mar 2024 08:35:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711096501; cv=none; b=d1sRCfHgrHGoYx4TCKcU//b/TR2fDfsUD6KEvgTN7NevpORzVxUHcfGibZPlnOqYo7sms1bwmaeOh6HCVLTUDHVxYhB+7vBHZoF+D9uqGgb/EV5/uD9mLBaEitp+PU39TEkkY0pXGMGa0taPDTRWzbq80VtZyGNjuvdMNd51+dA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711096501; c=relaxed/simple; bh=tE7d8xapWcivudbf59T+rNoo9gKt46dsnpm72y6dZEY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=EKik8TJJRTAM/+WqY/7xDyvXnbMMLhT+QNdeIuwEIvOHZe6C+emEWytUkRLNhBW/vvDzazNhZCdZW4RgfMXdtJUmGQ/cDl1qNHMnM8tBtwkp9hYCnqYFIr+Jj5fPhDGVcIzvCTmaZRgieKbx8qHSsj7nQ8qQz9WF0NlQrPPnGV8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=NxgLxxat; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="NxgLxxat" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2ECFEC43394; Fri, 22 Mar 2024 08:34:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1711096500; bh=tE7d8xapWcivudbf59T+rNoo9gKt46dsnpm72y6dZEY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=NxgLxxat8Cj4ildJ74x/Fd/oyvTl1lC8ltXuHcrbg8hA9W1zCZaJwjeSNy0rn0GOA SnyH5kIw50hurn5c6Vaan+FsIrUW+N5/afbMHvwifwhnnWZeEQNmCSQf6BpVtapgJr e1vIoiyqsT+Fd/JEnk5QypnCg23X1NgbzqS3mBCE267Cpla60qvsZX7Dz4cQHrkxMX 6kmj9zi4Y/iNjz2q/n5RXZtusItg5eiJ1Xl8TAeDTXPKOXSrjWXweEa1YAH6GP6x4t 7vVZuVpgCZBXUunmMK/veTVNgUvUx4zqzzis58a/Ce05HwTSQ5nmNZVG8giIaaqX+W tclwJALa4D3TQ== From: alexs@kernel.org To: Matthew Wilcox , Andrea Arcangeli , Izik Eidus , david@redhat.com, Andrew Morton , linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: "Alex Shi (tencent)" , Hugh Dickins , Chris Wright Subject: [PATCH v2 10/14] mm/ksm: Convert stable_tree_search to use folio Date: Fri, 22 Mar 2024 16:36:57 +0800 Message-ID: <20240322083703.232364-11-alexs@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240322083703.232364-1-alexs@kernel.org> References: <20240322083703.232364-1-alexs@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: "Alex Shi (tencent)" Although, the func may pass a tail page to check its contents, but only single page exist in KSM stable tree, so we still can use folio in stable_tree_search() to 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 --- mm/ksm.c | 58 +++++++++++++++++++++++++++++--------------------------- 1 file changed, 30 insertions(+), 28 deletions(-) diff --git a/mm/ksm.c b/mm/ksm.c index e6837e615ef0..0692bede5ca6 100644 --- a/mm/ksm.c +++ b/mm/ksm.c @@ -1828,7 +1828,7 @@ static __always_inline void *chain(struct ksm_stable_= node **s_n_d, * This function returns the stable tree node of identical content if foun= d, * NULL otherwise. */ -static struct page *stable_tree_search(struct page *page) +static void *stable_tree_search(struct page *page) { int nid; struct rb_root *root; @@ -1836,28 +1836,30 @@ static struct page *stable_tree_search(struct page = *page) struct rb_node *parent; struct ksm_stable_node *stable_node, *stable_node_dup, *stable_node_any; struct ksm_stable_node *page_node; + struct folio *folio; =20 - page_node =3D page_stable_node(page); + folio =3D page_folio(page); + page_node =3D folio_stable_node(folio); if (page_node && page_node->head !=3D &migrate_nodes) { /* ksm page forked */ - get_page(page); - return page; + folio_get(folio); + return folio; } =20 - nid =3D get_kpfn_nid(page_to_pfn(page)); + nid =3D get_kpfn_nid(folio_pfn(folio)); root =3D root_stable_tree + nid; again: new =3D &root->rb_node; parent =3D NULL; =20 while (*new) { - struct page *tree_page; + struct folio *tree_folio; int ret; =20 cond_resched(); stable_node =3D rb_entry(*new, struct ksm_stable_node, node); stable_node_any =3D NULL; - tree_page =3D chain_prune(&stable_node_dup, &stable_node, root); + tree_folio =3D chain_prune(&stable_node_dup, &stable_node, root); /* * NOTE: stable_node may have been freed by * chain_prune() if the returned stable_node_dup is @@ -1891,11 +1893,11 @@ static struct page *stable_tree_search(struct page = *page) * write protected at all times. Any will work * fine to continue the walk. */ - tree_page =3D get_ksm_page(stable_node_any, - GET_KSM_PAGE_NOLOCK); + tree_folio =3D ksm_get_folio(stable_node_any, + GET_KSM_PAGE_NOLOCK); } VM_BUG_ON(!stable_node_dup ^ !!stable_node_any); - if (!tree_page) { + if (!tree_folio) { /* * If we walked over a stale stable_node, * get_ksm_page() will call rb_erase() and it @@ -1908,8 +1910,8 @@ static struct page *stable_tree_search(struct page *p= age) goto again; } =20 - ret =3D memcmp_pages(page, tree_page); - put_page(tree_page); + ret =3D memcmp_pages(page, &tree_folio->page); + folio_put(tree_folio); =20 parent =3D *new; if (ret < 0) @@ -1952,26 +1954,26 @@ static struct page *stable_tree_search(struct page = *page) * It would be more elegant to return stable_node * than kpage, but that involves more changes. */ - tree_page =3D get_ksm_page(stable_node_dup, - GET_KSM_PAGE_TRYLOCK); + tree_folio =3D ksm_get_folio(stable_node_dup, + GET_KSM_PAGE_TRYLOCK); =20 - if (PTR_ERR(tree_page) =3D=3D -EBUSY) + if (PTR_ERR(tree_folio) =3D=3D -EBUSY) return ERR_PTR(-EBUSY); =20 - if (unlikely(!tree_page)) + if (unlikely(!tree_folio)) /* * The tree may have been rebalanced, * so re-evaluate parent and new. */ goto again; - unlock_page(tree_page); + folio_unlock(tree_folio); =20 if (get_kpfn_nid(stable_node_dup->kpfn) !=3D NUMA(stable_node_dup->nid)) { - put_page(tree_page); + folio_put(tree_folio); goto replace; } - return tree_page; + return tree_folio; } } =20 @@ -1984,8 +1986,8 @@ static struct page *stable_tree_search(struct page *p= age) rb_insert_color(&page_node->node, root); out: if (is_page_sharing_candidate(page_node)) { - get_page(page); - return page; + folio_get(folio); + return folio; } else return NULL; =20 @@ -2010,12 +2012,12 @@ static struct page *stable_tree_search(struct page = *page) &page_node->node, root); if (is_page_sharing_candidate(page_node)) - get_page(page); + folio_get(folio); else - page =3D NULL; + folio =3D NULL; } else { rb_erase(&stable_node_dup->node, root); - page =3D NULL; + folio =3D NULL; } } else { VM_BUG_ON(!is_stable_node_chain(stable_node)); @@ -2026,16 +2028,16 @@ static struct page *stable_tree_search(struct page = *page) DO_NUMA(page_node->nid =3D nid); stable_node_chain_add_dup(page_node, stable_node); if (is_page_sharing_candidate(page_node)) - get_page(page); + folio_get(folio); else - page =3D NULL; + folio =3D NULL; } else { - page =3D NULL; + folio =3D NULL; } } stable_node_dup->head =3D &migrate_nodes; list_add(&stable_node_dup->list, stable_node_dup->head); - return page; + return folio; =20 chain_append: /* stable_node_dup could be null if it reached the limit */ --=20 2.43.0 From nobody Sat Feb 7 12:11:36 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BA3E03EA68 for ; Fri, 22 Mar 2024 08:35:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711096503; cv=none; b=IosSTU3YPD2vzeQhYGBare880tSzMYZa6KT5dfSTUcWqF3HvYNHlUVdan4KDRlrWohSxke+hmX9dAIFOIL8X5kQ0tHmrgVfLBc/Sp5Oki+sUTbubs0ulBuxqTpAdLWFIgelSZTs6IVCtJAoQ4sBbgc2ts4d5QT0pYHbmUvNfXUY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711096503; c=relaxed/simple; bh=OQPoYyqG65JjgdV3GI4xIDPu6WE8F7QAfq111enlmHU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=rza3LGhM1nC5yzqyEIabzFCxIFgglkVwMwoxQD0lcCPBdxS9vDUlLW+TraH6bBLUjbDmIVPaFfZQLZ9+uSdhEXTv5/MMzRiNLFxzZnbXHW8LL5SmKayKHRCq7Y2g7MsrIKRJdmOiee8APx2KnrlpoqXlOx+vjY9ttkiesCD/vfw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=FE8y6dUc; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="FE8y6dUc" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 41FC4C43394; Fri, 22 Mar 2024 08:35:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1711096503; bh=OQPoYyqG65JjgdV3GI4xIDPu6WE8F7QAfq111enlmHU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=FE8y6dUcnrwOvrjSqoZfUtGIkZA9NFddagJQg6rqBl50cP0LbOnPqZl8yV67gnyTr CFOsvYS3sekAjUnGaaf0UU8qaCwx5LZ6HR6A6vvSP8n7woojxWf/BiKg1RE14V0Dce k4NXLyenhP5ztZR71GJT6r+C2lQHpcVhLTmFJJY/fJ0KPu/LppQFfMKVvbxn45dkrr x21PByGcOiNgNiAjSexMAi2rleYLB9pwrCeyHivrhu35RHCgTV8k1DfTHAXX9ZptS5 YoChjPk4azvx5NCK/oZ9D1PR8YvKzDxNO4zgknce8OgmStaqwRit+uUyhOHMaubTG6 Myo3Bak3dkwwg== From: alexs@kernel.org To: Matthew Wilcox , Andrea Arcangeli , Izik Eidus , david@redhat.com, Andrew Morton , linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: "Alex Shi (tencent)" , Hugh Dickins , Chris Wright Subject: [PATCH v2 11/14] mm/ksm: remove get_ksm_page and related info Date: Fri, 22 Mar 2024 16:36:58 +0800 Message-ID: <20240322083703.232364-12-alexs@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240322083703.232364-1-alexs@kernel.org> References: <20240322083703.232364-1-alexs@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: "Alex Shi (tencent)" Now since all caller are changed to ksm_get_folio, let's sync up the related usages with ksm_get_folio, and remove get_ksm_page. Signed-off-by: Alex Shi (tencent) Cc: Izik Eidus Cc: Matthew Wilcox Cc: Andrea Arcangeli Cc: Hugh Dickins Cc: Chris Wright --- mm/ksm.c | 34 +++++++++++++--------------------- mm/migrate.c | 2 +- 2 files changed, 14 insertions(+), 22 deletions(-) diff --git a/mm/ksm.c b/mm/ksm.c index 0692bede5ca6..afcf26510669 100644 --- a/mm/ksm.c +++ b/mm/ksm.c @@ -890,14 +890,14 @@ static void remove_node_from_stable_tree(struct ksm_s= table_node *stable_node) free_stable_node(stable_node); } =20 -enum get_ksm_page_flags { +enum ksm_get_folio_flags { GET_KSM_PAGE_NOLOCK, GET_KSM_PAGE_LOCK, GET_KSM_PAGE_TRYLOCK }; =20 /* - * get_ksm_page: checks if the page indicated by the stable node + * ksm_get_folio: checks if the page indicated by the stable node * is still its ksm page, despite having held no reference to it. * In which case we can trust the content of the page, and it * returns the gotten page; but if the page has now been zapped, @@ -916,7 +916,7 @@ enum get_ksm_page_flags { * is on its way to being freed; but it is an anomaly to bear in mind. */ static struct folio *ksm_get_folio(struct ksm_stable_node *stable_node, - enum get_ksm_page_flags flags) + enum ksm_get_folio_flags flags) { struct folio *folio; void *expected_mapping; @@ -990,14 +990,6 @@ static struct folio *ksm_get_folio(struct ksm_stable_n= ode *stable_node, return NULL; } =20 -static struct page *get_ksm_page(struct ksm_stable_node *stable_node, - enum get_ksm_page_flags flags) -{ - struct folio *folio =3D ksm_get_folio(stable_node, flags); - - return &folio->page; -} - /* * Removing rmap_item from stable or unstable tree. * This function will clean the information from the stable/unstable tree. @@ -1127,7 +1119,7 @@ static int remove_stable_node(struct ksm_stable_node = *stable_node) folio =3D ksm_get_folio(stable_node, GET_KSM_PAGE_LOCK); if (!folio) { /* - * get_ksm_page did remove_node_from_stable_tree itself. + * ksm_get_folio did remove_node_from_stable_tree itself. */ return 0; } @@ -1140,7 +1132,7 @@ static int remove_stable_node(struct ksm_stable_node = *stable_node) err =3D -EBUSY; if (!folio_mapped(folio)) { /* - * The stable node did not yet appear stale to get_ksm_page(), + * The stable node did not yet appear stale to ksm_get_folio(), * since that allows for an unmapped ksm folio to be recognized * right up until it is freed; but the node is safe to remove. * This folio might be in an LRU cache waiting to be freed, @@ -1657,7 +1649,7 @@ static void *stable_node_dup(struct ksm_stable_node *= *_stable_node_dup, * We must walk all stable_node_dup to prune the stale * stable nodes during lookup. * - * get_ksm_page can drop the nodes from the + * ksm_get_folio can drop the nodes from the * stable_node->hlist if they point to freed pages * (that's why we do a _safe walk). The "dup" * stable_node parameter itself will be freed from @@ -1764,7 +1756,7 @@ static struct ksm_stable_node *stable_node_dup_any(st= ruct ksm_stable_node *stabl } =20 /* - * Like for get_ksm_page, this function can free the *_stable_node and + * Like for ksm_get_folio, this function can free the *_stable_node and * *_stable_node_dup if the returned tree_page is NULL. * * It can also free and overwrite *_stable_node with the found @@ -1786,7 +1778,7 @@ static void *__stable_node_chain(struct ksm_stable_no= de **_stable_node_dup, if (!is_stable_node_chain(stable_node)) { if (is_page_sharing_candidate(stable_node)) { *_stable_node_dup =3D stable_node; - return get_ksm_page(stable_node, GET_KSM_PAGE_NOLOCK); + return ksm_get_folio(stable_node, GET_KSM_PAGE_NOLOCK); } /* * _stable_node_dup set to NULL means the stable_node @@ -1900,7 +1892,7 @@ static void *stable_tree_search(struct page *page) if (!tree_folio) { /* * If we walked over a stale stable_node, - * get_ksm_page() will call rb_erase() and it + * ksm_get_folio() will call rb_erase() and it * may rebalance the tree from under us. So * restart the search from scratch. Returning * NULL would be safe too, but we'd generate @@ -2133,7 +2125,7 @@ static struct ksm_stable_node *stable_tree_insert(str= uct folio *kfolio) if (!tree_folio) { /* * If we walked over a stale stable_node, - * get_ksm_page() will call rb_erase() and it + * ksm_get_folio() will call rb_erase() and it * may rebalance the tree from under us. So * restart the search from scratch. Returning * NULL would be safe too, but we'd generate @@ -3245,7 +3237,7 @@ void folio_migrate_ksm(struct folio *newfolio, struct= folio *folio) /* * newfolio->mapping was set in advance; now we need smp_wmb() * to make sure that the new stable_node->kpfn is visible - * to get_ksm_page() before it can see that folio->mapping + * to ksm_get_folio() before it can see that folio->mapping * has gone stale (or that folio_test_swapcache has been cleared). */ smp_wmb(); @@ -3272,7 +3264,7 @@ static bool stable_node_dup_remove_range(struct ksm_s= table_node *stable_node, if (stable_node->kpfn >=3D start_pfn && stable_node->kpfn < end_pfn) { /* - * Don't get_ksm_page, page has already gone: + * Don't ksm_get_folio, page has already gone: * which is why we keep kpfn instead of page* */ remove_node_from_stable_tree(stable_node); @@ -3360,7 +3352,7 @@ static int ksm_memory_callback(struct notifier_block = *self, * Most of the work is done by page migration; but there might * be a few stable_nodes left over, still pointing to struct * pages which have been offlined: prune those from the tree, - * otherwise get_ksm_page() might later try to access a + * otherwise ksm_get_folio() might later try to access a * non-existent struct page. */ ksm_check_stable_tree(mn->start_pfn, diff --git a/mm/migrate.c b/mm/migrate.c index 73a052a382f1..9f0494fd902c 100644 --- a/mm/migrate.c +++ b/mm/migrate.c @@ -616,7 +616,7 @@ void folio_migrate_flags(struct folio *newfolio, struct= folio *folio) folio_migrate_ksm(newfolio, folio); /* * Please do not reorder this without considering how mm/ksm.c's - * get_ksm_page() depends upon ksm_migrate_page() and PageSwapCache(). + * ksm_get_folio() depends upon ksm_migrate_page() and PageSwapCache(). */ if (folio_test_swapcache(folio)) folio_clear_swapcache(folio); --=20 2.43.0 From nobody Sat Feb 7 12:11:36 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BBD171BC3B for ; Fri, 22 Mar 2024 08:35:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711096506; cv=none; b=oGowsEH6U8IjvEFwmCOOQKNfHQyA3yc4HdrLCm1y1OzY+0FjUNrupngYdIHruvsc0STVf7qNHzY/+O3ENYFNkTITNDthqr/jtwAn7jU15/TFTm8UReyOaJZPDvpewhqa5VqLkFpQIzMen3qBiCQ9pJfPrlcykmsvJ0rnBpSn8bk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711096506; c=relaxed/simple; bh=58CYkIGbUXi9LAju+yb3HIaI5P0/xOPsOLCuC4bYl0I=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=d7CaGpKyMaq0RFpYTzaIIMPY6LZztw5F7hFVY+32qHGK+DXNlKVmwzBwoErlBpfKk2kFz12Q4kcHr/uXeLbtI8mNMJMGVb9FxyRw5PFYixxexKNVligSxenCE+vMLmLxZKqOONUd+UYq7GkHNMSUgwEJXndaXvv99xEnESlVvUI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=fj4/oAXX; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="fj4/oAXX" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 45DA2C43390; Fri, 22 Mar 2024 08:35:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1711096506; bh=58CYkIGbUXi9LAju+yb3HIaI5P0/xOPsOLCuC4bYl0I=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=fj4/oAXXwJyK+lHuDuYpq+4X/X/wDs8aqMGx/io2Y3zhIpzKnZ2W8eoxDqdGLWBQh HwOg4I/Ld12Y6pOsSFTvCvXolR8RtLGSxIn4SsrsivuZhZg2LXyp979uG+TYpMIO08 Zmam5au1soDjXTNv/A6/P1VgSggAI7xIzJ3UxNmqGdXRLrVNqpj0YYKIDl2Oq33eyw FyEneaJRsoSxoubL3WMyaCjxt/SetSyb5la5KpXDdNHkbmk2W1A3g2ojs8q+F1+80Z Z+Z9kFNFmk980SrvTfKIhObMlUuK4Z+77hkFoOHgVGZUOzOnsHGQ3f4zX536gcsn7n sANRg6w7jqrIg== From: alexs@kernel.org To: Matthew Wilcox , Andrea Arcangeli , Izik Eidus , david@redhat.com, Andrew Morton , linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: "Alex Shi (tencent)" , Hugh Dickins , Chris Wright Subject: [PATCH v2 12/14] mm/ksm: return folio for chain series funcs Date: Fri, 22 Mar 2024 16:36:59 +0800 Message-ID: <20240322083703.232364-13-alexs@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240322083703.232364-1-alexs@kernel.org> References: <20240322083703.232364-1-alexs@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: "Alex Shi (tencent)" Since all caller changed to folios, change their return type to folio too. Signed-off-by: Alex Shi (tencent) Cc: Izik Eidus Cc: Matthew Wilcox Cc: Andrea Arcangeli Cc: Hugh Dickins Cc: Chris Wright --- mm/ksm.c | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/mm/ksm.c b/mm/ksm.c index afcf26510669..15a78a9bab59 100644 --- a/mm/ksm.c +++ b/mm/ksm.c @@ -1623,10 +1623,10 @@ bool is_page_sharing_candidate(struct ksm_stable_no= de *stable_node) return __is_page_sharing_candidate(stable_node, 0); } =20 -static void *stable_node_dup(struct ksm_stable_node **_stable_node_dup, - struct ksm_stable_node **_stable_node, - struct rb_root *root, - bool prune_stale_stable_nodes) +static struct folio *stable_node_dup(struct ksm_stable_node **_stable_node= _dup, + struct ksm_stable_node **_stable_node, + struct rb_root *root, + bool prune_stale_stable_nodes) { struct ksm_stable_node *dup, *found =3D NULL, *stable_node =3D *_stable_n= ode; struct hlist_node *hlist_safe; @@ -1769,10 +1769,10 @@ static struct ksm_stable_node *stable_node_dup_any(= struct ksm_stable_node *stabl * function and will be overwritten in all cases, the caller doesn't * need to initialize it. */ -static void *__stable_node_chain(struct ksm_stable_node **_stable_node_dup, - struct ksm_stable_node **_stable_node, - struct rb_root *root, - bool prune_stale_stable_nodes) +static struct folio *__stable_node_chain(struct ksm_stable_node **_stable_= node_dup, + struct ksm_stable_node **_stable_node, + struct rb_root *root, + bool prune_stale_stable_nodes) { struct ksm_stable_node *stable_node =3D *_stable_node; if (!is_stable_node_chain(stable_node)) { @@ -1791,16 +1791,16 @@ static void *__stable_node_chain(struct ksm_stable_= node **_stable_node_dup, prune_stale_stable_nodes); } =20 -static __always_inline void *chain_prune(struct ksm_stable_node **s_n_d, - struct ksm_stable_node **s_n, - struct rb_root *root) +static __always_inline struct folio *chain_prune(struct ksm_stable_node **= s_n_d, + struct ksm_stable_node **s_n, + struct rb_root *root) { return __stable_node_chain(s_n_d, s_n, root, true); } =20 -static __always_inline void *chain(struct ksm_stable_node **s_n_d, - struct ksm_stable_node *s_n, - struct rb_root *root) +static __always_inline struct folio *chain(struct ksm_stable_node **s_n_d, + struct ksm_stable_node *s_n, + struct rb_root *root) { struct ksm_stable_node *old_stable_node =3D s_n; struct folio *tree_folio; --=20 2.43.0 From nobody Sat Feb 7 12:11:36 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DCAAE3E49C for ; Fri, 22 Mar 2024 08:35:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711096509; cv=none; b=HGCPXePCAJswK4qKRViNfuvavfP/YQym/T7+nAPSKG0TNqCx5vj3XEtswfmGr6HURzilqSaPkMl+LHmsYIxGZa3C5uNxy0dr51Y1Paw1NhqkpZSLnJ3/WlEV7k6078b1/6SsY/cMED58kWkFooGjo4W1XsM3EiQ2i+o9jtjMK2w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711096509; c=relaxed/simple; bh=ZriKAGE58KVGgk3LtHqsYBhdOJzv7LI/X6J606D1xxw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=amGCau8IYuNXm1CpHCENjGYtzl99bQISG8uFCNZwe+7aTxBXWoSPpL1AUKSzoGc6DXSWyWTTbHJ0s5BIZoNnmibr3vE/QxpgLjoNoZDjs6I6bV10dc0Cku22h2KPhlO1UTsZ2x94nVEa2ziSIC5xLDTNX7aPsLv6K3dTmxQ6z9Q= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=iAcwg2U9; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="iAcwg2U9" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 484F1C43399; Fri, 22 Mar 2024 08:35:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1711096509; bh=ZriKAGE58KVGgk3LtHqsYBhdOJzv7LI/X6J606D1xxw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=iAcwg2U9TA5i2WgtDkxRMvKzkar2T0ss4NV9QTixbCGq/vdCNstF1KB7VAtunrssD roMaD4WVS54iqRVPCPq+8eu/D56fmO+XQtn/NRSeXhJuc2PfZCkA/BLwhnS5EZdZy7 y1acuH42/rzI5sikMvS+UcpS+RP522841XB3DOjkzB+uGxSBmrjUq+InQ67lNY75c2 v2AOGRLtDpSo45fcsKX+d5T7ViAUoXym1Jh4dNGUDI51D7Y9GcF3fNZvf/bPUPFI5K sS9y+mlzPqzI3051GE6T8aiyK68i5He/zcTKNaQfSGI9ORdzAnckSHwGeYYok2i8Fr X08VhSxlTW+Sg== From: alexs@kernel.org To: Matthew Wilcox , Andrea Arcangeli , Izik Eidus , david@redhat.com, Andrew Morton , linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: "Alex Shi (tencent)" , Hugh Dickins , Chris Wright Subject: [PATCH v2 13/14] mm/ksm: use folio_set_stable_node in try_to_merge_one_page Date: Fri, 22 Mar 2024 16:37:00 +0800 Message-ID: <20240322083703.232364-14-alexs@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240322083703.232364-1-alexs@kernel.org> References: <20240322083703.232364-1-alexs@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: "Alex Shi (tencent)" Only single page could be reached where we set stable node after write protect, so use folio converted func to replace page's. Signed-off-by: Alex Shi (tencent) Cc: Izik Eidus Cc: Matthew Wilcox Cc: Andrea Arcangeli Cc: Hugh Dickins Cc: Chris Wright --- mm/ksm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mm/ksm.c b/mm/ksm.c index 15a78a9bab59..d7c4cc4a0cc1 100644 --- a/mm/ksm.c +++ b/mm/ksm.c @@ -1518,7 +1518,7 @@ static int try_to_merge_one_page(struct vm_area_struc= t *vma, * PageAnon+anon_vma to PageKsm+NULL stable_node: * stable_tree_insert() will update stable_node. */ - set_page_stable_node(page, NULL); + folio_set_stable_node(page_folio(page), NULL); mark_page_accessed(page); /* * Page reclaim just frees a clean page with no dirty --=20 2.43.0 From nobody Sat Feb 7 12:11:36 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C1ED83F9D3 for ; Fri, 22 Mar 2024 08:35:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711096512; cv=none; b=KmtUu2aZvoaJ+oO5TyZMhznrWS85i2x7Jk6B3VkrfpwTZ87ERbZDO+I2p0hLeMkCkkJKcbyC5YgS7RSr/s/E8qTvwIcRLOUIu3OdDFSNOXKuxMA05md+e8fLf76xh8jur0Yjw5spuaNs8tSG6eVyBVO5oNWNlWbwTcQVP7AGXJc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711096512; c=relaxed/simple; bh=S+tu/Us/naajLYwRUmTRqpD4Xo/mrCDuxEPxhqR6e8U=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=AGsFFtG1jRDdX87BC/DRYCB4fMn39e9pN9QzC41JOFEZFeNzR092yquxKhnVsFbFPs0ma7Q7+daWnzE61qWovnOyhuQNUX1KvwNFFFcf51DYf/vprC9OzqLMMyA+8j3qMfJDuPvL2LFRyUWYCCCLNdGZfGWXkc8gfwBiU057Te4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=PhuQzHg2; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="PhuQzHg2" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 25DC7C43390; Fri, 22 Mar 2024 08:35:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1711096512; bh=S+tu/Us/naajLYwRUmTRqpD4Xo/mrCDuxEPxhqR6e8U=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=PhuQzHg2zIDfH+NNdpucuHBPSFDXUngQkMtXneTPOFB3EXsUgkeeJH4rsslCkfhG5 4wFPvYbHSCE1xnudBCQq/bBl6/P0nYNJuw0bYM9e5eLZxxb+YECPnd20i5Txxb4zKs gGttqYPNlKI/hzAMzVxPjsOAuaBXmXgrApgVatUr4bxEiDjBVgiiVca6abAnh8U2g7 k7CNbcR2g5fpVxGiJbyhueHZGdKDDJIz8FplT+V78W6m8/Vb9yRVw27y5h1+wbwVth M0199e2qvjbnu+xUqBsqOJYP3AyHoE+7ixgaOs8916eariT5tsdciqmT0QRoiDGDPy kyPPjQTt5vogA== From: alexs@kernel.org To: Matthew Wilcox , Andrea Arcangeli , Izik Eidus , david@redhat.com, Andrew Morton , linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: "Alex Shi (tencent)" , Hugh Dickins , Chris Wright Subject: [PATCH v2 14/14] mm/ksm: remove set_page_stable_node Date: Fri, 22 Mar 2024 16:37:01 +0800 Message-ID: <20240322083703.232364-15-alexs@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240322083703.232364-1-alexs@kernel.org> References: <20240322083703.232364-1-alexs@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: "Alex Shi (tencent)" Remove the func since all caller are gone. Also remove the VM_BUG_ON_PAGE() because it's not applicable for a folio. Signed-off-by: Alex Shi (tencent) To: linux-kernel@vger.kernel.org To: linux-mm@kvack.org To: Andrew Morton Cc: Izik Eidus Cc: Matthew Wilcox Cc: Andrea Arcangeli Cc: Hugh Dickins Cc: Chris Wright --- mm/ksm.c | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/mm/ksm.c b/mm/ksm.c index d7c4cc4a0cc1..136909f0c5d5 100644 --- a/mm/ksm.c +++ b/mm/ksm.c @@ -1094,17 +1094,10 @@ static inline struct ksm_stable_node *page_stable_n= ode(struct page *page) return folio_stable_node(page_folio(page)); } =20 -static inline void set_page_stable_node(struct page *page, - struct ksm_stable_node *stable_node) -{ - VM_BUG_ON_PAGE(PageAnon(page) && PageAnonExclusive(page), page); - page->mapping =3D (void *)((unsigned long)stable_node | PAGE_MAPPING_KSM); -} - static inline void folio_set_stable_node(struct folio *folio, struct ksm_stable_node *stable_node) { - set_page_stable_node(&folio->page, stable_node); + folio->mapping =3D (void *)((unsigned long)stable_node | PAGE_MAPPING_KSM= ); } =20 #ifdef CONFIG_SYSFS --=20 2.43.0