All of lore.kernel.org
 help / color / mirror / Atom feed
From: Baoquan He <bhe@redhat.com>
To: Kairui Song <ryncsn@gmail.com>
Cc: linux-mm@kvack.org, Andrew Morton <akpm@linux-foundation.org>,
	Barry Song <baohua@kernel.org>, Chris Li <chrisl@kernel.org>,
	Nhat Pham <nphamcs@gmail.com>,
	Yosry Ahmed <yosry.ahmed@linux.dev>,
	David Hildenbrand <david@kernel.org>,
	Johannes Weiner <hannes@cmpxchg.org>,
	Youngjun Park <youngjun.park@lge.com>,
	Hugh Dickins <hughd@google.com>,
	Baolin Wang <baolin.wang@linux.alibaba.com>,
	Ying Huang <ying.huang@linux.alibaba.com>,
	Kemeng Shi <shikemeng@huaweicloud.com>,
	Lorenzo Stoakes <lorenzo.stoakes@oracle.com>,
	"Matthew Wilcox (Oracle)" <willy@infradead.org>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH v5 15/19] mm, swap: add folio to swap cache directly on allocation
Date: Mon, 22 Dec 2025 11:41:55 +0800	[thread overview]
Message-ID: <aUi+A1xjbcUh54wi@MiWiFi-R3L-srv> (raw)
In-Reply-To: <CAMgjq7DG-LghGSs_jANXbFqqRFEt_BeCv5gJV7wcTzVEy+N5yQ@mail.gmail.com>

On 12/22/25 at 10:42am, Kairui Song wrote:
> On Sat, Dec 20, 2025 at 12:12 PM Baoquan He <bhe@redhat.com> wrote:
> >
> > On 12/20/25 at 03:43am, Kairui Song wrote:
> > > From: Kairui Song <kasong@tencent.com>
...snip...
> > > diff --git a/mm/swap_state.c b/mm/swap_state.c
> > > index 327c051d7cd0..29fa8d313a79 100644
> > > --- a/mm/swap_state.c
> > > +++ b/mm/swap_state.c
> > > @@ -122,35 +122,56 @@ void *swap_cache_get_shadow(swp_entry_t entry)
> > >       return NULL;
> > >  }
> > >
> > > +void __swap_cache_add_folio(struct swap_cluster_info *ci,
> > > +                         struct folio *folio, swp_entry_t entry)
> > > +{
> > > +     unsigned long new_tb;
> > > +     unsigned int ci_start, ci_off, ci_end;
> > > +     unsigned long nr_pages = folio_nr_pages(folio);
> > > +
> > > +     VM_WARN_ON_ONCE_FOLIO(!folio_test_locked(folio), folio);
> > > +     VM_WARN_ON_ONCE_FOLIO(folio_test_swapcache(folio), folio);
> > > +     VM_WARN_ON_ONCE_FOLIO(!folio_test_swapbacked(folio), folio);
> > > +
> > > +     new_tb = folio_to_swp_tb(folio);
> > > +     ci_start = swp_cluster_offset(entry);
> > > +     ci_off = ci_start;
> > > +     ci_end = ci_start + nr_pages;
> > > +     do {
> > > +             VM_WARN_ON_ONCE(swp_tb_is_folio(__swap_table_get(ci, ci_off)));
> > > +             __swap_table_set(ci, ci_off, new_tb);
> > > +     } while (++ci_off < ci_end);
> > > +
> > > +     folio_ref_add(folio, nr_pages);
> > > +     folio_set_swapcache(folio);
> > > +     folio->swap = entry;
> > > +
> > > +     node_stat_mod_folio(folio, NR_FILE_PAGES, nr_pages);
> > > +     lruvec_stat_mod_folio(folio, NR_SWAPCACHE, nr_pages);
> > > +}
> > > +
> > >  /**
> > >   * swap_cache_add_folio - Add a folio into the swap cache.
> >
> > With my understanding, __swap_cache_add_folio() is the pure
> > functionality of adding a folio into swap cache. While
> 
> Hi Baoquan, thanks for the review and suggestion!
> 
> > swap_cache_add_folio() is specifically adding a folio into swap cache
> > during swap in path. Not sure if we can rename them to reflect this
> > clearer. At least from the functiona name and below kernel doc we can't
> > feel that. Maybe:
> > __swap_cache_add_folio() -> swap_cache_add_folio()
> 
> The `__` prefix should stay, I think. This function requires the
> caller to lock the swap cluster.
> 
> > swap_cache_add_folio() -> swap_cache_add_swapin_folio()
> 
> Indeed, my plan is that `swap_cache_add_folio` will be gone soon, we
> should always call `swap_cache_alloc_folio` instead to do the swap
> folio allocation in a unified way, and just remove this.
> 
> Currently we can't do that because shmem and anon have different
> routines for swapin folio allocation. Having a unified
> `swap_cache_alloc_folio` will provide better swapin fallout control
> and cleaner cgroup charging to avoid thrashing, etc.
> 
> Also this helper is currently inexplicitly used by zswap writeback
> too, so adding the swapin keyword seems not accurate.

OK, sounds good to me. Thanks for detailed explanation.



  reply	other threads:[~2025-12-22  3:42 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-12-19 19:43 [PATCH v5 00/19] mm, swap: swap table phase II: unify swapin use swap cache and cleanup flags Kairui Song
2025-12-19 19:43 ` [PATCH v5 01/19] mm, swap: rename __read_swap_cache_async to swap_cache_alloc_folio Kairui Song
2025-12-19 19:43 ` [PATCH v5 02/19] mm, swap: split swap cache preparation loop into a standalone helper Kairui Song
2025-12-19 19:43 ` [PATCH v5 03/19] mm, swap: never bypass the swap cache even for SWP_SYNCHRONOUS_IO Kairui Song
2025-12-19 19:43 ` [PATCH v5 04/19] mm, swap: always try to free swap cache for SWP_SYNCHRONOUS_IO devices Kairui Song
2025-12-19 19:43 ` [PATCH v5 05/19] mm, swap: simplify the code and reduce indention Kairui Song
2025-12-19 19:43 ` [PATCH v5 06/19] mm, swap: free the swap cache after folio is mapped Kairui Song
2025-12-19 19:43 ` [PATCH v5 08/19] mm/shmem, swap: remove SWAP_MAP_SHMEM Kairui Song
2025-12-19 19:43 ` [PATCH v5 09/19] mm, swap: swap entry of a bad slot should not be considered as swapped out Kairui Song
2025-12-19 19:43 ` [PATCH v5 10/19] mm, swap: consolidate cluster reclaim and usability check Kairui Song
2025-12-19 19:43 ` [PATCH v5 11/19] mm, swap: split locked entry duplicating into a standalone helper Kairui Song
2025-12-19 19:43 ` [PATCH v5 12/19] mm, swap: use swap cache as the swap in synchronize layer Kairui Song
2026-01-12 18:33   ` Kairui Song
2025-12-19 19:43 ` [PATCH v5 13/19] mm, swap: remove workaround for unsynchronized swap map cache state Kairui Song
2025-12-19 19:43 ` [PATCH v5 14/19] mm, swap: cleanup swap entry management workflow Kairui Song
2025-12-20  4:02   ` Baoquan He
2025-12-22  2:43     ` Kairui Song
2026-01-07 16:05       ` Kairui Song
2026-01-14 12:16   ` Chris Mason
2026-01-14 16:18     ` Kairui Song
2026-01-14 13:28   ` Lai, Yi
2026-01-14 16:22     ` Kairui Song
2026-01-14 16:53   ` Kairui Song
2026-01-14 22:29     ` Andrew Morton
2026-01-16 10:57       ` Chris Li
2026-01-29 19:32   ` Chris Mason
2026-01-30 16:48     ` Kairui Song
2025-12-19 19:43 ` [PATCH v5 15/19] mm, swap: add folio to swap cache directly on allocation Kairui Song
2025-12-20  4:12   ` Baoquan He
2025-12-22  2:42     ` Kairui Song
2025-12-22  3:41       ` Baoquan He [this message]
2025-12-19 19:43 ` [PATCH v5 16/19] mm, swap: check swap table directly for checking cache Kairui Song
2025-12-19 19:43 ` [PATCH v5 17/19] mm, swap: clean up and improve swap entries freeing Kairui Song
2025-12-19 19:43 ` [PATCH v5 18/19] mm, swap: drop the SWAP_HAS_CACHE flag Kairui Song
2025-12-19 19:43 ` [PATCH v5 19/19] mm, swap: remove no longer needed _swap_info_get Kairui Song
2025-12-19 19:57 ` [PATCH v5 07/19] mm/shmem: never bypass the swap cache for SWP_SYNCHRONOUS_IO Kairui Song
2025-12-19 20:05 ` [PATCH v5 00/19] mm, swap: swap table phase II: unify swapin use swap cache and cleanup flags Kairui Song
2025-12-20 12:34 ` Baoquan He

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=aUi+A1xjbcUh54wi@MiWiFi-R3L-srv \
    --to=bhe@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=baohua@kernel.org \
    --cc=baolin.wang@linux.alibaba.com \
    --cc=chrisl@kernel.org \
    --cc=david@kernel.org \
    --cc=hannes@cmpxchg.org \
    --cc=hughd@google.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=lorenzo.stoakes@oracle.com \
    --cc=nphamcs@gmail.com \
    --cc=ryncsn@gmail.com \
    --cc=shikemeng@huaweicloud.com \
    --cc=willy@infradead.org \
    --cc=ying.huang@linux.alibaba.com \
    --cc=yosry.ahmed@linux.dev \
    --cc=youngjun.park@lge.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.