From: Minchan Kim <minchan@kernel.org>
To: Alexander Gordeev <agordeev@linux.ibm.com>
Cc: akpm@linux-foundation.org, hca@linux.ibm.com,
linux-s390@vger.kernel.org, david@kernel.org, mhocko@suse.com,
brauner@kernel.org, linux-mm@kvack.org,
linux-kernel@vger.kernel.org, surenb@google.com,
timmurray@google.com
Subject: Re: [PATCH v1 1/3] mm: process_mrelease: expedite clean file folio reclaim via mmu_gather
Date: Mon, 11 May 2026 14:48:59 -0700 [thread overview]
Message-ID: <agJOy1vnvYGipnku@google.com> (raw)
In-Reply-To: <d9644dab-120f-485c-9324-205282d89234-agordeev@linux.ibm.com>
On Mon, May 11, 2026 at 06:13:09PM +0200, Alexander Gordeev wrote:
> On Fri, May 08, 2026 at 02:56:35PM -0700, Minchan Kim wrote:
>
> Hi Minchan,
>
> > > > +void free_pages_and_caches(struct mm_struct *mm, struct encoded_page **pages, int nr)
> > > > +{
> > > > + bool try_evict_file_folios = mm_flags_test(MMF_UNSTABLE, mm);
> > > > + struct folio_batch folios;
> > > > + unsigned int refs[PAGEVEC_SIZE];
> > > > +
> > > > + folio_batch_init(&folios);
> > > > + for (int i = 0; i < nr; i++) {
> > > > + struct folio *folio = page_folio(encoded_page_ptr(pages[i]));
> > > > +
> > > > + if (folio_test_anon(folio))
> > > > + free_swap_cache(folio);
> > > > + else if (unlikely(try_evict_file_folios))
> > > > + free_file_cache(folio);
> > >
> > > This condition is absent in free_pages_and_swap_cache().
> > > What would happen with non-anon and non-evict folio?
> >
> > Are you asking about mlocked pages for file?
> >
> > During unmapping, munlock_vma_folio() inside __folio_remove_rmap() clears
> > the PG_mlocked flag and moves the folio back to the evictable LRU list.
> >
> > By the time the folios reach free_pages_and_caches(), if the folio is
> > exclusive, it will be successfully evicted. However, if the folio is shared,
> > mapping_evict_folio() detects it via the refcount check and skips the
> > eviction.
> >
> > However, I realized we miss shmem folios in the swap cache due to the new
> > folio_test_anon() check we introduced. I will update the check to something
> > like this:
> >
> > if (folio_test_swapcache(folio))
> > free_swap_cache(folio);
>
> This condition looks redundant, since free_swap_cache() checks it too.
What I meant is that the free_pages_and_swap_cache calls free_swap_cache
unconditionally for all those folio but my change in
free_pages_and_cached calls it only anon folio, which will miss shmem
cases.
next prev parent reply other threads:[~2026-05-11 21:49 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-21 23:02 [PATCH v1 0/3] mm: process_mrelease: expedite clean file folio reclaim and add auto-kill Minchan Kim
2026-04-21 23:02 ` [PATCH v1 1/3] mm: process_mrelease: expedite clean file folio reclaim via mmu_gather Minchan Kim
2026-04-24 7:56 ` David Hildenbrand (Arm)
2026-04-24 21:24 ` Minchan Kim
2026-04-27 9:29 ` David Hildenbrand (Arm)
2026-04-27 22:04 ` Minchan Kim
2026-04-24 19:33 ` Matthew Wilcox
2026-04-24 21:56 ` Minchan Kim
2026-05-05 14:53 ` Alexander Gordeev
2026-05-08 21:56 ` Minchan Kim
2026-05-11 16:13 ` Alexander Gordeev
2026-05-11 21:48 ` Minchan Kim [this message]
2026-04-21 23:02 ` [PATCH v1 2/3] mm: process_mrelease: skip LRU movement for exclusive file folios Minchan Kim
2026-04-22 7:22 ` Baolin Wang
2026-04-23 23:38 ` Minchan Kim
2026-04-24 7:51 ` Michal Hocko
2026-04-24 7:57 ` David Hildenbrand (Arm)
2026-04-24 19:15 ` Minchan Kim
2026-04-27 7:16 ` Michal Hocko
2026-04-27 16:48 ` Suren Baghdasaryan
2026-04-27 17:15 ` Michal Hocko
2026-04-27 23:05 ` Minchan Kim
2026-04-28 6:56 ` Michal Hocko
2026-04-29 1:19 ` Minchan Kim
2026-04-29 8:18 ` Michal Hocko
2026-04-29 9:09 ` David Hildenbrand (Arm)
2026-04-29 10:33 ` Michal Hocko
2026-04-29 13:07 ` David Hildenbrand (Arm)
2026-04-29 14:44 ` Michal Hocko
2026-04-30 6:08 ` David Hildenbrand (Arm)
2026-05-08 20:57 ` Liam R. Howlett
2026-05-11 13:05 ` David Hildenbrand (Arm)
2026-04-29 21:41 ` Minchan Kim
2026-04-30 14:38 ` David Hildenbrand (Arm)
2026-04-29 8:55 ` David Hildenbrand (Arm)
2026-04-29 21:42 ` Minchan Kim
2026-04-24 19:26 ` Minchan Kim
2026-04-21 23:02 ` [PATCH v1 3/3] mm: process_mrelease: introduce PROCESS_MRELEASE_REAP_KILL flag Minchan Kim
2026-04-24 7:57 ` Michal Hocko
2026-04-24 22:49 ` Minchan Kim
2026-04-27 7:02 ` Michal Hocko
2026-04-27 22:03 ` Minchan Kim
2026-04-28 7:01 ` Michal Hocko
2026-04-28 22:37 ` Minchan Kim
2026-04-29 8:25 ` Michal Hocko
2026-04-29 20:01 ` Suren Baghdasaryan
2026-04-29 21:17 ` Minchan Kim
2026-04-29 21:16 ` Minchan Kim
2026-04-27 20:34 ` Suren Baghdasaryan
2026-04-27 22:52 ` Minchan Kim
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=agJOy1vnvYGipnku@google.com \
--to=minchan@kernel.org \
--cc=agordeev@linux.ibm.com \
--cc=akpm@linux-foundation.org \
--cc=brauner@kernel.org \
--cc=david@kernel.org \
--cc=hca@linux.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-s390@vger.kernel.org \
--cc=mhocko@suse.com \
--cc=surenb@google.com \
--cc=timmurray@google.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox