2024-04-13 15:56:55

by Haifeng Xu

[permalink] [raw]
Subject: [PATCH] slub: Set __GFP_COMP in kmem_cache by default

Now the __GFP_COMP is set only if the higher-order is not 0. However,
__GFP_COMP flag can be set unconditionally because compound page can
not be created in the order-0 case. And this can also simplify the code
a bit (no need to check the order is 0 or not).

Signed-off-by: Haifeng Xu <[email protected]>
Reviewed-by: Matthew Wilcox (Oracle) <[email protected]>
---
mm/slub.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/mm/slub.c b/mm/slub.c
index e7bf1a1a31a8..49a3ebefab86 100644
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -4461,9 +4461,7 @@ static int calculate_sizes(struct kmem_cache *s)
if ((int)order < 0)
return 0;

- s->allocflags = 0;
- if (order)
- s->allocflags |= __GFP_COMP;
+ s->allocflags = __GFP_COMP;

if (s->flags & SLAB_CACHE_DMA)
s->allocflags |= GFP_DMA;
--
2.25.1



2024-04-15 15:01:52

by Vlastimil Babka

[permalink] [raw]
Subject: Re: [PATCH] slub: Set __GFP_COMP in kmem_cache by default

On 4/13/24 5:56 PM, Haifeng Xu wrote:
> Now the __GFP_COMP is set only if the higher-order is not 0. However,
> __GFP_COMP flag can be set unconditionally because compound page can
> not be created in the order-0 case. And this can also simplify the code
> a bit (no need to check the order is 0 or not).
>
> Signed-off-by: Haifeng Xu <[email protected]>
> Reviewed-by: Matthew Wilcox (Oracle) <[email protected]>

Thanks, added to slab/for-next

> ---
> mm/slub.c | 4 +---
> 1 file changed, 1 insertion(+), 3 deletions(-)
>
> diff --git a/mm/slub.c b/mm/slub.c
> index e7bf1a1a31a8..49a3ebefab86 100644
> --- a/mm/slub.c
> +++ b/mm/slub.c
> @@ -4461,9 +4461,7 @@ static int calculate_sizes(struct kmem_cache *s)
> if ((int)order < 0)
> return 0;
>
> - s->allocflags = 0;
> - if (order)
> - s->allocflags |= __GFP_COMP;
> + s->allocflags = __GFP_COMP;
>
> if (s->flags & SLAB_CACHE_DMA)
> s->allocflags |= GFP_DMA;