OSDN Git Service

mm/slob: Remove unnecessary page_mapcount_reset() function call
authorHyeonggon Yoo <42.hyeyoo@gmail.com>
Sun, 12 Dec 2021 06:52:41 +0000 (06:52 +0000)
committerVlastimil Babka <vbabka@suse.cz>
Thu, 6 Jan 2022 11:27:28 +0000 (12:27 +0100)
After commit 401fb12c68c2 ("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>
Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
Link: https://lore.kernel.org/r/20211212065241.GA886691@odroid
mm/slab.h
mm/slob.c

index f14e723..95b9a74 100644 (file)
--- 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"
index 3c6cadb..60c5842 100644 (file)
--- 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);
                __folio_clear_slab(slab_folio(sp));
-               page_mapcount_reset(slab_page(sp));
                slob_free_pages(b, 0);
                return;
        }