Re: crash in kmem_cache_init

Christoph Lameter
2008-01-22T21:34:26Z

On Tue, 22 Jan 2008, Mel Gorman wrote:

> > After you reverted the slab memoryless node patch there should be per node
> > structures created for node 0 unless the node is marked offline. Is it? If
> > so then you are booting a cpu that is associated with an offline node.
> >
>
> I'll roll a patch that prints out the online states before startup and
> see what it looks like.

Ok. Great.

>
> > > Can you see a better solution than this?
> >
> > Well this means that bootstrap will work by introducing foreign objects
> > into the per cpu queue (should only hold per cpu objects). They will
> > later be consumed and then the queues will contain the right objects so
> > the effect of the patch is minimal.
> >
>
> By minimal, do you mean that you expect it to break in some other
> respect later or minimal as in "this is bad but should not have no
> adverse impact".

Should not have any adverse impact after the objects from the cpu queue
have been consumed. If the cache_reaper tries to shift objects back
from the per cpu queue into slabs then BUG_ONs may be triggered. Make sure
you run the tests with full debugging please.

> Whatever this was a problem fixed in the past or not, it's broken again now
> :( . It's possible that there is a __GFP_THISNODE that can be dropped early
> at boot-time that would also fix this problem in a way that doesn't
> affect runtime (like altering cache_grow in my patch does).

The dropping of GFP_THISNODE has the same effect as your patch.
Objects from another node get into the per cpu queue. And on free we
assume that per cpu queue objects are from the local node. If debug is on
then we check that with BUG_ONs.