* Re: [PATCH] mm/slob: Remove unnecessary page_mapcount_reset() function call
[not found] <20211212065241.GA886691@odroid>
@ 2021-12-14 11:51 ` Vlastimil Babka
0 siblings, 0 replies; only message in thread
From: Vlastimil Babka @ 2021-12-14 11:51 UTC (permalink / raw)
To: Hyeonggon Yoo
Cc: Matthew Wilcox, Christoph Lameter, David Rientjes, Joonsoo Kim,
Pekka Enberg, linux-mm, Andrew Morton, patches, Marco Elver,
Alexander Potapenko, Dmitry Vyukov, kasan-dev
On 12/12/21 07:52, Hyeonggon Yoo wrote:
> After commit f1ac9059ca34 ("mm/sl*b: Differentiate struct slab fields
> by sl*b implementations"), we can reorder fields of struct slab
> depending on slab allocator.
>
> For now, page_mapcount_reset() is called because page->_mapcount and
> slab->units have same offset. But this is not necessary for
> struct slab. Use unused field for units instead.
>
> Signed-off-by: Hyeonggon Yoo <42.hyeyoo@gmail.com>
Will add to the series, thanks!
> ---
> mm/slab.h | 4 ++--
> mm/slob.c | 1 -
> 2 files changed, 2 insertions(+), 3 deletions(-)
>
> diff --git a/mm/slab.h b/mm/slab.h
> index 90d7fceba470..dd0480149d38 100644
> --- a/mm/slab.h
> +++ b/mm/slab.h
> @@ -50,8 +50,8 @@ struct slab {
> struct list_head slab_list;
> void * __unused_1;
> void *freelist; /* first free block */
> - void * __unused_2;
> - int units;
> + long units;
> + unsigned int __unused_2;
>
> #else
> #error "Unexpected slab allocator configured"
> diff --git a/mm/slob.c b/mm/slob.c
> index 39b651b3e6e7..7b2d2c7d69cc 100644
> --- a/mm/slob.c
> +++ b/mm/slob.c
> @@ -404,7 +404,6 @@ static void slob_free(void *block, int size)
> clear_slob_page_free(sp);
> spin_unlock_irqrestore(&slob_lock, flags);
> __ClearPageSlab(slab_page(sp));
> - page_mapcount_reset(slab_page(sp));
> slob_free_pages(b, 0);
> return;
> }
^ permalink raw reply [flat|nested] only message in thread