From: Christoph Lameter <cl@linux.com>
To: Mel Gorman <mgorman@suse.de>
Cc: Xiaotian Feng <xtfeng@gmail.com>,
Andrew Morton <akpm@linux-foundation.org>,
linux-mm@kvack.org, linux-kernel <linux-kernel@vger.kernel.org>,
Pekka Enberg <penberg@kernel.org>
Subject: Re: kernel BUG at mm/vmscan.c:1114
Date: Fri, 5 Aug 2011 10:51:42 -0500 (CDT) [thread overview]
Message-ID: <alpine.DEB.2.00.1108051041580.27518@router.home> (raw)
In-Reply-To: <20110805125542.GW19099@suse.de>
[-- Attachment #1: Type: TEXT/PLAIN, Size: 2035 bytes --]
On Fri, 5 Aug 2011, Mel Gorman wrote:
> > > This is interesting, I just change as following:
> > >
> > > diff --git a/mm/slub.c b/mm/slub.c
> > > index eb5a8f9..616b78e 100644
> > > --- a/mm/slub.c
> > > +++ b/mm/slub.c
> > > @@ -2104,8 +2104,9 @@ static void *__slab_alloc(struct kmem_cache *s,
> > > gfp_t gfpflags, int node,
> > > "__slab_alloc"));
> > >
> > > if (unlikely(!object)) {
> > > - c->page = NULL;
> > > + //c->page = NULL;
> > > stat(s, DEACTIVATE_BYPASS);
> > > + deactivate_slab(s, c);
> > > goto new_slab;
> > > }
> > >
> > > Then my system doesn't print any list corruption warnings and my build
> > > success then. So this means revert of 03e404af2 could cure this.
> > > I'll do more test next week to see if the list corruption still exist, thanks.
> > >
> >
> > Sorry, please ignore it... My system corrupted before I went to leave ....
> >
>
> Please continue the bisection in that case and establish for sure if the
> problem is in that series or not. Thanks.
The above fix should not affect anything since a per cpu slab
is not on any partial lists. And since there are no objects remaining in
the slab there is then also no point of putting it back. It wont be on
any lists before and after the action so no list processing is needed.
Hmmm.... There maybe a race with slab_free from a remote processor. I
dont see any problem here since we convert the page from frozen to
nonfrozen in __slab_alloc and __slab_free will ignore the partial list
management if it sees it to be frozen.
Maybe we need some memory barriers here. Right now we are relying on the
cmpxchg_double for sync of the state in the page struct but we also need
the c->page variable to be consistent with that state. But we disable
interrupts in __slab_alloc so there are no races possible with slab_free
only with remote __slab_free invocations which will not touch c->page.
next prev parent reply other threads:[~2011-08-05 15:51 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CAJn8CcE20-co4xNOD8c+0jMeABrc1mjmGzju3xT34QwHHHFsUA@mail.gmail.com>
[not found] ` <CAJn8CcG-pNbg88+HLB=tRr26_R+A0RxZEWsJQg4iGe4eY2noXA@mail.gmail.com>
2011-08-02 7:22 ` Andrew Morton
2011-08-03 6:44 ` Xiaotian Feng
2011-08-03 8:54 ` Mel Gorman
2011-08-03 9:02 ` Li Zefan
2011-08-04 3:54 ` Xiaotian Feng
2011-08-05 8:42 ` Xiaotian Feng
2011-08-05 9:19 ` Mel Gorman
2011-08-05 12:09 ` Xiaotian Feng
2011-08-05 12:30 ` Xiaotian Feng
2011-08-05 12:55 ` Mel Gorman
2011-08-05 15:51 ` Christoph Lameter [this message]
2011-08-02 14:24 ` Mel Gorman
2011-08-02 17:15 ` Andrew Morton
2011-08-03 6:45 ` Xiaotian Feng
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=alpine.DEB.2.00.1108051041580.27518@router.home \
--to=cl@linux.com \
--cc=akpm@linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mgorman@suse.de \
--cc=penberg@kernel.org \
--cc=xtfeng@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox