Re: [PATCH] profile: Suppress warning about large allocations whenprofile=1 is specified

From: Mel Gorman
Date: Mon Jun 22 2009 - 07:31:24 EST


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()?

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 linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/