All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Lorenzo Stoakes (ARM)" <ljs@kernel.org>
To: "David Hildenbrand (Arm)" <david@kernel.org>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	 "Liam R. Howlett" <liam@infradead.org>,
	Vlastimil Babka <vbabka@kernel.org>,
	 Mike Rapoport <rppt@kernel.org>,
	Suren Baghdasaryan <surenb@google.com>,
	 Michal Hocko <mhocko@suse.com>, Jann Horn <jannh@google.com>,
	Pedro Falcato <pfalcato@suse.de>,
	 "Matthew Wilcox (Oracle)" <willy@infradead.org>,
	Jan Kara <jack@suse.cz>, Miaohe Lin <linmiaohe@huawei.com>,
	 Naoya Horiguchi <nao.horiguchi@gmail.com>,
	Rik van Riel <riel@surriel.com>, Harry Yoo <harry@kernel.org>,
	 Lance Yang <lance.yang@linux.dev>, Kees Cook <kees@kernel.org>,
	Zi Yan <ziy@nvidia.com>,
	 Baolin Wang <baolin.wang@linux.alibaba.com>,
	Nico Pache <npache@redhat.com>,
	 Ryan Roberts <ryan.roberts@arm.com>, Dev Jain <dev.jain@arm.com>,
	Barry Song <baohua@kernel.org>,
	 Usama Arif <usama.arif@linux.dev>,
	Matthew Brost <matthew.brost@intel.com>,
	 Joshua Hahn <joshua.hahnjy@gmail.com>,
	Rakie Kim <rakie.kim@sk.com>, Byungchul Park <byungchul@sk.com>,
	 Gregory Price <gourry@gourry.net>,
	Ying Huang <ying.huang@linux.alibaba.com>,
	 Alistair Popple <apopple@nvidia.com>,
	Peter Xu <peterx@redhat.com>, Xu Xin <xu.xin16@zte.com.cn>,
	 Chengming Zhou <chengming.zhou@linux.dev>,
	Arnd Bergmann <arnd@arndb.de>,
	 Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	linux-mm@kvack.org, linux-kernel@vger.kernel.org,
	 linux-fsdevel@vger.kernel.org, linux-kselftest@vger.kernel.org
Subject: Re: [PATCH v3 09/15] mm/rmap: use anon pgoff to track MAP_PRIVATE file-backed anon folios
Date: Mon, 3 Aug 2026 15:30:53 +0100	[thread overview]
Message-ID: <anCmEhfZPfWI8TGt@lucifer> (raw)
In-Reply-To: <5dcf29d5-2fb4-4550-a3e9-a39645d736c8@kernel.org>

On Mon, Aug 03, 2026 at 01:32:50PM +0200, David Hildenbrand (Arm) wrote:
> On 7/29/26 18:48, Lorenzo Stoakes (ARM) wrote:
> > Currently anonymous folios belonging to CoW'd MAP_PRIVATE file-backed
> > mappings are indexed by their page offset within the file in which they
> > were originally mapped.
> >
> > This differs from anonymous folios belonging to pure anon mappings which
> > are indexed by their anonymous page offset (the address at which they'd
> > belong in the VMA when first faulted).
> >
> > This change fixes this inconsistency, always indexing anonymous folios by
> > their anonymous page offset regardless of the VMA to which they belong.
> >
>
> Yes, this is great.
>
> > The foundations have been laid such that we need only switch this
> > functionality on such by:
> >
> > * Using linear_anon_page_index() in __folio_set_anon() to assign the
> >   folio's index to the anonymous linear index rather than the file-backed
> >   one.
> >
> > * Otherwise using linear_anon_page_index() in all instances where
> >   anonymous folios are being referenced or manipulated.
> >
> > * Replacing vma_address() with vma_filebacked_address() or
> >   vma_anon_address() as appropriate.
> >
> > * Updating the merging logic to check that anonymous page offsets are
> >   aligned as well as filebacked ones for MAP_PRIVATE file-backed VMAs,
> >   introducing needs_adjacent_anon_pgoff() to figure out when this is
> >   required.
> >
> > * Updating linear_folio_page_index() to invoke linear_anon_page_index()
> >   if the folio is anonymous.
> >
> > * Updating vma_address_end() to use the VMA's anonymous page offset when
> >   pvmw->pgoff is anonymous.
> >
> > * Correcting folio_within_range() to use anonymous page offset for
> >   anonymous folios.
> >
> > This will have no impact on merging of anonymous VMAs, whose page offset
> > and anonymous page offset are identical, nor will it impact shared
> > file-backed VMAs, which will continue to be merged based on the file-backed
> > page offset.
> >
> > However, MAP_PRIVATE file-backed mappings must now be aligned on anonymous
> > page offset as well.
> >
> > In most instances this should have no impact on merging of file-backed
> > mappings, which are usually not merged all that often, let alone
> > MAP_PRIVATE mapped ones, and rarely remapped and faulted before being moved
> > back in place (the case in which a merge may now fail).
>
> Agreed.
>
> [...]
>
> >
> >  /**
> > - * vma_address - Find the virtual address a page range is mapped at.
> > - * @vma: The vma which maps this object.
> > - * @pgoff: The page offset within its object.
> > - * @nr_pages: The number of pages to consider.
> > - *
> > - * If any page in this range is mapped by this VMA, return the first address
> > - * where any of these pages appear.  Otherwise, return -EFAULT.
> > - */
> > -static inline unsigned long vma_address(const struct vm_area_struct *vma,
> > -		pgoff_t pgoff, unsigned long nr_pages)
> > -{
> > -	return __vma_address(vma, pgoff, vma_start_pgoff(vma), nr_pages);
> > -}
>
> Good to see this go.
> [...]
>
> >  	rmap_item->anon_vma = vma->anon_vma;
> > -	rmap_item->linear_page_index = linear_page_index(vma, rmap_item->address);
> > +	/* The VMA is always anon/MAP_PRIVATE-file backed so use anon index. */
> > +	rmap_item->linear_page_index = linear_anon_page_index(vma, rmap_item->address);
>
> You can drop this comment: It's an anon_vma + linear_page_index pair, so the
> anon_page_index is implied.

Ack will do.

>
> [...]
>
> >  	WRITE_ONCE(folio->mapping, (struct address_space *) anon_vma);
> > -	folio->index = linear_page_index(vma, address);
> > +	folio->index = linear_anon_page_index(vma, address);
>
>
> Apart from the LGTM.

Thanks!

>
> --
> Cheers,
>
> David

--
Cheers, Lorenzo

  reply	other threads:[~2026-08-03 14:31 UTC|newest]

Thread overview: 58+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-29 16:48 [PATCH v3 00/15] mm/rmap: index MAP_PRIVATE file-backed folios by anonymous pgoff Lorenzo Stoakes (ARM)
2026-07-29 16:48 ` [PATCH v3 01/15] mm/vma: introduce VMA anon page offset field and add helpers Lorenzo Stoakes (ARM)
2026-07-29 17:11   ` Lorenzo Stoakes (ARM)
2026-07-30  3:32   ` Gregory Price
2026-08-03  9:28   ` David Hildenbrand (Arm)
2026-08-03  9:46     ` Lorenzo Stoakes (ARM)
2026-08-03  9:58       ` David Hildenbrand (Arm)
2026-08-03 10:13         ` Lorenzo Stoakes (ARM)
2026-07-29 16:48 ` [PATCH v3 02/15] mm: introduce linear_anon_page_index() Lorenzo Stoakes (ARM)
2026-07-30  6:28   ` Gregory Price
2026-08-03  9:34   ` David Hildenbrand (Arm)
2026-08-03 10:10     ` Lorenzo Stoakes (ARM)
2026-07-29 16:48 ` [PATCH v3 03/15] mm: abstract vma_address() and introduce vma_anon_address() Lorenzo Stoakes (ARM)
2026-07-30  4:58   ` Gregory Price
2026-07-30  6:39     ` Gregory Price
2026-07-30 10:16       ` Lorenzo Stoakes (ARM)
2026-08-03  9:37   ` David Hildenbrand (Arm)
2026-07-29 16:48 ` [PATCH v3 04/15] mm: update print_bad_page_map() to show anonymous page index Lorenzo Stoakes (ARM)
2026-07-30  6:32   ` Gregory Price
2026-08-03  9:39     ` David Hildenbrand (Arm)
2026-08-03 10:19       ` Lorenzo Stoakes (ARM)
2026-08-05  8:30         ` Gregory Price
2026-08-05  9:01           ` Lorenzo Stoakes (ARM)
2026-08-06 15:14             ` Lorenzo Stoakes (ARM)
2026-08-06 16:54             ` Matthew Wilcox
2026-08-06 17:18               ` Lorenzo Stoakes (ARM)
2026-08-03  9:39   ` David Hildenbrand (Arm)
2026-07-29 16:48 ` [PATCH v3 05/15] mm: introduce and use vma_filebacked_address() Lorenzo Stoakes (ARM)
2026-08-03  9:54   ` David Hildenbrand (Arm)
2026-08-03 10:15     ` Lorenzo Stoakes (ARM)
2026-07-29 16:48 ` [PATCH v3 06/15] mm: propagate VMA anonymous page offset on map, remap, split + merge Lorenzo Stoakes (ARM)
2026-08-03 10:52   ` David Hildenbrand (Arm)
2026-08-03 13:46     ` Lorenzo Stoakes (ARM)
2026-08-05  7:35       ` David Hildenbrand (Arm)
2026-08-05  8:59         ` Lorenzo Stoakes (ARM)
2026-08-05  9:19           ` David Hildenbrand (Arm)
2026-08-05  9:29             ` Lorenzo Stoakes (ARM)
2026-07-29 16:48 ` [PATCH v3 07/15] mm/rmap: track whether the page VMA mapped pgoff is anonymous Lorenzo Stoakes (ARM)
2026-08-03 10:57   ` David Hildenbrand (Arm)
2026-08-03 13:51     ` Lorenzo Stoakes (ARM)
2026-08-03 14:02       ` David Hildenbrand (Arm)
2026-08-03 14:32         ` Lorenzo Stoakes (ARM)
2026-08-05  7:17           ` David Hildenbrand (Arm)
2026-08-05  7:25             ` Lorenzo Stoakes (ARM)
2026-07-29 16:48 ` [PATCH v3 08/15] mm: introduce and use linear_folio_page_index() Lorenzo Stoakes (ARM)
2026-08-03 11:27   ` David Hildenbrand (Arm)
2026-08-03 14:30     ` Lorenzo Stoakes (ARM)
2026-08-05  7:26       ` David Hildenbrand (Arm)
2026-08-05  9:02         ` Lorenzo Stoakes (ARM)
2026-07-29 16:48 ` [PATCH v3 09/15] mm/rmap: use anon pgoff to track MAP_PRIVATE file-backed anon folios Lorenzo Stoakes (ARM)
2026-08-03 11:32   ` David Hildenbrand (Arm)
2026-08-03 14:30     ` Lorenzo Stoakes (ARM) [this message]
2026-07-29 16:48 ` [PATCH v3 10/15] tools/testing/vma: expand VMA merge tests to assert anon pgoff Lorenzo Stoakes (ARM)
2026-07-29 16:48 ` [PATCH v3 11/15] tools/testing/selftests/mm: test anonymous page offset merge behaviour Lorenzo Stoakes (ARM)
2026-07-29 16:48 ` [PATCH v3 12/15] mm/vma: only permit MAP_PRIVATE /dev/zero to be mapped anonymous Lorenzo Stoakes (ARM)
2026-07-29 16:48 ` [PATCH v3 13/15] mm/vma: make MAP_PRIVATE-mapped /dev/zero mappings truly anonymous Lorenzo Stoakes (ARM)
2026-07-29 16:48 ` [PATCH v3 14/15] tools/testing/vma: add test to assert MAP_PRIVATE-/dev/zero is anon Lorenzo Stoakes (ARM)
2026-07-29 16:48 ` [PATCH v3 15/15] tools/testing/selftests/mm: add MAP_PRIVATE-/dev/zero merge tests Lorenzo Stoakes (ARM)

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=anCmEhfZPfWI8TGt@lucifer \
    --to=ljs@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=apopple@nvidia.com \
    --cc=arnd@arndb.de \
    --cc=baohua@kernel.org \
    --cc=baolin.wang@linux.alibaba.com \
    --cc=byungchul@sk.com \
    --cc=chengming.zhou@linux.dev \
    --cc=david@kernel.org \
    --cc=dev.jain@arm.com \
    --cc=gourry@gourry.net \
    --cc=gregkh@linuxfoundation.org \
    --cc=harry@kernel.org \
    --cc=jack@suse.cz \
    --cc=jannh@google.com \
    --cc=joshua.hahnjy@gmail.com \
    --cc=kees@kernel.org \
    --cc=lance.yang@linux.dev \
    --cc=liam@infradead.org \
    --cc=linmiaohe@huawei.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=matthew.brost@intel.com \
    --cc=mhocko@suse.com \
    --cc=nao.horiguchi@gmail.com \
    --cc=npache@redhat.com \
    --cc=peterx@redhat.com \
    --cc=pfalcato@suse.de \
    --cc=rakie.kim@sk.com \
    --cc=riel@surriel.com \
    --cc=rppt@kernel.org \
    --cc=ryan.roberts@arm.com \
    --cc=surenb@google.com \
    --cc=usama.arif@linux.dev \
    --cc=vbabka@kernel.org \
    --cc=willy@infradead.org \
    --cc=xu.xin16@zte.com.cn \
    --cc=ying.huang@linux.alibaba.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.