Re: 2.6.25-rc8-mm2: boot hang after "ACPI: using IOAPIC for interrupt routing"

Pekka J Enberg
2008-04-11T21:25:31Z

On Sat, 12 Apr 2008, Alexey Dobriyan wrote:
> > Alexey, can you try passing the 'slub_nomerge' option to the kernel to
> > see if the hang goes away with that?
>
> nomerge doesn't help as well as turning on combinations of SLUB debug options.

Does the following patch fix it?

Pekka

>From 7c7e7e5e7ec07c0a47705b2d21c779c39ba02252 Mon Sep 17 00:00:00 2001
From: Pekka Enberg <penberg@cs.helsinki.fi>
Date: Fri, 11 Apr 2008 17:17:43 +0300
Subject: [PATCH] slub: add missing slab_unlock() to __kmem_cache_shrink()

If page is not kickable, remember to slab_unlock() before continuing the loop.

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
---
mm/slub.c | 4 +++-
1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/mm/slub.c b/mm/slub.c
index 4b694a7..f09f1fb 100644
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -2926,8 +2926,10 @@ static unsigned long __kmem_cache_shrink(struct kmem_cache *s, int node,
continue;

if (page->inuse) {
- if (!SlabKickable(page))
+ if (!SlabKickable(page)) {
+ slab_unlock(page);
continue;
+ }

if (page->inuse * 100 >=
s->defrag_ratio * page->objects) {
--
1.5.2.5