Re: [patch 6/6] mm/vmalloc: Dont purge usable blocks unnecessarily

Thomas Gleixner
2023-05-24T12:56:01Z

On Wed, May 24 2023 at 18:34, Baoquan He wrote:
> On 05/23/23 at 04:02pm, Thomas Gleixner wrote:

Can you please trim your replies? It's a pain to find them.

>> static void *vb_alloc(unsigned long size, gfp_t gfp_mask)
>> @@ -4173,7 +4183,7 @@ struct vm_struct **pcpu_get_vm_areas(con
>> overflow:
>> spin_unlock(&free_vmap_area_lock);
>> if (!purged) {
>> - purge_vmap_area_lazy();
>> + purge_vmap_area_lazy(true);
>> purged = true;
>>
>> /* Before "retry", check if we recover. */
>
> Wondering why bothering to add 'force_purge' to purge_vmap_area_lazy(),
> purge_fragmented_blocks_allcpus() if they are all true. Can't we set
> 'force_purge' as true for purge_fragmented_block() in
> purge_fragmented_blocks()?
>
> alloc_vmap_area()
> pcpu_get_vm_areas()
> -->purge_vmap_area_lazy(true)
> -->purge_fragmented_blocks_allcpus(force_purge=true)
> -->purge_fragmented_block(force_purge=true)

Yes. purge_fragmented_blocks_allcpus() has only the
purge_vmap_area_lazy() caller left.

> And one place of change is missing, it will fail building.

Already reported by Uladzislau and I sent a fix in reply.