All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hugh Dickins <hughd@google.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: David Hildenbrand <david@redhat.com>,
	Shivank Garg <shivankg@amd.com>,
	 Matthew Wilcox <willy@infradead.org>,
	 Christoph Hellwig <hch@infradead.org>,
	Keir Fraser <keirf@google.com>,  Jason Gunthorpe <jgg@ziepe.ca>,
	John Hubbard <jhubbard@nvidia.com>,
	 Frederick Mayle <fmayle@google.com>,
	Peter Xu <peterx@redhat.com>,
	 "Aneesh Kumar K.V" <aneesh.kumar@kernel.org>,
	 Johannes Weiner <hannes@cmpxchg.org>,
	Vlastimil Babka <vbabka@suse.cz>,
	 Alexander Krabler <Alexander.Krabler@kuka.com>,
	 Ge Yang <yangge1116@126.com>, Li Zhe <lizhe.67@bytedance.com>,
	 Chris Li <chrisl@kernel.org>, Yu Zhao <yuzhao@google.com>,
	 Axel Rasmussen <axelrasmussen@google.com>,
	 Yuanchu Xie <yuanchu@google.com>, Wei Xu <weixugc@google.com>,
	 Konstantin Khlebnikov <koct9i@gmail.com>,
	linux-kernel@vger.kernel.org,  linux-mm@kvack.org
Subject: [PATCH 1/7] mm: fix folio_expected_ref_count() when PG_private_2
Date: Sun, 31 Aug 2025 02:01:16 -0700 (PDT)	[thread overview]
Message-ID: <f91ee36e-a8cb-e3a4-c23b-524ff3848da7@google.com> (raw)
In-Reply-To: <a28b44f7-cdb4-8b81-4982-758ae774fbf7@google.com>

6.16's folio_expected_ref_count() is forgetting the PG_private_2 flag,
which (like PG_private, but not in addition to PG_private) counts for
1 more reference: it needs to be using folio_has_private() in place of
folio_test_private().

But this went wrong earlier: folio_expected_ref_count() was based on
(and replaced) mm/migrate.c's folio_expected_refs(), which has been
using folio_test_private() since 6.0 converted to folios(): before
that, expected_page_refs() was correctly using page_has_private().

Just a few filesystems are still using PG_private_2 a.k.a. PG_fscache.
Potentially, this fix re-enables page migration on their folios; but
it would not be surprising to learn that in practice those folios are
not migratable for other reasons.

Fixes: 86ebd50224c0 ("mm: add folio_expected_ref_count() for reference count calculation")
Fixes: 108ca8358139 ("mm/migrate: Convert expected_page_refs() to folio_expected_refs()")
Signed-off-by: Hugh Dickins <hughd@google.com>
Cc: <stable@vger.kernel.org>
---
 include/linux/mm.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/include/linux/mm.h b/include/linux/mm.h
index 1ae97a0b8ec7..ee8e535eadac 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -2180,8 +2180,8 @@ static inline int folio_expected_ref_count(const struct folio *folio)
 	} else {
 		/* One reference per page from the pagecache. */
 		ref_count += !!folio->mapping << order;
-		/* One reference from PG_private. */
-		ref_count += folio_test_private(folio);
+		/* One reference from PG_private or PG_private_2. */
+		ref_count += folio_has_private(folio);
 	}
 
 	/* One reference per page table mapping. */
-- 
2.51.0



  reply	other threads:[~2025-08-31  9:01 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-08-31  8:57 [PATCH 0/7] mm: better GUP pin lru_add_drain_all() Hugh Dickins
2025-08-31  9:01 ` Hugh Dickins [this message]
2025-08-31 23:37   ` [PATCH 1/7] mm: fix folio_expected_ref_count() when PG_private_2 Matthew Wilcox
2025-09-01  1:17     ` Hugh Dickins
2025-09-01  7:52       ` David Hildenbrand
2025-09-01  8:04         ` David Hildenbrand
2025-09-08 10:27           ` Hugh Dickins
2025-09-08 15:06             ` Matthew Wilcox
2025-09-08 19:47               ` Hugh Dickins
2025-08-31  9:05 ` [PATCH 2/7] mm/gup: check ref_count instead of lru before migration Hugh Dickins
2025-09-01  8:00   ` David Hildenbrand
2025-09-08 10:40     ` Hugh Dickins
2025-09-08 14:08       ` David Hildenbrand
2025-09-08 19:57         ` Hugh Dickins
2025-09-08 20:17           ` David Hildenbrand
2025-08-31  9:08 ` [PATCH 3/7] mm/gup: local lru_add_drain() to avoid lru_add_drain_all() Hugh Dickins
2025-09-01  8:05   ` David Hildenbrand
2025-09-08 10:53     ` Hugh Dickins
2025-08-31  9:11 ` [PATCH 4/7] mm: Revert "mm/gup: clear the LRU flag of a page before adding to LRU batch" Hugh Dickins
2025-09-01  8:06   ` David Hildenbrand
2025-08-31  9:13 ` [PATCH 5/7] mm: Revert "mm: vmscan.c: fix OOM on swap stress test" Hugh Dickins
2025-09-01  8:07   ` David Hildenbrand
2025-08-31  9:16 ` [PATCH 6/7] mm: folio_may_be_cached() unless folio_test_large() Hugh Dickins
2025-09-01  8:13   ` David Hildenbrand
2025-09-08 11:19     ` Hugh Dickins
2025-09-08 14:35       ` David Hildenbrand
2025-09-08 20:04         ` Hugh Dickins
2025-09-08 20:11           ` David Hildenbrand
2025-08-31  9:18 ` [PATCH 7/7] mm: lru_add_drain_all() do local lru_add_drain() first Hugh Dickins
2025-09-01  8:14   ` David Hildenbrand

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=f91ee36e-a8cb-e3a4-c23b-524ff3848da7@google.com \
    --to=hughd@google.com \
    --cc=Alexander.Krabler@kuka.com \
    --cc=akpm@linux-foundation.org \
    --cc=aneesh.kumar@kernel.org \
    --cc=axelrasmussen@google.com \
    --cc=chrisl@kernel.org \
    --cc=david@redhat.com \
    --cc=fmayle@google.com \
    --cc=hannes@cmpxchg.org \
    --cc=hch@infradead.org \
    --cc=jgg@ziepe.ca \
    --cc=jhubbard@nvidia.com \
    --cc=keirf@google.com \
    --cc=koct9i@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=lizhe.67@bytedance.com \
    --cc=peterx@redhat.com \
    --cc=shivankg@amd.com \
    --cc=vbabka@suse.cz \
    --cc=weixugc@google.com \
    --cc=willy@infradead.org \
    --cc=yangge1116@126.com \
    --cc=yuanchu@google.com \
    --cc=yuzhao@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 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.