diff mbox series

[v4,15/66] mm: Convert vma_lookup() to use the Maple Tree

Message ID 20211201142918.921493-16-Liam.Howlett@oracle.com (mailing list archive)
State New
Headers show
Series Introducing the Maple Tree | expand

Commit Message

Liam R. Howlett Dec. 1, 2021, 2:29 p.m. UTC
From: "Matthew Wilcox (Oracle)" <willy@infradead.org>

Unlike the rbtree, the Maple Tree will return a NULL if there's
nothing at a particular address.

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
---
 include/linux/mm.h | 7 +------
 1 file changed, 1 insertion(+), 6 deletions(-)

Comments

Vlastimil Babka Dec. 17, 2021, 11:59 a.m. UTC | #1
Re: subject. It already uses the Maple Tree via find_vma(). So more accurate
would be e.g. "to use mtree_load()"?

Note there's also the side-effect of not using vmacache anymore (which is
still used in find_vma()), thus again potentially biasing results of later
vmacache removal. But seems like vma_lookup() is not used from hotpaths, so
it should be fine.

On 12/1/21 15:29, Liam Howlett wrote:
> From: "Matthew Wilcox (Oracle)" <willy@infradead.org>
> 
> Unlike the rbtree, the Maple Tree will return a NULL if there's
> nothing at a particular address.
> 
> 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 | 7 +------
>  1 file changed, 1 insertion(+), 6 deletions(-)
> 
> diff --git a/include/linux/mm.h b/include/linux/mm.h
> index 4d5ab70b1f6d..c28bd97a4ecd 100644
> --- a/include/linux/mm.h
> +++ b/include/linux/mm.h
> @@ -2845,12 +2845,7 @@ struct vm_area_struct *find_vma_intersection(struct mm_struct *mm,
>  static inline
>  struct vm_area_struct *vma_lookup(struct mm_struct *mm, unsigned long addr)
>  {
> -	struct vm_area_struct *vma = find_vma(mm, addr);
> -
> -	if (vma && addr < vma->vm_start)
> -		vma = NULL;
> -
> -	return vma;
> +	return mtree_load(&mm->mm_mt, addr);
>  }
>  
>  static inline unsigned long vm_start_gap(struct vm_area_struct *vma)
Liam R. Howlett Jan. 3, 2022, 5:07 p.m. UTC | #2
* Vlastimil Babka <vbabka@suse.cz> [211227 11:58]:
> Re: subject. It already uses the Maple Tree via find_vma(). So more accurate
> would be e.g. "to use mtree_load()"?

Agreed, I will change the subject to better reflect this change.

> 
> Note there's also the side-effect of not using vmacache anymore (which is
> still used in find_vma()), thus again potentially biasing results of later
> vmacache removal. But seems like vma_lookup() is not used from hotpaths, so
> it should be fine.

yes, this will affect the testing of the single patch removing the VMA
if left this way.  I'd like to point out that the testing of the VMA
cache removal was done with the entire patch set, so the results are
still valid.

> 
> On 12/1/21 15:29, Liam Howlett wrote:
> > From: "Matthew Wilcox (Oracle)" <willy@infradead.org>
> > 
> > Unlike the rbtree, the Maple Tree will return a NULL if there's
> > nothing at a particular address.
> > 
> > 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 | 7 +------
> >  1 file changed, 1 insertion(+), 6 deletions(-)
> > 
> > diff --git a/include/linux/mm.h b/include/linux/mm.h
> > index 4d5ab70b1f6d..c28bd97a4ecd 100644
> > --- a/include/linux/mm.h
> > +++ b/include/linux/mm.h
> > @@ -2845,12 +2845,7 @@ struct vm_area_struct *find_vma_intersection(struct mm_struct *mm,
> >  static inline
> >  struct vm_area_struct *vma_lookup(struct mm_struct *mm, unsigned long addr)
> >  {
> > -	struct vm_area_struct *vma = find_vma(mm, addr);
> > -
> > -	if (vma && addr < vma->vm_start)
> > -		vma = NULL;
> > -
> > -	return vma;
> > +	return mtree_load(&mm->mm_mt, addr);
> >  }
> >  
> >  static inline unsigned long vm_start_gap(struct vm_area_struct *vma)
> 
> 
> -- 
> maple-tree mailing list
> maple-tree@lists.infradead.org
> https://lists.infradead.org/mailman/listinfo/maple-tree
diff mbox series

Patch

diff --git a/include/linux/mm.h b/include/linux/mm.h
index 4d5ab70b1f6d..c28bd97a4ecd 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -2845,12 +2845,7 @@  struct vm_area_struct *find_vma_intersection(struct mm_struct *mm,
 static inline
 struct vm_area_struct *vma_lookup(struct mm_struct *mm, unsigned long addr)
 {
-	struct vm_area_struct *vma = find_vma(mm, addr);
-
-	if (vma && addr < vma->vm_start)
-		vma = NULL;
-
-	return vma;
+	return mtree_load(&mm->mm_mt, addr);
 }
 
 static inline unsigned long vm_start_gap(struct vm_area_struct *vma)