Commit 47f3a867 authored by Paul Jackson's avatar Paul Jackson Committed by Linus Torvalds
Browse files

[PATCH] mm: fix __alloc_pages cpuset ALLOC_* flags

Two changes to the setting of the ALLOC_CPUSET flag in

- A bug fix - the "ignoring mins" case should not be honoring ALLOC_CPUSET.
  This case of all cases, since it is handling a request that will free up
  more memory than is asked for (exiting tasks, e.g.) should be allowed to
  escape cpuset constraints when memory is tight.

- A logic change to make it simpler.  Honor cpusets even on GFP_ATOMIC
  (!wait) requests.  With this, cpuset confinement applies to all requests
  except ALLOC_NO_WATERMARKS, so that in a subsequent cleanup patch, I can
  remove the ALLOC_CPUSET flag entirely.  Since I don't know any real reason
  this logic has to be either way, I am choosing the path of the simplest
Signed-off-by: default avatarPaul Jackson <>
Signed-off-by: default avatarAndrew Morton <>
Signed-off-by: default avatarLinus Torvalds <>
parent a576219a
...@@ -903,8 +903,7 @@ restart: ...@@ -903,8 +903,7 @@ restart:
alloc_flags |= ALLOC_HARDER; alloc_flags |= ALLOC_HARDER;
if (gfp_mask & __GFP_HIGH) if (gfp_mask & __GFP_HIGH)
alloc_flags |= ALLOC_HIGH; alloc_flags |= ALLOC_HIGH;
if (wait) alloc_flags |= ALLOC_CPUSET;
alloc_flags |= ALLOC_CPUSET;
/* /*
* Go through the zonelist again. Let __GFP_HIGH and allocations * Go through the zonelist again. Let __GFP_HIGH and allocations
...@@ -926,7 +925,7 @@ restart: ...@@ -926,7 +925,7 @@ restart:
nofail_alloc: nofail_alloc:
/* go through the zonelist yet again, ignoring mins */ /* go through the zonelist yet again, ignoring mins */
page = get_page_from_freelist(gfp_mask, order, page = get_page_from_freelist(gfp_mask, order,
if (page) if (page)
goto got_pg; goto got_pg;
if (gfp_mask & __GFP_NOFAIL) { if (gfp_mask & __GFP_NOFAIL) {
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment