|
@@ -1078,14 +1078,7 @@ static struct page *allocate_slab(struct kmem_cache *s, gfp_t flags, int node)
|
|
|
struct page *page;
|
|
|
int pages = 1 << s->order;
|
|
|
|
|
|
- if (s->order)
|
|
|
- flags |= __GFP_COMP;
|
|
|
-
|
|
|
- if (s->flags & SLAB_CACHE_DMA)
|
|
|
- flags |= SLUB_DMA;
|
|
|
-
|
|
|
- if (s->flags & SLAB_RECLAIM_ACCOUNT)
|
|
|
- flags |= __GFP_RECLAIMABLE;
|
|
|
+ flags |= s->allocflags;
|
|
|
|
|
|
if (node == -1)
|
|
|
page = alloc_pages(flags, s->order);
|
|
@@ -2333,6 +2326,16 @@ static int calculate_sizes(struct kmem_cache *s)
|
|
|
if (s->order < 0)
|
|
|
return 0;
|
|
|
|
|
|
+ s->allocflags = 0;
|
|
|
+ if (s->order)
|
|
|
+ s->allocflags |= __GFP_COMP;
|
|
|
+
|
|
|
+ if (s->flags & SLAB_CACHE_DMA)
|
|
|
+ s->allocflags |= SLUB_DMA;
|
|
|
+
|
|
|
+ if (s->flags & SLAB_RECLAIM_ACCOUNT)
|
|
|
+ s->allocflags |= __GFP_RECLAIMABLE;
|
|
|
+
|
|
|
/*
|
|
|
* Determine the number of objects per slab
|
|
|
*/
|