All of lore.kernel.org
 help / color / mirror / Atom feed
From: alexs@kernel.org
To: Andrew Morton <akpm@linux-foundation.org>,
	linux-mm@kvack.org, linux-kernel@vger.kernel.org,
	zik.eidus@ravellosystems.com, willy@infradead.org,
	aarcange@redhat.com, hughd@google.com, chrisw@sous-sol.org,
	david@redhat.com
Cc: "Alex Shi (tencent)" <alexs@kernel.org>,
	Izik Eidus <izik.eidus@ravellosystems.com>
Subject: [PATCH v5 05/10] mm/ksm: use folio in stable_node_dup
Date: Thu, 11 Apr 2024 14:17:06 +0800	[thread overview]
Message-ID: <20240411061713.1847574-6-alexs@kernel.org> (raw)
In-Reply-To: <20240411061713.1847574-1-alexs@kernel.org>

From: "Alex Shi (tencent)" <alexs@kernel.org>

Use ksm_get_folio() and save 2 compound_head calls.

Cc: Izik Eidus <izik.eidus@ravellosystems.com>
Cc: Matthew Wilcox <willy@infradead.org>
Cc: Andrea Arcangeli <aarcange@redhat.com>
Cc: Hugh Dickins <hughd@google.com>
Cc: Chris Wright <chrisw@sous-sol.org>
Signed-off-by: Alex Shi (tencent) <alexs@kernel.org>
Reviewed-by: David Hildenbrand <david@redhat.com>
---
 mm/ksm.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/mm/ksm.c b/mm/ksm.c
index 1a7b13004589..654400f993fc 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 = NULL, *stable_node = *_stable_node;
 	struct hlist_node *hlist_safe;
-	struct page *_tree_page, *tree_page = NULL;
+	struct folio *folio, *tree_folio = NULL;
 	int nr = 0;
 	int found_rmap_hlist_len;
 
@@ -1657,24 +1657,24 @@ 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
 		 * under us if it returns NULL.
 		 */
-		_tree_page = get_ksm_page(dup, GET_KSM_PAGE_NOLOCK);
-		if (!_tree_page)
+		folio = ksm_get_folio(dup, GET_KSM_PAGE_NOLOCK);
+		if (!folio)
 			continue;
 		nr += 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 = dup;
 				found_rmap_hlist_len = found->rmap_hlist_len;
-				tree_page = _tree_page;
+				tree_folio = folio;
 
 				/* 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);
 	}
 
 	if (found) {
@@ -1747,7 +1747,7 @@ static struct page *stable_node_dup(struct ksm_stable_node **_stable_node_dup,
 	}
 
 	*_stable_node_dup = found;
-	return tree_page;
+	return &tree_folio->page;
 }
 
 static struct ksm_stable_node *stable_node_dup_any(struct ksm_stable_node *stable_node,
-- 
2.43.0


  parent reply	other threads:[~2024-04-11  6:14 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-11  6:17 [PATCH v5 0/10] transfer page to folio in KSM alexs
2024-04-11  6:17 ` [PATCH v5 01/10] mm/ksm: add ksm_get_folio alexs
2024-04-11  6:17 ` [PATCH v5 02/10] mm/ksm: use folio in remove_rmap_item_from_tree alexs
2024-04-11  6:17 ` [PATCH v5 03/10] mm/ksm: add folio_set_stable_node alexs
2024-04-11  6:17 ` [PATCH v5 04/10] mm/ksm: use folio in remove_stable_node alexs
2024-04-11  6:17 ` alexs [this message]
2024-04-11  6:17 ` [PATCH v5 06/10] mm/ksm: use ksm_get_folio in scan_get_next_rmap_item alexs
2024-04-11  6:17 ` [PATCH v5 07/10] mm/ksm: use folio in write_protect_page alexs
2024-04-11  6:17 ` [PATCH v5 08/10] mm/ksm: Convert chain series funcs and replace get_ksm_page alexs
2024-04-11  7:53   ` David Hildenbrand
2024-04-11 11:38     ` Alex Shi
2024-04-11  6:17 ` [PATCH v5 09/10] mm/ksm: rename get_ksm_page_flags() to ksm_get_folio_flags alexs
2024-04-11  7:51   ` David Hildenbrand
2024-04-11 11:42     ` Alex Shi
2024-04-11 11:46       ` David Hildenbrand
2024-04-11 20:42         ` Andrew Morton
2024-04-11 21:08           ` David Hildenbrand
2024-04-12  1:57           ` Alex Shi
2024-04-11  6:17 ` [PATCH v5 10/10] mm/ksm: replace set_page_stable_node by folio_set_stable_node alexs
2024-04-11  7:55 ` [PATCH v5 0/10] transfer page to folio in KSM David Hildenbrand
2024-04-11 11:45   ` Alex Shi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240411061713.1847574-6-alexs@kernel.org \
    --to=alexs@kernel.org \
    --cc=aarcange@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=chrisw@sous-sol.org \
    --cc=david@redhat.com \
    --cc=hughd@google.com \
    --cc=izik.eidus@ravellosystems.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=willy@infradead.org \
    --cc=zik.eidus@ravellosystems.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.