Em Mon, Jun 22, 2009 at 12:31:05PM +0100, Mel Gorman escreveu: > On Sat, Jun 20, 2009 at 11:48:35PM +0200, Heinz Diehl wrote: > > On 20.06.2009, Mel Gorman wrote: > > > > > I can't figure out from this trace where the problem is coming from. Can > > > you post your .config and the full dmesg please? > > > > Yes, of course. It's attached. > > > > I have no idea why the stack trace is so badly managed but the problem appears > to be in DCCP so can you try the patch below please? It applies on top of the > profile=1 patch fix. If it works for you, I'll split out the patch properly > into three separate patches and repost. > > Some questions though > > 1. Could DCCP use alloc_large_system_hash()? Possibly. Ideally this should use whatever TCP is using now, as this came more or less intact from there. IIRC it was not shared because TCP used/uses alloc routines that were available only at boot time, DCCP can't use it because it can be loaded as a module. I'd say go with this patch and later, after FISL (this week) I'll look at this again. So, for the NOWARN bits: Acked-by: Arnaldo Carvalho de Melo <acme@xxxxxxxxxx> Thanks, - Arnaldo > 2. Any idea why the stack trace for the warning was so useless? > > ==== CUT HERE ==== > dccp: Suppress warning about large allocations from DCCP > > The DCCP protocol tries to allocate some large hash tables during > initialisation using the largest size possible. The allocator warns if > the allocations are too large but the caller is able to handle > allocation failure. This patch disables the warnings in the case DCCP > requests too large an allocation. > > Signed-off-by: Mel Gorman <mel@xxxxxxxxx> > --- > net/dccp/proto.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/net/dccp/proto.c b/net/dccp/proto.c > index 314a1b5..fd21676 100644 > --- a/net/dccp/proto.c > +++ b/net/dccp/proto.c > @@ -1066,7 +1066,7 @@ static int __init dccp_init(void) > (dccp_hashinfo.ehash_size - 1)) > dccp_hashinfo.ehash_size--; > dccp_hashinfo.ehash = (struct inet_ehash_bucket *) > - __get_free_pages(GFP_ATOMIC, ehash_order); > + __get_free_pages(GFP_ATOMIC|__GFP_NOWARN, ehash_order); > } while (!dccp_hashinfo.ehash && --ehash_order > 0); > > if (!dccp_hashinfo.ehash) { > @@ -1091,7 +1091,7 @@ static int __init dccp_init(void) > bhash_order > 0) > continue; > dccp_hashinfo.bhash = (struct inet_bind_hashbucket *) > - __get_free_pages(GFP_ATOMIC, bhash_order); > + __get_free_pages(GFP_ATOMIC|__GFP_NOWARN, bhash_order); > } while (!dccp_hashinfo.bhash && --bhash_order >= 0); > > if (!dccp_hashinfo.bhash) { -- To unsubscribe from this list: send the line "unsubscribe dccp" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html