linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [RFC 00/11] cleanup vma_merge and improve mergeability tests
@ 2023-02-24 10:00 Vlastimil Babka
  2023-02-24 10:00 ` [RFC 01/11] mm/mremap: fix dup_anon_vma() in vma_merge() case 4 Vlastimil Babka
                   ` (10 more replies)
  0 siblings, 11 replies; 12+ messages in thread
From: Vlastimil Babka @ 2023-02-24 10:00 UTC (permalink / raw)
  To: linux-mm, Liam R. Howlett
  Cc: linux-kernel, patches, maple-tree, Vlastimil Babka

Also available in git:
https://git.kernel.org/vbabka/h/vma_merge_cleanup-v1r1

My initial goal here was to try making the check for vm_ops->close in
is_mergeable_vma() only be applied for vma's that would be truly removed
as part of the merge (see Patch 10). This would then allow reverting the
quick fix d014cd7c1c35 ("mm, mremap: fix mremap() expanding for vma's
with vm_ops->close()"). This was successful enough to allow the revert.
Checks using can_vma_merge_before() are still pessimistic about possible
vma removal, and making them precise would probably complicate the
vma_merge() code too much.

Liam's recent simplification of vma_merge() and removal of
__vma_adjust() was very much helpful in understanding the vma_merge()
implementation and especially when vma removals can happen, which is now
very obvious. While studing the code, I've found ways to make it
hopefully even more easy to follow, so that's the patches 2-9. That made
me notice a bug fixed in patch 1, which is already in the mm tree and
here just for completeness.

Vlastimil Babka (11):
  mm/mremap: fix dup_anon_vma() in vma_merge() case 4
  mm/mmap/vma_merge: use only primary pointers for preparing merge
  mm/mmap/vma_merge: use the proper vma pointer in case 3
  mm/mmap/vma_merge: use the proper vma pointers in cases 1 and 6
  mm/mmap/vma_merge: use the proper vma pointer in case 4
  mm/mmap/vma_merge: initialize mid and next in natural order
  mm/mmap/vma_merge: set mid to NULL if not applicable
  mm/mmap/vma_merge: rename adj_next to adj_start
  mm/mmap/vma_merge: convert mergeability checks to return bool
  mm/mmap: start distinguishing if vma can be removed in mergeability
    test
  mm/mremap: simplify vma expansion again

 mm/mmap.c   | 130 +++++++++++++++++++++++++++++-----------------------
 mm/mremap.c |  20 ++------
 2 files changed, 76 insertions(+), 74 deletions(-)

-- 
2.39.2



^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2023-02-24 10:01 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-02-24 10:00 [RFC 00/11] cleanup vma_merge and improve mergeability tests Vlastimil Babka
2023-02-24 10:00 ` [RFC 01/11] mm/mremap: fix dup_anon_vma() in vma_merge() case 4 Vlastimil Babka
2023-02-24 10:00 ` [RFC 02/11] mm/mmap/vma_merge: use only primary pointers for preparing merge Vlastimil Babka
2023-02-24 10:00 ` [RFC 03/11] mm/mmap/vma_merge: use the proper vma pointer in case 3 Vlastimil Babka
2023-02-24 10:00 ` [RFC 04/11] mm/mmap/vma_merge: use the proper vma pointers in cases 1 and 6 Vlastimil Babka
2023-02-24 10:00 ` [RFC 05/11] mm/mmap/vma_merge: use the proper vma pointer in case 4 Vlastimil Babka
2023-02-24 10:00 ` [RFC 06/11] mm/mmap/vma_merge: initialize mid and next in natural order Vlastimil Babka
2023-02-24 10:00 ` [RFC 07/11] mm/mmap/vma_merge: set mid to NULL if not applicable Vlastimil Babka
2023-02-24 10:00 ` [RFC 08/11] mm/mmap/vma_merge: rename adj_next to adj_start Vlastimil Babka
2023-02-24 10:00 ` [RFC 09/11] mm/mmap/vma_merge: convert mergeability checks to return bool Vlastimil Babka
2023-02-24 10:00 ` [RFC 10/11] mm/mmap: start distinguishing if vma can be removed in mergeability test Vlastimil Babka
2023-02-24 10:00 ` [RFC 11/11] mm/mremap: simplify vma expansion again Vlastimil Babka

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).