diff options
author | David Rientjes <rientjes@google.com> | 2015-09-08 18:00:36 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-09-08 18:35:28 -0400 |
commit | 6e0fc46dc2152d3e2d25a5d5b640ae3586c247c6 (patch) | |
tree | 9e519cc7a04ee878c53a045514c83c079bdefa7a /mm/page_alloc.c | |
parent | 2c0b80d463c6ade539d51ad03bc7c41849fb37e8 (diff) |
mm, oom: organize oom context into struct
There are essential elements to an oom context that are passed around to
multiple functions.
Organize these elements into a new struct, struct oom_control, that
specifies the context for an oom condition.
This patch introduces no functional change.
Signed-off-by: David Rientjes <rientjes@google.com>
Acked-by: Michal Hocko <mhocko@suse.cz>
Cc: Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm/page_alloc.c')
-rw-r--r-- | mm/page_alloc.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index badc7d3bde43..96536144185c 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c | |||
@@ -2693,6 +2693,13 @@ static inline struct page * | |||
2693 | __alloc_pages_may_oom(gfp_t gfp_mask, unsigned int order, | 2693 | __alloc_pages_may_oom(gfp_t gfp_mask, unsigned int order, |
2694 | const struct alloc_context *ac, unsigned long *did_some_progress) | 2694 | const struct alloc_context *ac, unsigned long *did_some_progress) |
2695 | { | 2695 | { |
2696 | struct oom_control oc = { | ||
2697 | .zonelist = ac->zonelist, | ||
2698 | .nodemask = ac->nodemask, | ||
2699 | .gfp_mask = gfp_mask, | ||
2700 | .order = order, | ||
2701 | .force_kill = false, | ||
2702 | }; | ||
2696 | struct page *page; | 2703 | struct page *page; |
2697 | 2704 | ||
2698 | *did_some_progress = 0; | 2705 | *did_some_progress = 0; |
@@ -2744,8 +2751,7 @@ __alloc_pages_may_oom(gfp_t gfp_mask, unsigned int order, | |||
2744 | goto out; | 2751 | goto out; |
2745 | } | 2752 | } |
2746 | /* Exhausted what can be done so it's blamo time */ | 2753 | /* Exhausted what can be done so it's blamo time */ |
2747 | if (out_of_memory(ac->zonelist, gfp_mask, order, ac->nodemask, false) | 2754 | if (out_of_memory(&oc) || WARN_ON_ONCE(gfp_mask & __GFP_NOFAIL)) |
2748 | || WARN_ON_ONCE(gfp_mask & __GFP_NOFAIL)) | ||
2749 | *did_some_progress = 1; | 2755 | *did_some_progress = 1; |
2750 | out: | 2756 | out: |
2751 | mutex_unlock(&oom_lock); | 2757 | mutex_unlock(&oom_lock); |