Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756476AbZKKDOa (ORCPT ); Tue, 10 Nov 2009 22:14:30 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1755607AbZKKDO3 (ORCPT ); Tue, 10 Nov 2009 22:14:29 -0500 Received: from smtp-out.google.com ([216.239.33.17]:32825 "EHLO smtp-out.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755219AbZKKDO3 (ORCPT ); Tue, 10 Nov 2009 22:14:29 -0500 DomainKey-Signature: a=rsa-sha1; s=beta; d=google.com; c=nofws; q=dns; h=date:from:x-x-sender:to:cc:subject:in-reply-to:message-id: references:user-agent:mime-version:content-type:x-system-of-record; b=dsplo//Ca9zn0DFfl1UoaTnUy9g450JOnjzMYiZrqqaEW3YZ1Ebr7DQ1tLZKT1oM8 tMW3PXGYRt5KxQRqc/FvQ== Date: Tue, 10 Nov 2009 19:14:25 -0800 (PST) From: David Rientjes X-X-Sender: rientjes@chino.kir.corp.google.com To: KOSAKI Motohiro cc: KAMEZAWA Hiroyuki , Daisuke Nishimura , linux-mm@kvack.org, linux-kernel@vger.kernel.org, Andrew Morton , Christoph Lameter Subject: Re: [BUGFIX][PATCH] oom-kill: fix NUMA consraint check with nodemask v3 In-Reply-To: <20091111115217.FD56.A69D9226@jp.fujitsu.com> Message-ID: References: <20091111112404.0026e601.kamezawa.hiroyu@jp.fujitsu.com> <20091111115217.FD56.A69D9226@jp.fujitsu.com> User-Agent: Alpine 2.00 (DEB 1167 2008-08-23) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-System-Of-Record: true Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1947 Lines: 47 On Wed, 11 Nov 2009, KOSAKI Motohiro wrote: > > > { > > > -#ifdef CONFIG_NUMA > > > struct zone *zone; > > > struct zoneref *z; > > > enum zone_type high_zoneidx = gfp_zone(gfp_mask); > > > - nodemask_t nodes = node_states[N_HIGH_MEMORY]; > > > + int ret = CONSTRAINT_NONE; > > > > > > - for_each_zone_zonelist(zone, z, zonelist, high_zoneidx) > > > - if (cpuset_zone_allowed_softwall(zone, gfp_mask)) > > > - node_clear(zone_to_nid(zone), nodes); > > > - else > > > + /* > > > + * The nodemask here is a nodemask passed to alloc_pages(). Now, > > > + * cpuset doesn't use this nodemask for its hardwall/softwall/hierarchy > > > + * feature. mempolicy is an only user of nodemask here. > > > + */ > > > + if (nodemask) { > > > + nodemask_t mask; > > > + /* check mempolicy's nodemask contains all N_HIGH_MEMORY */ > > > + nodes_and(mask, *nodemask, node_states[N_HIGH_MEMORY]); > > > + if (!nodes_equal(mask, node_states[N_HIGH_MEMORY])) > > > + return CONSTRAINT_MEMORY_POLICY; > > > + } > > > > Although a nodemask_t was previously allocated on the stack, we should > > probably change this to use NODEMASK_ALLOC() for kernels with higher > > CONFIG_NODES_SHIFT since allocations can happen very deep into the stack. > > No. NODEMASK_ALLOC() is crap. we should remove it. I've booted 1K node systems and have found it to be helpful to ensure that the stack will not overflow especially in areas where we normally are deep already, such as in the page allocator. > btw, CPUMASK_ALLOC was already removed. I don't remember CPUMASK_ALLOC() actually being merged. I know the comment exists in nodemask.h, but I don't recall any CPUMASK_ALLOC() users in the tree. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/