[18/18] SLUB: Use fallback for table of callers/freers of a slab cache

Christoph Lameter
2007-10-04T04:05:26Z

[-- Attachment #1: vcompound_slub_safe --]
[-- Type: text/plain, Size: 870 bytes --]

The caller table can get quite large if there are many call sites for a
particular slab. Add GFP_FALLBACK allows falling back to vmalloc in case
the caller table gets too big and memory is fragmented. Currently we
would fail the operation.

Signed-off-by: Christoph Lameter <clameter@sgi.com>

---
mm/slub.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

Index: linux-2.6/mm/slub.c
===================================================================
--- linux-2.6.orig/mm/slub.c 2007-10-03 20:00:23.000000000 -0700
+++ linux-2.6/mm/slub.c 2007-10-03 20:01:12.000000000 -0700
@@ -3003,7 +3003,8 @@ static int alloc_loc_track(struct loc_tr

order = get_order(sizeof(struct location) * max);

- l = (void *)__get_free_pages(flags, order);
+ l = (void *)__get_free_pages(flags | __GFP_COMP | __GFP_VFALLBACK,
+ order);
if (!l)
return 0;

--