LWN.net Logo

Re: [RFC PATCH v1 1/3] mm: teach mm by current context info to not do I/O during memory allocation

From:  Andrew Morton <akpm-AT-linux-foundation.org>
To:  Ming Lei <ming.lei-AT-canonical.com>
Subject:  Re: [RFC PATCH v1 1/3] mm: teach mm by current context info to not do I/O during memory allocation
Date:  Wed, 17 Oct 2012 16:54:01 -0700
Message-ID:  <20121017165401.cc343861.akpm@linux-foundation.org>
Cc:  linux-kernel-AT-vger.kernel.org, Alan Stern <stern-AT-rowland.harvard.edu>, Oliver Neukum <oneukum-AT-suse.de>, Minchan Kim <minchan-AT-kernel.org>, Greg Kroah-Hartman <gregkh-AT-linuxfoundation.org>, linux-usb-AT-vger.kernel.org, linux-pm-AT-vger.kernel.org, Jiri Kosina <jiri.kosina-AT-suse.com>, Mel Gorman <mel-AT-csn.ul.ie>, KAMEZAWA Hiroyuki <kamezawa.hiroyu-AT-jp.fujitsu.com>, Michal Hocko <mhocko-AT-suse.cz>, Ingo Molnar <mingo-AT-redhat.com>, Peter Zijlstra <peterz-AT-infradead.org>, "Rafael J. Wysocki" <rjw-AT-sisk.pl>, linux-mm <linux-mm-AT-kvack.org>
Archive-link:  Article, Thread

On Wed, 17 Oct 2012 09:54:09 +0800
Ming Lei <ming.lei@canonical.com> wrote:

> On Wed, Oct 17, 2012 at 4:19 AM, Andrew Morton
> <akpm@linux-foundation.org> wrote:
> >
> > The patch seems reasonable to me.  I'd like to see some examples of
> > these resume-time callsite which are performing the GFP_KERNEL
> > allocations, please.  You have found some kernel bugs, so those should
> > be fully described.
> 
> There are two examples on 2/3 and 3/3 of the patchset, see below link:
> 
>         http://marc.info/?l=linux-kernel&m=135040325717213&...
>         http://marc.info/?l=linux-kernel&m=135040327317222&...
> 
> Sorry for not Cc them to linux-mm because I am afraid of making noise
> in mm list.

Don't worry about mailing list noise ;)

> >
> > This is just awful.  Why oh why do we write code in macros when we have
> > a nice C compiler?
> 
> The two helpers are following style of local_irq_save() and
> local_irq_restore(), so that people can use them easily, that is
> why I define them as macro instead of inline.

local_irq_save() and local_irq_restore() were mistakes :( It's silly to
write what appears to be a C function and then have it operate like
Pascal (warning: I last wrote some Pascal in 66 B.C.).

> >
> > These can all be done as nice, clean, type-safe, documented C
> > functions.  And if they can be done that way, they *should* be done
> > that way!
> >
> > And I suggest that a better name for memalloc_noio_save() is
> > memalloc_noio_set().  So this:
> 
> IMO, renaming as memalloc_noio_set() might not be better than _save
> because the _set name doesn't indicate that the flag should be stored first.

You could add __must_check to the function definition to ensure that
all callers save its return value.

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>



(Log in to post comments)

Copyright © 2012, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds