From nobody Sun Feb 8 10:16:55 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 00FE36CDA8 for ; Mon, 25 Mar 2024 12:45:47 +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=1711370748; cv=none; b=s2uSwTmD4eUYyQAIOrGlwTp0NSToQF7SN6v0N3gl3fVDCKEz24BmdfTkzFO49bxn4J9jccxclBovFMUBFgFl9mU5dMGA0ig6kac01xX/BQeQuKQHRIieUtRc90vrQt8MTZr47j+TfK5qOnNlgikVPs0fLTuTQ/+edQmAHGtU42s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711370748; c=relaxed/simple; bh=QDhgdKPLSZ+LCN9CDxfi2X7NfAWh6m7wtgm+INCh864=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=MFPWmwaK5ND9BYXzBF6ah0nNRUbskT5J9nhF5q7jTSdxuPLdbnUNCVf7kaivDXOzz296koOaRm2Qqpn4JbTYny1AOdaCaKbvYlbUyhsuTg1sM/cg+q8+b2Yw59Emf1Ug7Bhd/XQIjrVPOa25SxNV/DDDt4c0eSktmlexd7mBjVM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=nqD8rAwq; 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="nqD8rAwq" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4269BC43394; Mon, 25 Mar 2024 12:45:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1711370747; bh=QDhgdKPLSZ+LCN9CDxfi2X7NfAWh6m7wtgm+INCh864=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=nqD8rAwqqd1rZlggHYvDueBQdTe6WYxAdUuXriWjNgenrTHHVxgd7GnHtwUzXPlhH Euyl3J3vJqwRgkj3fMPW6SSRO52ygC73Q37XEga85/ltaHFKcyi6/C2rE8khfLB5PY bxE3SiDge/MfBeeZCQnSRaw+A7+4HaJJVcT/0uxumAh0+nAx5acDnUKKC4zVEo1HSD 9RBSBXjM3odN+trHUYLuYZ2raubRH4AfZKu7VHIhfapDctVyDJdBckiKsEpDWGh90q aPKP7sDOtjUpNAHzVOTGKEQnQnT3FK+ONVRVirrIwynhumCYaAlKkfN748A6RM0AbW pKbYUkce4rmmg== 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, ryncsn@gmail.com Cc: "Alex Shi (tencent)" , Hugh Dickins , Chris Wright Subject: [PATCH v3 01/14] mm/ksm: add ksm_get_folio Date: Mon, 25 Mar 2024 20:48:48 +0800 Message-ID: <20240325124904.398913-2-alexs@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240325124904.398913-1-alexs@kernel.org> References: <20240325124904.398913-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 Reviewed-by: David Hildenbrand --- 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 Sun Feb 8 10:16:55 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 BDF956DCE8 for ; Mon, 25 Mar 2024 12:45:50 +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=1711370750; cv=none; b=mS07L1bnnf/BvE/LeLzTEO4w4zoOv0tZ0EUfKRflqbbkoCGGj6GCf6B6ZCxca5SzG12Mw87RHYFc3d5qAZR4iKxj0co2eHsJlLdOEtoOKG8xfTCK04t63QfRM03qNkEHSliqh4BfW5wURg9zC8o3EhFvbM0lDds0xQXpU7HWRK8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711370750; c=relaxed/simple; bh=u2CpON+ylVsyq590GuxgPX8aACtNcQ54tsZFdjhyaWs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Swd9LtkCYUiGlFkoWysT+oUfWLbOcLjYTiluVD5eMhSYNbku3UUxKb9utONjtXddk3kz2qffDhH3sG8GHOkI1nsie9cq5OFscexiNu2NwgKcT2yfT4PVWW9qbzUynuJpTFz9mHcp8u1280E7ylAiRkhHIusjD7ALySMgO9qWops= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=eVV1IaWV; 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="eVV1IaWV" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3302FC43394; Mon, 25 Mar 2024 12:45:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1711370750; bh=u2CpON+ylVsyq590GuxgPX8aACtNcQ54tsZFdjhyaWs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=eVV1IaWV9vRcxYwQUums5xqSP5Wq1JaDlgBpGgCe+m6yPpVz9ksbPoP0pmrHEZuu0 v6WWcfakc0/tzBGby00uzvkxjcOBYM6cHLDbWRpFTq94slZHx4TcMPDwKpMzYzzNz0 BMidSuGaNRhfTXfWCVNvqoZqUh4twz18njVGGXwvDUBvTVjq/UvN6fFPsMhX3Vrt7z aY3IAz2QpBy1FzTmFMmrd3Uzk8u+vLRLScq0kqqqEtzy66GpBwBQSuYmEXIScNvKzt 52cbGX7TGYSEhHydw6YfGvD4iY7cColqeIklQDrrLO+owD9mzzFk40BeiXE0DAfH40 jkgADT0ieNvdw== 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, ryncsn@gmail.com Cc: "Alex Shi (tencent)" , Hugh Dickins , Chris Wright Subject: [PATCH v3 02/14] mm/ksm: use folio in remove_rmap_item_from_tree Date: Mon, 25 Mar 2024 20:48:49 +0800 Message-ID: <20240325124904.398913-3-alexs@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240325124904.398913-1-alexs@kernel.org> References: <20240325124904.398913-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 Reviewed-by: David Hildenbrand --- 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 Sun Feb 8 10:16:55 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 B65106EB69 for ; Mon, 25 Mar 2024 12:45:53 +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=1711370753; cv=none; b=Z0eBFUtJoQgnWfqM122FEH2cAO1ybpd66VDXT3BMhbmvri79O4rp9FSIKkx7K2ZGLq42jUdvQHqpOFtsxDuYZ8AVpZ63A5m9LBltfsm8oH/0IgIRIg10W+t08KKZ59MxoZ7ptCs6rX0SRGVwdTEkaQyQYy6SpcYwS3shYOymFek= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711370753; c=relaxed/simple; bh=JrD4352jMaYHyAz8IW4Sk3DaQV9z/B+p1XK/ErSE0cs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=IfJ9BmGrgLM6upAPtnjY9kstxgo6nS6XpECeTEb01Q4uInGFZYM8/VCtnYDgm/NZd58vQR/CeasAWR9fDupURoDqFf9dB3qmCc6wgEBsaQLzUOT8deIN8QNP7IxlFVcTl6P0Xo8B20pUO8z+Hrhihl8fDeS2C0YFO5Td1zY5Sbo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Whi5pHJZ; 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="Whi5pHJZ" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 05091C433C7; Mon, 25 Mar 2024 12:45:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1711370753; bh=JrD4352jMaYHyAz8IW4Sk3DaQV9z/B+p1XK/ErSE0cs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Whi5pHJZTUlUd6zeuH0lUbmTWwy8sj968vK2RQbExjSv4J927iQXRAax2+zqP3+8Z syH0Miydew3n+dIqfFQbEdodShg6okCztcVT1q/0589fuGXcfUyzduK6ZLpruSDHQG 3ZJJAaqW+jGIx0FmJUNVsuUy8O+V183kQWq9ZI5P+NnBZUHq4iLWx8Si409N3S33xo uUtJvUSWMGqZ0Dn4M3kn9lOThpHWghQ3aPLhvV11Zk1dkPmeiEWNNzvj1Zp9e2UbXj ga9Fu+iazyMERJXJ+ZWG4V/8cwEH/THIP5vbAm67Aj1t2p2C3InwRy3kCtGkNu6HGD i24BIgprJ7qvw== 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, ryncsn@gmail.com Cc: "Alex Shi (tencent)" , Hugh Dickins , Chris Wright Subject: [PATCH v3 03/14] mm/ksm: add folio_set_stable_node Date: Mon, 25 Mar 2024 20:48:50 +0800 Message-ID: <20240325124904.398913-4-alexs@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240325124904.398913-1-alexs@kernel.org> References: <20240325124904.398913-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 Reviewed-by: David Hildenbrand --- 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 Sun Feb 8 10:16:55 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 48ADA15D5D4 for ; Mon, 25 Mar 2024 12:45:56 +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=1711370756; cv=none; b=sq2UuyhJeuspmrljSCg+NZhMvWV9iti43R98eCly95Oxf3ppREvPfQ/PijfTyWYR7aKGXadYu/TFMBlNSECEj+QNZx3qGvWIDn5imNXWNGY1nLusFUMiWSBiZ1JZ9IzOvhU/q3D+E13whSmbGkQUT1SVEkBn6gCMMBz/hFTrMo0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711370756; c=relaxed/simple; bh=k8zytA2A5T1rgDUiIACZ6hBdX8Fv5Jcn+9QWsQNKn6E=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=G/1tBH1XEH+sNrer0LkXOYmaT7utNCotodOXZ6I9JS7dqTfvNKytZ+0QZD6pxd+W8I1PZwpBswjHv1/STLo369EjiH1CzAAoIzkXrvCr52floQomqvh6eb20fnIMQMwdz6RNlOayZLghdRBKMXiuTzhEy6cd07u4VZDGxW21+rA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=eCXCMsav; 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="eCXCMsav" Received: by smtp.kernel.org (Postfix) with ESMTPSA id C9649C433A6; Mon, 25 Mar 2024 12:45:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1711370756; bh=k8zytA2A5T1rgDUiIACZ6hBdX8Fv5Jcn+9QWsQNKn6E=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=eCXCMsavhNOpAhZ7kJ53WdZwQKpuR2F7J0ZTZC1rzgutAlE5WiOGa7PrxTMOnMARa JfPhPX9LQJiY8vbNiLiDBSY6pLZYbUANi5Je+jK5qa/nFXX8ERQS33vHjuNT83yyfT 2KMDNRZMHC5XZLJy4fUp8FjLNBwJsWRLvM+MebUe2K1BC+RHZCpaZiKwO6xFuGXiqW JZeggEJVwxFI1pFShlUUjpQTX4BZNY7UDVuzH6arWZhTGgCsUftr2vbwZUvooZ2RvS unmUy6JT9yoDSORyeY3EJoi02k2S0QsMfzHfpptaoaMcaebfat8W39e3t33np53eYi qMyO3pObODdMw== 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, ryncsn@gmail.com Cc: "Alex Shi (tencent)" , Hugh Dickins , Chris Wright Subject: [PATCH v3 04/14] mm/ksm: use folio in remove_stable_node Date: Mon, 25 Mar 2024 20:48:51 +0800 Message-ID: <20240325124904.398913-5-alexs@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240325124904.398913-1-alexs@kernel.org> References: <20240325124904.398913-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 Reviewed-by: David Hildenbrand --- 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 Sun Feb 8 10:16:55 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 6E20015E5BC for ; Mon, 25 Mar 2024 12:45:59 +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=1711370759; cv=none; b=BOt3BA06w5wqOFxJSR5J1Z19YgN3EajP67mHKMvfR7rcfZxviv+WdjBohtpsVhgPDV6GMooRNGJ+k0u+JAb9gDSVP7YuLzh1p//EKJZxUD5lJzGMwzknxdJ6ja5a6Y3iLXmE+y0Uy9YZKwXyOrwzG5f5YtkzUgneCrwFp5StVUI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711370759; c=relaxed/simple; bh=use98PRBO/PGh8RpGpv26dYXjrLSdpRJYI2DZcqj2jQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=S8Fp7JtUUTfH7xB6/yuqP2KT8sX5qXcBt7STCO3qpVRc2OxDQWl/68HlNxIoRwoSWRAm4GkVviTxdsg9W8xqr7A4Gg2Q5OjHNMh8lBfcwlv7UnK0TkjvtAh3d6i7/UQdV4dqyZF5VUHeQmzQB/I+er04ShtUCYv/bW3K4ovPTFQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=LRtPf4r8; 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="LRtPf4r8" Received: by smtp.kernel.org (Postfix) with ESMTPSA id BB56AC433F1; Mon, 25 Mar 2024 12:45:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1711370759; bh=use98PRBO/PGh8RpGpv26dYXjrLSdpRJYI2DZcqj2jQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=LRtPf4r8PWZiL5CnScSGqihoUvl5yGGa4RN9z0L/EYdAJg3+6MqePjyIvUpkMx1rw 3Fsdp9liTUlZSC+8d9zCkq4Ngw7NrIclL994hgNJbmp/L+puZisbyUSfZXfOtw+KIR gQFjeo1NO9/gGmslX7z9ky+Yd9OjWbR9pLsVS2suqmxtBS2Kd4tFIgl52/eU999qlH 9MKIs+9iKWxWm2B22UK37n5x5CT9GlBfIPmlycWt+5Lg0h/GXkA33I0DE3DZPOu1+j SXAcDHdBp3ph/rHE5tK/WavJAR82+8zTaPgB+Rr6yrDkvWUuv20zQVqKkuL81nrhpH 0zWOkcXhZePAw== 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, ryncsn@gmail.com Cc: "Alex Shi (tencent)" , Hugh Dickins , Chris Wright Subject: [PATCH v3 05/14] mm/ksm: use folio in stable_node_dup Date: Mon, 25 Mar 2024 20:48:52 +0800 Message-ID: <20240325124904.398913-6-alexs@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240325124904.398913-1-alexs@kernel.org> References: <20240325124904.398913-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 Reviewed-by: David Hildenbrand --- mm/ksm.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/mm/ksm.c b/mm/ksm.c index b6ee2bc7646f..aa80fbf3a8e0 100644 --- a/mm/ksm.c +++ b/mm/ksm.c @@ -1638,7 +1638,7 @@ static struct page *stable_node_dup(struct ksm_stable= _node **_stable_node_dup, { 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->page; } =20 static struct ksm_stable_node *stable_node_dup_any(struct ksm_stable_node = *stable_node, --=20 2.43.0 From nobody Sun Feb 8 10:16:55 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 48E1615E80F for ; Mon, 25 Mar 2024 12:46:02 +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=1711370762; cv=none; b=GydTdjOkr3ETaAfM5H+CPtioJSBhU3PwVcwPchZTwvm8vUfckD7kWlI2KQoxDcwyI9uv3aAFfdUG5d1n5dGn7yCAMmGlMVKScwd7ubzsaLzYw2TvxS5taeiA6OX6M9rRGrVmtd3cyM3aoKtJtl33zHtIYaQ92Vq+/gScJgnTl7c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711370762; c=relaxed/simple; bh=3EngGDxtSZrFY+NPFGnfYU0Kocquv/KpfYgYZYqOFCA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=EA0p7K4n0QcLkiWtmUvnknnx0L5nAOY9cRh67r/VyxxjMI5ZjYc9M8WnjznmUGwUUyZE2WTYS9cfEjTSNTJTrA9+au7ovAB6Ux15qkomYvgXaqTNP8u36yqn/eNwz5EP+8h+drU5oVsvjhUoAwqdDhnBuNmFnDNsYsbygTsrzqk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=QjoZ6FgV; 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="QjoZ6FgV" Received: by smtp.kernel.org (Postfix) with ESMTPSA id AAFF3C43399; Mon, 25 Mar 2024 12:45:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1711370761; bh=3EngGDxtSZrFY+NPFGnfYU0Kocquv/KpfYgYZYqOFCA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=QjoZ6FgVlpIls85bdewPna6oDmn2WQIkdvXxVa0PVuSTOfSnoi2GS67/7T2yzLGTU pqP+ZuzwlR93nUViU+yT+7Bo1vkuR/mInu4r5dalOt34sGCZ9YT8pBFxsswAhrUScn rL5f6uni+PSLCcHF3+sBGjcIr96ZecpdJaqpTwIBsEZo94tASOiWtA52AAQHG9ymA8 LQeACgbCBpU4vPjteVHgegKWJPmSOubP0Wr5v9+rVr00SleMoJB8IZu30VbCEFdf6y pg5XBGAOTY31Ro0NURQi8DmQmS+ykXp+MXa0O55h72zSE68tY9uPF5QTHq+1A4Hbeu 5pXqw9a5deBMw== 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, ryncsn@gmail.com Cc: "Alex Shi (tencent)" , Hugh Dickins , Chris Wright Subject: [PATCH v3 06/14] mm/ksm: use ksm_get_folio in scan_get_next_rmap_item Date: Mon, 25 Mar 2024 20:48:53 +0800 Message-ID: <20240325124904.398913-7-alexs@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240325124904.398913-1-alexs@kernel.org> References: <20240325124904.398913-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 Reviewed-by: David Hildenbrand --- mm/ksm.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/mm/ksm.c b/mm/ksm.c index aa80fbf3a8e0..95a487a21eed 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 Sun Feb 8 10:16:55 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 055D315ECDF for ; Mon, 25 Mar 2024 12:46:05 +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=1711370765; cv=none; b=S2qpW5Iol2n1oXjw7HuetHkRcZCCtlHoHKyYKhijPUQRoSsCwbnxOXfoQNpFGOvdpIDItudJxZoC8H0Edq7R9BcTYgAVhX/KozZdgXhQ5GbA6cLjWGmsobjzcAvGoXypGUvG/mBjUxncFb02kC/xitfYQ94c5Ed7T9Mp484+ubE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711370765; c=relaxed/simple; bh=lWYPejGlgqLibFq5W+K6QUuTn2MtB1S2BqZV6I+i3CE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=gzdxVnyn/Vgp4DepD3M2BvaJyul4FXp/iRUtGuv1nQQGZF3kAvvQPBZg052m3WTz2e++skiV9f1G2r9SJ8ks0icTcBagjx1qJf3+HDKBWGwsGt0+z9Rm6c9EkeYAR9Drqg5SWxChfScVtxU6qYadHFPgs/HYC0zo7+WYW1ePljo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=n5flbydc; 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="n5flbydc" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 803FAC43390; Mon, 25 Mar 2024 12:46:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1711370764; bh=lWYPejGlgqLibFq5W+K6QUuTn2MtB1S2BqZV6I+i3CE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=n5flbydcPOaY/CsPsj+d8KOVqtPlR7xNta+LNhWtad6FJFqA70qit66HqnLvBbz5W PdFK1AZAtFcn36YWBVeGKp1BGYJqFQrd1S76oa3P3pen/6qEOHCUMZyvtVT0BMdG8D w6CHnT3FBjQiWJgLtz+B/cuSw7+Su7GkwpVK3atIN530jw6OwqlIIPtj3GQviOugv1 XJuV5uGhtUYaSPGpRX8ZhcKDV7IQPfuLmkTsmrpbASbcL83UW9eck85Hv6WiRboR/g IsYR4VfIJHEB7VqvFgPPzG3FKyXwQXR9nujPgfxR5nrtDhNtiW350jdjOHhAZXtbaH PLku2UoUL3Gmw== 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, ryncsn@gmail.com Cc: "Alex Shi (tencent)" , Hugh Dickins , Chris Wright Subject: [PATCH v3 07/14] mm/ksm: use folio in write_protect_page Date: Mon, 25 Mar 2024 20:48:54 +0800 Message-ID: <20240325124904.398913-8-alexs@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240325124904.398913-1-alexs@kernel.org> References: <20240325124904.398913-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 Reviewed-by: David Hildenbrand --- mm/ksm.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/mm/ksm.c b/mm/ksm.c index 95a487a21eed..5d1f62e7462a 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 Sun Feb 8 10:16:55 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 C00FD15EFB3 for ; Mon, 25 Mar 2024 12:46:07 +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=1711370767; cv=none; b=KnN9ClpG3suHQela3qbH3vZZ6o55uYJIIvHGa577axp310k8ubgRnKD/PlNGotFXbeZOdK7d4/yhRrtDBA5y8whH+57A6LE8cgkD3UKX8kFZXxFSWubTtzs47JaB4qA0dEJjoIJEBtlEjgAbu05Aqwzw6g5MCpPoDf6bkzFi/PY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711370767; c=relaxed/simple; bh=1FMqhrTGzv5mI88ql04GgunChyuiZ5EvE2fgo8IbQMc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=KVQej9VM4x1cD/m8Hjr1FnDIAztOpwXvScaZd7qGbcx1BF0hUeIwTpyNjHq6vKMXaedkwr9+iT5VehGzldvJv2o1UzS5AQTRYgp0KUIGIdjbAQgTytjFBF98MpH/Fmg28xJ8LHi+8mxNLLEn46aOh+pE8rkagtZ5MAA+zCjzcKQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Q6AU0w0G; 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="Q6AU0w0G" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 71F09C433C7; Mon, 25 Mar 2024 12:46:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1711370767; bh=1FMqhrTGzv5mI88ql04GgunChyuiZ5EvE2fgo8IbQMc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Q6AU0w0G/erVGHeJFCX8w/EJeqQFE15Jq05PpOfDQBhQz0mLQRG3ULcPNL3SLertO hm4n2HJMGH+yHfEe8vGRHIR/elq9l+W/2TbpJZ2GhGaruVJ01wKwR0R7Cmca21hYkV xFOaBsAKY2ZQPFpe4yhgc4Rzny2PfvvMx/gv6TAdu0j3fMV7kgXUoDoZaBVb4GU+2y /aPGy4PlY/7p0uinoDfWfyGGQWsWOd+zgrV+h+f2TvnIx5fTUhmTu7a4xO7oracQtb ZQnNvcIT7N/spzY9RL0DCzzdiFMFj8Q99B+mVOCimWgsSOHsYZEdx6ErXYixa63Cz6 YAE22wFF72Aog== 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, ryncsn@gmail.com Cc: "Alex Shi (tencent)" , Hugh Dickins , Chris Wright Subject: [PATCH v3 08/14] mm/ksm: Convert chain series funcs to use folio Date: Mon, 25 Mar 2024 20:48:55 +0800 Message-ID: <20240325124904.398913-9-alexs@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240325124904.398913-1-alexs@kernel.org> References: <20240325124904.398913-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 5d1f62e7462a..7188997437d3 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 Sun Feb 8 10:16:55 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 B7BE715F321 for ; Mon, 25 Mar 2024 12:46:10 +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=1711370770; cv=none; b=dAvmJlvzz80BbOGORr57cp0P7Mvy6si4U/OihMxS1/fDCvJkZ5mg7RNPDqqn47nGvUl2199C9zWCVv9XY83DdBrROeGgGOwo44Y8rXOvIURs7Rubr1eXoZ4ugfiZ77gzHCmf/25ie0ymcFtjUUm2ZWoIP1crx7G9BV8xT0zuk54= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711370770; c=relaxed/simple; bh=iGqchiYFmo0ETruqN+yqTmLWs9IEH21XszhOvMHk718=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=P5tzTzBDkGC++j+FsRzZHk2CuK2jGtcOTuICX4jJue64FoHtIxxTUrXSyjwbVa9F3kOUmkNL0olKbhllYMlUhw0tDYlKroQPUnI+AL6DvqNmZ5DsZITvG3A/eTUQsuzbPSe/FQki9Ha8so0ST6dEL4zWgXo8Ca+bdfv7z4F1iEY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=nBzjRhYA; 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="nBzjRhYA" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 46A41C433C7; Mon, 25 Mar 2024 12:46:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1711370770; bh=iGqchiYFmo0ETruqN+yqTmLWs9IEH21XszhOvMHk718=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=nBzjRhYA/s+ei3HHXwyi91lkTt42O7ifcVbgqgcEbQ6VgULgAXnG6f+FJB4vm7f7R hzX3NDEtbPSkPPHnwEteD3fCeKNlNNTm5Ak3Zhy8XEPfpjmCRSqPDgF+xVmlE376JH yq07703jv7pjhsHtZCQcCI6yvjhsoqaWJh3dHMTqLxgnIOZ8XPXWB2W93tD1/mCESJ tGgvR3enYDoFwJ3j8gou3N2SlDsfwwf1pgxPFDvC5L+WqHBK4Cdzn/1+dwCpaF+/TS LBssjlDr/u89yJ2CGBNIydvk/6G+d7mfRYX6p7ivRTY8ml7tJnYDaZlJ56a8fYf9Pj Aea9WXhpwo4XQ== 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, ryncsn@gmail.com Cc: "Alex Shi (tencent)" , Hugh Dickins , Chris Wright Subject: [PATCH v3 09/14] mm/ksm: Convert stable_tree_insert to use folio Date: Mon, 25 Mar 2024 20:48:56 +0800 Message-ID: <20240325124904.398913-10-alexs@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240325124904.398913-1-alexs@kernel.org> References: <20240325124904.398913-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 7188997437d3..c2afe2f926db 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 Sun Feb 8 10:16:55 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 B1FCE15F415 for ; Mon, 25 Mar 2024 12:46:13 +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=1711370773; cv=none; b=l/GbINHMTjmqMOI5K/6jNeca7y96O+Chj2NC2NtJckvuVu4whntPythlzM8/uFcgyL9gHO3171R0eLgD8udXUBgMJK94gzwjsR2oQEHXxCSIwtb46b8v6MWDZY7+vgaWk87Kw3j7zOQz+DI/PHE1mLaiijSWvwmEg8w+M0+2qlI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711370773; c=relaxed/simple; bh=2lgvFI0wNn9RTCMEzEWib7Gn+j7luBL+Jg2E4ycFUf0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=SWgE9qdurynx6NPs/pfwFQ5ZIdQCf9NUIMjv4tT2vtOd65vnepJ2PSHxyA05XLET7JzMJ0hyVnr7R6IRD3aSYfgyrahnNJbDQLczeY6L3Q1Cyq/fGiH1VadpKEiYS5IMPCMiE0bw2ZmlblRutMmzDKY0eRV65qiC3hhm2rh1uI4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Dz0MergX; 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="Dz0MergX" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 40281C43390; Mon, 25 Mar 2024 12:46:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1711370773; bh=2lgvFI0wNn9RTCMEzEWib7Gn+j7luBL+Jg2E4ycFUf0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Dz0MergXwbNpE5qypVG9l++oEAh9GgKrjYVi2WZATBEUMf/h2vvKvfWuuN2rYay9Q mvBr0LRQln4jeWSRsqlLU8WM7vzf95ttjzjXBJIPtHyIR8fB+mcbA6L6yjQILNW13E EGLVB0l5Zlthhdi3jucQwfl7boWT3sAKrIJNV9XNKm1YRkYBe9NGv019lOFQyoxQuA 1IBBuXPnLgXvLTeau3NR1///K8RNQnj6GrTVhWQbmN6pYAV+qwXdZ2HD5AKz62NVjT KcjwNL2irL8wTYaKKGnUMzndCBL9R0lq+wEpVRtUACFl77GcxTnbkuJk6hE9dx6Hwk JDbfAotIewksw== 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, ryncsn@gmail.com Cc: "Alex Shi (tencent)" , Hugh Dickins , Chris Wright Subject: [PATCH v3 10/14] mm/ksm: Convert stable_tree_search to use folio Date: Mon, 25 Mar 2024 20:48:57 +0800 Message-ID: <20240325124904.398913-11-alexs@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240325124904.398913-1-alexs@kernel.org> References: <20240325124904.398913-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 c2afe2f926db..e92445f29685 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 Sun Feb 8 10:16:55 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 143406BFC2 for ; Mon, 25 Mar 2024 12:46:16 +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=1711370777; cv=none; b=IorhWswvnjR2PJT99cn0TFDQf/0H6ZWx0OAVjLblXem5GrmQ5Lh1CVMs37I/0RSMOnLUMTci/rmJrj7ifgAKr9Qb4l9GlSvPsYkLEgLL4N0u/M92iqHUTW6C+j7DR7XqjIA7lmkqd0/TLY1DnSkz23fZOTKerlT9TnMEoQP+EDM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711370777; c=relaxed/simple; bh=wVJDweO+3+nZNvpdxD1sOnabgczsKGATc/r/G9PfpiM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=j9atOzcCu/g0edo5Ic6BUThJ489b6t0e/8MS0M2RIM6W2NWu/6v0xVZ+CoCS4BqiuiPzZllhM7JbZZh3kKEaeVlF8LpjBTFVk2UkoJzIkrjmlwV8sl55+Yk1z+J9N+k0sZr582miOQu+mH8pPYXDGzOfq/Hn6twLgwtzZQzDP7o= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=at0VDuHS; 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="at0VDuHS" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 457B1C433F1; Mon, 25 Mar 2024 12:46:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1711370776; bh=wVJDweO+3+nZNvpdxD1sOnabgczsKGATc/r/G9PfpiM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=at0VDuHS1UFGvZa2neZdLri042ZbLa6A9MUgGRBNE5qGfCI2bODuBIA+VXldGpWmz AzJe9wHMcmIBUbmnO5/pHRIsv/Q/o4PcTWzYXvcIpEEIuGuXBKeuXRMIutXAYCR1I3 /0LHpeFZ6sCQ+Qk8HwfLlumd0YNfJHFmIrE72awqDsW8FNVinqkiaFLuaQswCaZFxq ewFRlvWp135MbtvT4KguhzgPncItoNY2Twe1cufEpby7VJdZTZNedABe6Vo7sqMiCF swfeW+jnM6fzay7hnPM43ksTBiWNp3G9ZwFMuxYPKn2m99dxG82erlMJDDYcuPo63N dtMH7Lhm7e9Nw== 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, ryncsn@gmail.com Cc: "Alex Shi (tencent)" , Hugh Dickins , Chris Wright Subject: [PATCH v3 11/14] mm/ksm: remove get_ksm_page and related info Date: Mon, 25 Mar 2024 20:48:58 +0800 Message-ID: <20240325124904.398913-12-alexs@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240325124904.398913-1-alexs@kernel.org> References: <20240325124904.398913-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 Reviewed-by: David Hildenbrand --- 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 e92445f29685..0ad02524e363 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 struct page *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 Sun Feb 8 10:16:55 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 D8D5D15F411 for ; Mon, 25 Mar 2024 12:46:19 +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=1711370779; cv=none; b=XlPcehJNeiOgXPfSpTsoWiVNS1KFx9Uy6YIyuSV7YBURGG75nog5FNnsysOPOsJ1lTDuFEUV3VMd4E5+UwCo8VqzXtvLyXa+FOIFqbEJGVb9CRhaxYF/07iwemJsFgw+h1FBTZHDjxbf92+dRvuD6VzBc3i9Jj6Fs3XPiEE0MG8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711370779; c=relaxed/simple; bh=arZB3IpTCMJ2LTtZkVucxq3hez+AmaxlVxPKhMFKVEk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=M3QV3oP6++iGHAatS3ltGTJOAgpI6Kocc9v7RfAIEBTAFdVsK5c08FOvr9SY7siP1lL3I2dHIJAOOZtj9VnVaTeFPOAFZbrah+DH/87jiBi+kEsoxcU11++TshJdlwNV88SrHq6tqwIIn8yNU1MTp2+/lLB9arZP6bTIaf2HneE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Rff8wy/g; 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="Rff8wy/g" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 38D82C433A6; Mon, 25 Mar 2024 12:46:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1711370779; bh=arZB3IpTCMJ2LTtZkVucxq3hez+AmaxlVxPKhMFKVEk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Rff8wy/gttXaTtUeASAh+hMee0l3Szue+pd80LQ7k9jBYU7wpVMjckiX7PPi/CCDY JmtuOZ96Z9NiUesHdgS7I/17APw8F8a6shAI8Hx0MOMOvcotCH045NHl0562JFdUyM uR63wRqfAstz1MfVQh4UgDxGwrvMYSPNgwH8m5jXkWM2VQXmwhd81SQ4FTsCp/J4Zi ASIM7LKrdIOomYptlMN/ZXGzrO2+KbvRDrzVxpWKq6zTzqlN44ppN7BDBeNUcjUeaf +s7Q5kySAFuGKdy+Puod7mj35GfQEifImvDyWAVmGQxwyF0PB0kNQk7JtWv3EfKXTS QBdN/da9IUlNA== 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, ryncsn@gmail.com Cc: "Alex Shi (tencent)" , Hugh Dickins , Chris Wright Subject: [PATCH v3 12/14] mm/ksm: return folio for chain series funcs Date: Mon, 25 Mar 2024 20:48:59 +0800 Message-ID: <20240325124904.398913-13-alexs@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240325124904.398913-1-alexs@kernel.org> References: <20240325124904.398913-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 | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/mm/ksm.c b/mm/ksm.c index 0ad02524e363..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 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 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; @@ -1739,7 +1739,7 @@ static struct page *stable_node_dup(struct ksm_stable= _node **_stable_node_dup, } =20 *_stable_node_dup =3D found; - return &tree_folio->page; + return tree_folio; } =20 static struct ksm_stable_node *stable_node_dup_any(struct ksm_stable_node = *stable_node, @@ -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 Sun Feb 8 10:16:55 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 8ED69161915 for ; Mon, 25 Mar 2024 12:46:22 +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=1711370782; cv=none; b=EizvLf1OKFR1sW5EDekygIYio/CpFF1sm4no6JmCSZqngVQouCb7oymN5pWmzU+cdOO/JJ38N+MHcmBZSmRFuq0MRh++D83cmqtUSA1dhXSQVVQ4gKcNEsaVMNPHAp3puRgtn9z8qx0UprI/cMG6a+nysR9dqAcpOK9KZHC/nJk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711370782; c=relaxed/simple; bh=ZriKAGE58KVGgk3LtHqsYBhdOJzv7LI/X6J606D1xxw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=lQAih6YkLXG6E+18PdHTVjPsmvdFhSEIVhIRsnUitj6sTnpNXyKdeP7rgWQhMN60gw0SL/krEW1LKYQv4tXk7tnAwUFN/gqWHeL73ea0+w0t9aV5uHBXOk5bTm7PJtiQK4ZIyDS1BQe4+i1URsWT8H7TKTDzcX0mq4Gne3FSm2g= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=R4e1gCa0; 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="R4e1gCa0" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 07108C43390; Mon, 25 Mar 2024 12:46:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1711370782; bh=ZriKAGE58KVGgk3LtHqsYBhdOJzv7LI/X6J606D1xxw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=R4e1gCa0XXthXxDX1BVjSpCwAOrXN3yXEnOKgM7VQzdWV57yKkfcA6jTRuemNBpPk cB15ux/wXrKv9yHhvUufFYr2882U4OjiVTCQGdfIigsmAadPt7KopB0roJ8VFftt8a ui44vFdFuoIKw0rV7d8UOx42w2pV8KnpkkqT4L/pnhwDAT6g4KoPWYmZB8HemEl3hU bkNVVJKYJ6yao6nAcZx3Z4aDvnCRwp/dX041t87HyEv3ahSuOCQwKWNtjXiz/IZKxf F5ssZsBvG+eP5J/A2c32/8//4yXzJ6pe4Wgcr9nhm1SbFY4WMaTTMJVug1bcTPZTb4 EgwXN9kXAKISQ== 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, ryncsn@gmail.com Cc: "Alex Shi (tencent)" , Hugh Dickins , Chris Wright Subject: [PATCH v3 13/14] mm/ksm: use folio_set_stable_node in try_to_merge_one_page Date: Mon, 25 Mar 2024 20:49:00 +0800 Message-ID: <20240325124904.398913-14-alexs@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240325124904.398913-1-alexs@kernel.org> References: <20240325124904.398913-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 Reviewed-by: David Hildenbrand --- 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 Sun Feb 8 10:16:55 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 242B016192B for ; Mon, 25 Mar 2024 12:46:25 +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=1711370785; cv=none; b=gFZ8GGXFygCrTtAUagbfjODgncS0ErwC+cI/OIrFcLmsw2cNnJwse3o11r1JzACtMXILMHUTo10GTtNDSif7VUnFfT0xnqXXyMw7welQN8R1VeKZlFbcU54k01SbfXldc2TGc44KPjVenJbUh3TnaABrHNHTL4yuY5KEoNcHgzE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711370785; c=relaxed/simple; bh=S+tu/Us/naajLYwRUmTRqpD4Xo/mrCDuxEPxhqR6e8U=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=nkQ7/pIBtX5oOuptRPOEkpuqhfFk2RJxp7JmwVpeaFkJLH6L6/kiVCt9I1a7o+8ZL1DQ+1SUJtJSJZsx40/Vj6iuOwiEUEwzF2u7cM4PEWKxr4aIp8H1bGWZFjdY+LGsjF+3ULgu77a9fn5/W+9yfbE3hAGKeRnbZkBMFSKUiBo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=YvNscglB; 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="YvNscglB" Received: by smtp.kernel.org (Postfix) with ESMTPSA id C9A90C43390; Mon, 25 Mar 2024 12:46:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1711370785; bh=S+tu/Us/naajLYwRUmTRqpD4Xo/mrCDuxEPxhqR6e8U=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=YvNscglBOtArFIziHJISGyWfpSQgvEjzi2V85RJigyMkJAUyjE4z1ReQJ/PIJSSXK fnB7wj6WL/CVS9I7Oeg6UH7+80lg/zNhOGX+YNQlKNlh2LmFzlLW7BkoYIvYvEpQds Uccm1d6RduJh5VK4zvtMgDW9YJKv7K8+0fskz7o1dBrAFz2AGE2B6pjndW+KT6PwEw UTFfg2NyGuFyG20oDXmM0LrLWcuLmLpRPAIPk7dUgiYvCpFV515hW6hEWgKf8Mo1B0 WrSjM/A2arN5eRndkDsjXZTbtHZX7K7WUe9EhnDP6M7JmGydKPrrRDCRq+Tpo236Co Q3B8ZPqKqhPBg== 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, ryncsn@gmail.com Cc: "Alex Shi (tencent)" , Hugh Dickins , Chris Wright Subject: [PATCH v3 14/14] mm/ksm: remove set_page_stable_node Date: Mon, 25 Mar 2024 20:49:01 +0800 Message-ID: <20240325124904.398913-15-alexs@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240325124904.398913-1-alexs@kernel.org> References: <20240325124904.398913-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