• David Rientjes's avatar
    cpusets: update mems allowed in page allocator · e33c3b5e
    David Rientjes authored
    If all allowable memory is unreclaimable, it is possible to loop forever
    in the page allocator for ~__GFP_NORETRY allocations.
    
    During this time, it is also possible for a task's cpuset to expand its
    set of allowable nodes so that it now includes free memory.  The cached
    copy of this set, current->mems_allowed, is stale, however, since there
    has not been a subsequent call to cpuset_update_task_memory_state().
    
    The cached copy of the set of allowable nodes is now updated in the page
    allocator's slow path so the additional memory is available to
    get_page_from_freelist().
    
    [akpm@linux-foundation.org: add comment]
    Signed-off-by: default avatarDavid Rientjes <rientjes@google.com>
    Cc: Paul Menage <menage@google.com>
    Cc: Christoph Lameter <cl@linux-foundation.org>
    Cc: Mel Gorman <mel@csn.ul.ie>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    e33c3b5e
page_alloc.c 130 KB