mm, oom: pass an oom order of -1 when triggered by sysrq
The force_kill member of struct oom_control isn't needed if an order of -1 is used instead. This is the same as order == -1 in struct compact_control which requires full memory compaction. This patch introduces no functional change. Signed-off-by: David Rientjes <rientjes@google.com> Cc: Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com> Cc: Michal Hocko <mhocko@suse.cz> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
6e0fc46dc2
commit
54e9e29132
@ -358,8 +358,7 @@ static void moom_callback(struct work_struct *ignored)
|
|||||||
.zonelist = node_zonelist(first_memory_node, gfp_mask),
|
.zonelist = node_zonelist(first_memory_node, gfp_mask),
|
||||||
.nodemask = NULL,
|
.nodemask = NULL,
|
||||||
.gfp_mask = gfp_mask,
|
.gfp_mask = gfp_mask,
|
||||||
.order = 0,
|
.order = -1,
|
||||||
.force_kill = true,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
mutex_lock(&oom_lock);
|
mutex_lock(&oom_lock);
|
||||||
|
@ -17,7 +17,6 @@ struct oom_control {
|
|||||||
nodemask_t *nodemask;
|
nodemask_t *nodemask;
|
||||||
gfp_t gfp_mask;
|
gfp_t gfp_mask;
|
||||||
int order;
|
int order;
|
||||||
bool force_kill;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1550,7 +1550,6 @@ static void mem_cgroup_out_of_memory(struct mem_cgroup *memcg, gfp_t gfp_mask,
|
|||||||
.nodemask = NULL,
|
.nodemask = NULL,
|
||||||
.gfp_mask = gfp_mask,
|
.gfp_mask = gfp_mask,
|
||||||
.order = order,
|
.order = order,
|
||||||
.force_kill = false,
|
|
||||||
};
|
};
|
||||||
struct mem_cgroup *iter;
|
struct mem_cgroup *iter;
|
||||||
unsigned long chosen_points = 0;
|
unsigned long chosen_points = 0;
|
||||||
|
@ -265,7 +265,7 @@ enum oom_scan_t oom_scan_process_thread(struct oom_control *oc,
|
|||||||
* Don't allow any other task to have access to the reserves.
|
* Don't allow any other task to have access to the reserves.
|
||||||
*/
|
*/
|
||||||
if (test_tsk_thread_flag(task, TIF_MEMDIE)) {
|
if (test_tsk_thread_flag(task, TIF_MEMDIE)) {
|
||||||
if (!oc->force_kill)
|
if (oc->order != -1)
|
||||||
return OOM_SCAN_ABORT;
|
return OOM_SCAN_ABORT;
|
||||||
}
|
}
|
||||||
if (!task->mm)
|
if (!task->mm)
|
||||||
@ -278,7 +278,7 @@ enum oom_scan_t oom_scan_process_thread(struct oom_control *oc,
|
|||||||
if (oom_task_origin(task))
|
if (oom_task_origin(task))
|
||||||
return OOM_SCAN_SELECT;
|
return OOM_SCAN_SELECT;
|
||||||
|
|
||||||
if (task_will_free_mem(task) && !oc->force_kill)
|
if (task_will_free_mem(task) && oc->order != -1)
|
||||||
return OOM_SCAN_ABORT;
|
return OOM_SCAN_ABORT;
|
||||||
|
|
||||||
return OOM_SCAN_OK;
|
return OOM_SCAN_OK;
|
||||||
@ -718,7 +718,6 @@ void pagefault_out_of_memory(void)
|
|||||||
.nodemask = NULL,
|
.nodemask = NULL,
|
||||||
.gfp_mask = 0,
|
.gfp_mask = 0,
|
||||||
.order = 0,
|
.order = 0,
|
||||||
.force_kill = false,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
if (mem_cgroup_oom_synchronize(true))
|
if (mem_cgroup_oom_synchronize(true))
|
||||||
|
@ -2698,7 +2698,6 @@ __alloc_pages_may_oom(gfp_t gfp_mask, unsigned int order,
|
|||||||
.nodemask = ac->nodemask,
|
.nodemask = ac->nodemask,
|
||||||
.gfp_mask = gfp_mask,
|
.gfp_mask = gfp_mask,
|
||||||
.order = order,
|
.order = order,
|
||||||
.force_kill = false,
|
|
||||||
};
|
};
|
||||||
struct page *page;
|
struct page *page;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user