]> www.infradead.org Git - users/jedix/linux-maple.git/commit
kernel/fork: Use maple tree for dup_mmap() during forking
authorLiam R. Howlett <Liam.Howlett@Oracle.com>
Fri, 22 Oct 2021 17:53:01 +0000 (13:53 -0400)
committerLiam R. Howlett <Liam.Howlett@oracle.com>
Fri, 11 Feb 2022 03:38:05 +0000 (22:38 -0500)
commit491d0facb812315490aafbba9dddb7f1c393b44f
tree8d3b22d0243d364374890608331d099170d668c1
parentb74927938ae13fec19718b665d1f0bd306416ec3
kernel/fork: Use maple tree for dup_mmap() during forking

The maple tree was already tracking VMAs in this function by an earlier
commit, but the rbtree iterator was being used to iterate the list.
Change the iterator to use a maple tree native iterator and switch to
the maple tree advanced API to avoid multiple walks of the tree during
insert operations.  Unexport the now-unused vma_store() function.

For performance reasons we bulk allocate the maple tree nodes.  The node
calculations are done internally to the tree and use the VMA count and
assume the worst-case node requirements.  The VM_DONT_COPY flag does
not allow for the most efficient copy method of the tree and so a bulk
loading algorithm is used.

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Acked-by: Vlastimil Babka <vbabka@suse.cz>
include/linux/mm.h
kernel/fork.c