Skip to content

Commit 09fa19e

Browse files
Matthew Wilcox (Oracle)tehcaster
authored andcommitted
slab: Remove folio references in slab alloc/free
Use pages directly to further the split between slab and folio. Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> Reviewed-by: Harry Yoo <harry.yoo@oracle.com> Link: https://patch.msgid.link/20251113000932.1589073-5-willy@infradead.org Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
1 parent ea4702b commit 09fa19e

1 file changed

Lines changed: 13 additions & 13 deletions

File tree

mm/slub.c

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3045,24 +3045,24 @@ static inline struct slab *alloc_slab_page(gfp_t flags, int node,
30453045
struct kmem_cache_order_objects oo,
30463046
bool allow_spin)
30473047
{
3048-
struct folio *folio;
3048+
struct page *page;
30493049
struct slab *slab;
30503050
unsigned int order = oo_order(oo);
30513051

30523052
if (unlikely(!allow_spin))
3053-
folio = (struct folio *)alloc_frozen_pages_nolock(0/* __GFP_COMP is implied */,
3053+
page = alloc_frozen_pages_nolock(0/* __GFP_COMP is implied */,
30543054
node, order);
30553055
else if (node == NUMA_NO_NODE)
3056-
folio = (struct folio *)alloc_frozen_pages(flags, order);
3056+
page = alloc_frozen_pages(flags, order);
30573057
else
3058-
folio = (struct folio *)__alloc_frozen_pages(flags, order, node, NULL);
3058+
page = __alloc_frozen_pages(flags, order, node, NULL);
30593059

3060-
if (!folio)
3060+
if (!page)
30613061
return NULL;
30623062

3063-
slab = folio_slab(folio);
3064-
__folio_set_slab(folio);
3065-
if (folio_is_pfmemalloc(folio))
3063+
__SetPageSlab(page);
3064+
slab = page_slab(page);
3065+
if (page_is_pfmemalloc(page))
30663066
slab_set_pfmemalloc(slab);
30673067

30683068
return slab;
@@ -3286,16 +3286,16 @@ static struct slab *new_slab(struct kmem_cache *s, gfp_t flags, int node)
32863286

32873287
static void __free_slab(struct kmem_cache *s, struct slab *slab)
32883288
{
3289-
struct folio *folio = slab_folio(slab);
3290-
int order = folio_order(folio);
3289+
struct page *page = slab_page(slab);
3290+
int order = compound_order(page);
32913291
int pages = 1 << order;
32923292

32933293
__slab_clear_pfmemalloc(slab);
3294-
folio->mapping = NULL;
3295-
__folio_clear_slab(folio);
3294+
page->mapping = NULL;
3295+
__ClearPageSlab(page);
32963296
mm_account_reclaimed_pages(pages);
32973297
unaccount_slab(slab, order, s);
3298-
free_frozen_pages(&folio->page, order);
3298+
free_frozen_pages(page, order);
32993299
}
33003300

33013301
static void rcu_free_slab(struct rcu_head *h)

0 commit comments

Comments
 (0)