• Peter Zijlstra's avatar
    page allocator: calculate the alloc_flags for allocation only once · 341ce06f
    Peter Zijlstra authored
    Factor out the mapping between GFP and alloc_flags only once.  Once
    factored out, it only needs to be calculated once but some care must be
    taken.
    
    [neilb@suse.de says]
    As the test:
    
    -       if (((p->flags & PF_MEMALLOC) || unlikely(test_thread_flag(TIF_MEMDIE)))
    -                       && !in_interrupt()) {
    -               if (!(gfp_mask & __GFP_NOMEMALLOC)) {
    
    has been replaced with a slightly weaker one:
    
    +       if (alloc_flags & ALLOC_NO_WATERMARKS) {
    
    Without care, this would allow recursion into the allocator via direct
    reclaim.  This patch ensures we do not recurse when PF_MEMALLOC is set but
    TF_MEMDIE callers are now allowed to directly reclaim where they would
    have been prevented in the past.
    Signed-off-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
    Acked-by: default avatarPekka Enberg <penberg@cs.helsinki.fi>
    Signed-off-by: default avatarMel Gorman <mel@csn.ul.ie>
    Cc: Neil Brown <neilb@suse.de>
    Cc: Christoph Lameter <cl@linux-foundation.org>
    Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
    Cc: Nick Piggin <nickpiggin@yahoo.com.au>
    Cc: Dave Hansen <dave@linux.vnet.ibm.com>
    Cc: Lee Schermerhorn <Lee.Schermerhorn@hp.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    341ce06f
page_alloc.c 132 KB