Message ID | 20220607093449.3100-5-urezki@gmail.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | Reduce a vmalloc internal lock contention preparation work | expand |
On Tue, Jun 07, 2022 at 11:34:48AM +0200, Uladzislau Rezki (Sony) wrote: > __find_vmap_area() finds a "vmap_area" based on passed address. > It scan the specific "vmap_area_root" rb-tree. Extend the function > with one extra argument, so any tree can be specified where the > search has to be done. Uhh, why? This just adds a copletel useless argument.
On Tue, Jun 7, 2022 at 11:47 AM Christoph Hellwig <hch@infradead.org> wrote: > > On Tue, Jun 07, 2022 at 11:34:48AM +0200, Uladzislau Rezki (Sony) wrote: > > __find_vmap_area() finds a "vmap_area" based on passed address. > > It scan the specific "vmap_area_root" rb-tree. Extend the function > > with one extra argument, so any tree can be specified where the > > search has to be done. > > Uhh, why? This just adds a copletel useless argument. > I wrote about it in the cover latter. It is a preparation work for making vmalloc per-cpu. In that case free/busy data are located on different rb_roots that is why those functions have to be adopted to work with any tree.
On 06/07/22 at 11:34am, Uladzislau Rezki (Sony) wrote: > __find_vmap_area() finds a "vmap_area" based on passed address. > It scan the specific "vmap_area_root" rb-tree. Extend the function > with one extra argument, so any tree can be specified where the > search has to be done. > > There is no functional change as a result of this patch. LGTM, Reviewed-by: Baoquan He <bhe@redhat.com> > > Signed-off-by: Uladzislau Rezki (Sony) <urezki@gmail.com> > --- > mm/vmalloc.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/mm/vmalloc.c b/mm/vmalloc.c > index 82771e555273..b60385101897 100644 > --- a/mm/vmalloc.c > +++ b/mm/vmalloc.c > @@ -814,9 +814,9 @@ static struct vmap_area *find_vmap_area_exceed_addr(unsigned long addr) > return va; > } > > -static struct vmap_area *__find_vmap_area(unsigned long addr) > +static struct vmap_area *__find_vmap_area(unsigned long addr, struct rb_root *root) > { > - struct rb_node *n = vmap_area_root.rb_node; > + struct rb_node *n = root->rb_node; > > addr = (unsigned long)kasan_reset_tag((void *)addr); > > @@ -1840,7 +1840,7 @@ static struct vmap_area *find_vmap_area(unsigned long addr) > struct vmap_area *va; > > spin_lock(&vmap_area_lock); > - va = __find_vmap_area(addr); > + va = __find_vmap_area(addr, &vmap_area_root); > spin_unlock(&vmap_area_lock); > > return va; > @@ -2582,7 +2582,7 @@ struct vm_struct *remove_vm_area(const void *addr) > might_sleep(); > > spin_lock(&vmap_area_lock); > - va = __find_vmap_area((unsigned long)addr); > + va = __find_vmap_area((unsigned long)addr, &vmap_area_root); > if (va && va->vm) { > struct vm_struct *vm = va->vm; > > -- > 2.30.2 > >
diff --git a/mm/vmalloc.c b/mm/vmalloc.c index 82771e555273..b60385101897 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c @@ -814,9 +814,9 @@ static struct vmap_area *find_vmap_area_exceed_addr(unsigned long addr) return va; } -static struct vmap_area *__find_vmap_area(unsigned long addr) +static struct vmap_area *__find_vmap_area(unsigned long addr, struct rb_root *root) { - struct rb_node *n = vmap_area_root.rb_node; + struct rb_node *n = root->rb_node; addr = (unsigned long)kasan_reset_tag((void *)addr); @@ -1840,7 +1840,7 @@ static struct vmap_area *find_vmap_area(unsigned long addr) struct vmap_area *va; spin_lock(&vmap_area_lock); - va = __find_vmap_area(addr); + va = __find_vmap_area(addr, &vmap_area_root); spin_unlock(&vmap_area_lock); return va; @@ -2582,7 +2582,7 @@ struct vm_struct *remove_vm_area(const void *addr) might_sleep(); spin_lock(&vmap_area_lock); - va = __find_vmap_area((unsigned long)addr); + va = __find_vmap_area((unsigned long)addr, &vmap_area_root); if (va && va->vm) { struct vm_struct *vm = va->vm;
__find_vmap_area() finds a "vmap_area" based on passed address. It scan the specific "vmap_area_root" rb-tree. Extend the function with one extra argument, so any tree can be specified where the search has to be done. There is no functional change as a result of this patch. Signed-off-by: Uladzislau Rezki (Sony) <urezki@gmail.com> --- mm/vmalloc.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)