From: "David Hildenbrand (Arm)" <david@kernel.org>
To: Tal Zussman <tz2294@columbia.edu>,
Andrew Morton <akpm@linux-foundation.org>,
Chris Li <chrisl@kernel.org>, Kairui Song <kasong@tencent.com>,
Kemeng Shi <shikemeng@huaweicloud.com>,
Nhat Pham <nphamcs@gmail.com>, Baoquan He <baoquan.he@linux.dev>,
Barry Song <baohua@kernel.org>,
Youngjun Park <youngjun.park@lge.com>, Zi Yan <ziy@nvidia.com>,
Baolin Wang <baolin.wang@linux.alibaba.com>,
"Liam R. Howlett" <liam@infradead.org>,
Nico Pache <nico.pache@linux.dev>,
Ryan Roberts <ryan.roberts@arm.com>, Dev Jain <dev.jain@arm.com>,
Lance Yang <lance.yang@linux.dev>,
Usama Arif <usama.arif@linux.dev>,
Kiryl Shutsemau <kas@kernel.org>,
Lorenzo Stoakes <ljs@kernel.org>, Rik van Riel <riel@surriel.com>,
Vlastimil Babka <vbabka@kernel.org>, Harry Yoo <harry@kernel.org>,
Jann Horn <jannh@google.com>,
Johannes Weiner <hannes@cmpxchg.org>,
Yosry Ahmed <yosry@kernel.org>,
Chengming Zhou <chengming.zhou@linux.dev>,
Catalin Marinas <catalin.marinas@arm.com>,
Will Deacon <will@kernel.org>,
Mark Rutland <mark.rutland@arm.com>
Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v2 1/8] mm/swap: add folio_swap_entry() and folio_page_swap_entry()
Date: Wed, 9 Sep 2026 16:00:08 +0200 [thread overview]
Message-ID: <d0aa1ccd-d99f-4fa5-98c2-21cea0f413c7@kernel.org> (raw)
In-Reply-To: <20260908-folio_swap_entry-v2-1-ee6d01dfa5e1@columbia.edu>
On 9/8/26 17:16, Tal Zussman wrote:
> A folio in the swap cache occupies folio_nr_pages() contiguous swap
> entries starting at folio->swap, so a page's swap entry is just
> folio->swap plus the page's index in the folio. page_swap_entry() hides
> this behind a compound_head() call, and callers that already have the
> folio sometimes open-code the arithmetic instead.
>
> Add folio_swap_entry(), which takes a folio and a page index, and
> folio_page_swap_entry() for callers that have the page.
>
> Signed-off-by: Tal Zussman <tz2294@columbia.edu>
> ---
> include/linux/swap.h | 33 +++++++++++++++++++++++++++++++++
> 1 file changed, 33 insertions(+)
>
> diff --git a/include/linux/swap.h b/include/linux/swap.h
> index fc290e29e4a9..1d979e76e78a 100644
> --- a/include/linux/swap.h
> +++ b/include/linux/swap.h
> @@ -272,6 +272,39 @@ struct swap_info_struct {
> const struct swap_ops *ops;
> };
>
> +/**
> + * folio_swap_entry - Return the swap entry for a page within a folio.
> + * @folio: The folio.
> + * @idx: The index of the page within the folio.
> + *
> + * A folio in the swap cache occupies folio_nr_pages() contiguous swap
> + * entries starting at folio->swap. The caller must ensure the folio is
> + * in the swap cache and that @idx is within the folio.
> + */
> +static inline
> +swp_entry_t folio_swap_entry(const struct folio *folio, unsigned long idx)
> +{
> + swp_entry_t entry = folio->swap;
> +
> + VM_WARN_ON_ONCE_FOLIO(idx >= folio_nr_pages(folio), folio);
> + entry.val += idx;
> + return entry;
> +}
> +
> +/**
> + * folio_page_swap_entry - Return the swap entry of a page in a folio.
> + * @folio: The folio containing @page.
> + * @page: A page within @folio.
> + *
> + * The caller must ensure the folio is in the swap cache and that @page
> + * is part of @folio.
> + */
> +static inline swp_entry_t folio_page_swap_entry(const struct folio *folio,
> + const struct page *page)
> +{
> + return folio_swap_entry(folio, folio_page_idx(folio, page));
> +}
> +
> static inline swp_entry_t page_swap_entry(struct page *page)
> {
> struct folio *folio = page_folio(page);
>
"Return the swap entry for a page within a folio" vs. "Return the swap entry of
a page in a folio."
yet only of the variants has a "page" in the name :)
A bit confusing.
Not immediately sure how it could be done cleaner. The minority of cases seem to
use folio_swap_entry.
--
Cheers,
David
next prev parent reply other threads:[~2026-09-09 14:00 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-08 15:16 [PATCH v2 0/8] mm: remove page_swap_entry() Tal Zussman
2026-09-08 15:16 ` [PATCH v2 1/8] mm/swap: add folio_swap_entry() and folio_page_swap_entry() Tal Zussman
2026-09-09 14:00 ` David Hildenbrand (Arm) [this message]
2026-09-09 17:21 ` Tal Zussman
2026-09-09 17:25 ` David Hildenbrand (Arm)
2026-09-13 21:52 ` Tal Zussman
2026-09-14 10:39 ` David Hildenbrand (Arm)
2026-09-08 15:16 ` [PATCH v2 2/8] mm/huge_memory: add a comment to the open-coded swap entry Tal Zussman
2026-09-08 15:26 ` Zi Yan
2026-09-09 13:52 ` David Hildenbrand (Arm)
2026-09-08 15:16 ` [PATCH v2 3/8] mm/rmap: use folio_page_swap_entry() in ttu_anon_swapbacked_folio() Tal Zussman
2026-09-09 14:00 ` David Hildenbrand (Arm)
2026-09-08 15:16 ` [PATCH v2 4/8] mm/zswap: use folio_swap_entry() in zswap_store_page() Tal Zussman
2026-09-09 14:00 ` David Hildenbrand (Arm)
2026-09-08 15:16 ` [PATCH v2 5/8] mm/swapfile: use folio_page_swap_entry() Tal Zussman
2026-09-09 14:01 ` David Hildenbrand (Arm)
2026-09-08 15:16 ` [PATCH v2 6/8] arm64: mte: make mte_save_tags() and mte_restore_tags() static Tal Zussman
2026-09-09 14:01 ` David Hildenbrand (Arm)
2026-09-08 15:16 ` [PATCH v2 7/8] arm64: mte: pass the swap entry to mte_save_tags() Tal Zussman
2026-09-09 14:06 ` David Hildenbrand (Arm)
2026-09-08 15:16 ` [PATCH v2 8/8] mm/swap: remove page_swap_entry() Tal Zussman
2026-09-09 14:06 ` David Hildenbrand (Arm)
2026-09-08 17:55 ` [PATCH v2 0/8] mm: " Andrew Morton
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=d0aa1ccd-d99f-4fa5-98c2-21cea0f413c7@kernel.org \
--to=david@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=baohua@kernel.org \
--cc=baolin.wang@linux.alibaba.com \
--cc=baoquan.he@linux.dev \
--cc=catalin.marinas@arm.com \
--cc=chengming.zhou@linux.dev \
--cc=chrisl@kernel.org \
--cc=dev.jain@arm.com \
--cc=hannes@cmpxchg.org \
--cc=harry@kernel.org \
--cc=jannh@google.com \
--cc=kas@kernel.org \
--cc=kasong@tencent.com \
--cc=lance.yang@linux.dev \
--cc=liam@infradead.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=ljs@kernel.org \
--cc=mark.rutland@arm.com \
--cc=nico.pache@linux.dev \
--cc=nphamcs@gmail.com \
--cc=riel@surriel.com \
--cc=ryan.roberts@arm.com \
--cc=shikemeng@huaweicloud.com \
--cc=tz2294@columbia.edu \
--cc=usama.arif@linux.dev \
--cc=vbabka@kernel.org \
--cc=will@kernel.org \
--cc=yosry@kernel.org \
--cc=youngjun.park@lge.com \
--cc=ziy@nvidia.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.