From 01b2f93b952e27a8eb235470b7bbc257c724571c Mon Sep 17 00:00:00 2001 From: Bob Liu Date: Sat, 10 Jul 2010 18:05:33 +0800 Subject: [PATCH] --- yaml --- r: 206071 b: refs/heads/master c: d602dabaeba79df90cc67c32d5fe4ee0d5e2b73a h: refs/heads/master i: 206069: 0d26105141a948048c5556f828f09ef75f68d09d 206067: a2936268e0a72403c74b5e4cee748bd857d1e72f 206063: d76c4b57a0fe363423c9018aaa82f74c7fb8533d v: v3 --- [refs] | 2 +- trunk/mm/slab.c | 2 +- trunk/mm/slob.c | 9 ++++++++- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index b6cb5246c766..cb38decf2d9c 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 78b435368fcd615e695a06012cd963a556284e00 +refs/heads/master: d602dabaeba79df90cc67c32d5fe4ee0d5e2b73a diff --git a/trunk/mm/slab.c b/trunk/mm/slab.c index 29aad44a55c2..e49f8f46f46d 100644 --- a/trunk/mm/slab.c +++ b/trunk/mm/slab.c @@ -861,7 +861,7 @@ static void __cpuinit start_cpu_timer(int cpu) */ if (keventd_up() && reap_work->work.func == NULL) { init_reap_node(cpu); - INIT_DELAYED_WORK_DEFERRABLE(reap_work, cache_reap); + INIT_DELAYED_WORK(reap_work, cache_reap); schedule_delayed_work_on(cpu, reap_work, __round_jiffies_relative(HZ, cpu)); } diff --git a/trunk/mm/slob.c b/trunk/mm/slob.c index 23631e2bb57a..6a208f81888a 100644 --- a/trunk/mm/slob.c +++ b/trunk/mm/slob.c @@ -394,6 +394,7 @@ static void slob_free(void *block, int size) slob_t *prev, *next, *b = (slob_t *)block; slobidx_t units; unsigned long flags; + struct list_head *slob_list; if (unlikely(ZERO_OR_NULL_PTR(block))) return; @@ -422,7 +423,13 @@ static void slob_free(void *block, int size) set_slob(b, units, (void *)((unsigned long)(b + SLOB_UNITS(PAGE_SIZE)) & PAGE_MASK)); - set_slob_page_free(sp, &free_slob_small); + if (size < SLOB_BREAK1) + slob_list = &free_slob_small; + else if (size < SLOB_BREAK2) + slob_list = &free_slob_medium; + else + slob_list = &free_slob_large; + set_slob_page_free(sp, slob_list); goto out; }