Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932708Ab0BPHxh (ORCPT ); Tue, 16 Feb 2010 02:53:37 -0500 Received: from cantor2.suse.de ([195.135.220.15]:47738 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932686Ab0BPHxf (ORCPT ); Tue, 16 Feb 2010 02:53:35 -0500 Date: Tue, 16 Feb 2010 18:53:30 +1100 From: Nick Piggin To: David Rientjes Cc: KAMEZAWA Hiroyuki , Andrew Morton , Rik van Riel , Andrea Arcangeli , Balbir Singh , Lubos Lunak , KOSAKI Motohiro , linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: Re: [patch -mm 8/9 v2] oom: avoid oom killer for lowmem allocations Message-ID: <20100216075330.GJ5723@laptop> References: <20100216085706.c7af93e1.kamezawa.hiroyu@jp.fujitsu.com> <20100216064402.GC5723@laptop> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.20 (2009-06-14) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2189 Lines: 46 On Mon, Feb 15, 2010 at 11:41:49PM -0800, David Rientjes wrote: > On Tue, 16 Feb 2010, Nick Piggin wrote: > > > > As I already explained when you first brought this up, the possibility of > > > not invoking the oom killer is not unique to GFP_DMA, it is also possible > > > for GFP_NOFS. Since __GFP_NOFAIL is deprecated and there are no current > > > users of GFP_DMA | __GFP_NOFAIL, that warning is completely unnecessary. > > > We're not adding any additional __GFP_NOFAIL allocations. > > > > Completely agree with this request. Actually, I think even better you > > should just add && !(gfp_mask & __GFP_NOFAIL). Deprecated doesn't mean > > it is OK to break the API (callers *will* oops or corrupt memory if > > __GFP_NOFAIL returns NULL). > > > > ... unless it's used with GFP_ATOMIC, which we've always returned NULL > for when even ALLOC_HARDER can't find pages, right? Ye, it's never worked with GFP_ATOMIC. > I'm wondering where this strong argument in favor of continuing to support > __GFP_NOFAIL was when I insisted we call the oom killer for them even for > allocations over PAGE_ALLOC_COSTLY_ORDER when __alloc_pages_nodemask() was > refactored back in 2.6.31. The argument was that nobody is allocating > that high of orders of __GFP_NOFAIL pages so we don't need to free memory > for them and that's where the deprecation of the modifier happened in the > first place. Ultimately, we did invoke the oom killer for those > allocations because there's no chance of forward progress otherwise and, > unlike __GFP_DMA, GFP_KERNEL | __GFP_NOFAIL actually is popular. I don't know. IMO we should never just randomly weaken or break such flag as the page allocator API. > > I'll add this check to __alloc_pages_may_oom() for the !(gfp_mask & > __GFP_NOFAIL) path since we're all content with endlessly looping. Thanks. Yes endlessly looping is far preferable to randomly oopsing or corrupting memory. -- 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/