[Devel] [PATCH RHEL7 COMMIT] bc/oom: zap oom kill related stuff
Konstantin Khorenko
khorenko at virtuozzo.com
Fri May 22 07:41:32 PDT 2015
The commit is pushed to "branch-rh7-3.10.0-123.1.2-ovz" and will appear at https://src.openvz.org/scm/ovz/vzkernel.git
after rh7-3.10.0-123.1.2.vz7.5.5
------>
commit 033e46f2a9faff27e286af70c8ecfffdb25d4dc0
Author: Vladimir Davydov <vdavydov at parallels.com>
Date: Fri May 22 18:41:32 2015 +0400
bc/oom: zap oom kill related stuff
Per container OOM killer logic has to be implemented in the scope of the
memory cgroup. Remove ub-related code, it does not work properly anyway.
khorenko@:
task for per-CT OOM implementation:
https://jira.sw.ru/browse/PSBM-33732
Signed-off-by: Vladimir Davydov <vdavydov at parallels.com>
---
arch/x86/mm/fault.c | 2 -
drivers/tty/sysrq.c | 3 -
fs/proc/base.c | 2 -
include/bc/beancounter.h | 8 --
include/bc/oom_kill.h | 19 ----
include/bc/vmpages.h | 2 -
include/linux/mm_types.h | 2 -
include/linux/oom.h | 13 ---
kernel/bc/beancounter.c | 4 -
kernel/bc/oom_kill.c | 289 -----------------------------------------------
kernel/bc/proc.c | 2 -
kernel/bc/statd.c | 3 -
kernel/bc/vm_pages.c | 46 --------
kernel/exit.c | 1 -
kernel/fork.c | 5 -
mm/page_alloc.c | 4 -
16 files changed, 405 deletions(-)
diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c
index ef84bec..203dd90 100644
--- a/arch/x86/mm/fault.c
+++ b/arch/x86/mm/fault.c
@@ -20,8 +20,6 @@
#include <asm/kmemcheck.h> /* kmemcheck_*(), ... */
#include <asm/fixmap.h> /* VSYSCALL_START */
-#include <bc/oom_kill.h>
-
#define CREATE_TRACE_POINTS
#include <asm/trace/exceptions.h>
diff --git a/drivers/tty/sysrq.c b/drivers/tty/sysrq.c
index 5a2921f..069928f 100644
--- a/drivers/tty/sysrq.c
+++ b/drivers/tty/sysrq.c
@@ -46,7 +46,6 @@
#include <linux/jiffies.h>
#include <linux/ve.h>
-#include <bc/oom_kill.h>
#include <bc/vmpages.h>
#include <asm/ptrace.h>
@@ -363,8 +362,6 @@ static struct sysrq_key_op sysrq_term_op = {
static void moom_callback(struct work_struct *ignored)
{
- //ub_oom_start(&global_oom_ctrl);
- //global_oom_ctrl.kill_counter = 0;
out_of_memory(node_zonelist(first_online_node, GFP_KERNEL), GFP_KERNEL,
0, NULL, true);
}
diff --git a/fs/proc/base.c b/fs/proc/base.c
index 79ee3c8..caa530c 100644
--- a/fs/proc/base.c
+++ b/fs/proc/base.c
@@ -95,8 +95,6 @@
#include "internal.h"
#include "fd.h"
-#include <bc/oom_kill.h>
-
/* NOTE:
* Implementing inode permission operations in /proc is almost
* certainly an error. Permission checks need to happen during
diff --git a/include/bc/beancounter.h b/include/bc/beancounter.h
index 4337e13..202a5f5 100644
--- a/include/bc/beancounter.h
+++ b/include/bc/beancounter.h
@@ -19,7 +19,6 @@
#include <linux/threads.h>
#include <linux/percpu.h>
#include <linux/percpu_counter.h>
-#include <linux/oom.h>
#include <linux/ratelimit.h>
#include <linux/cgroup.h>
#include <bc/debug.h>
@@ -155,17 +154,14 @@ struct user_beancounter {
struct ubparm *ub_store;
struct ub_percpu_struct *ub_percpu;
- struct oom_control oom_ctrl;
};
enum ub_flags {
UB_DIRTY_EXCEEDED,
- UB_OOM_NOPROC,
UB_OOM_MANUAL_SCORE_ADJ,
};
extern int ub_count;
-extern struct oom_control global_oom_ctrl;
enum ub_severity { UB_HARD, UB_SOFT, UB_FORCE };
@@ -321,10 +317,6 @@ extern void __uncharge_beancounter_locked(struct user_beancounter *ub,
extern void uncharge_warn(struct user_beancounter *ub, const char *resource,
unsigned long val, unsigned long held);
-extern long ub_oomguarpages_left(struct user_beancounter *ub);
-extern void ub_update_resources_locked(struct user_beancounter *ub);
-extern void ub_update_resources(struct user_beancounter *ub);
-
extern int ub_update_mem_cgroup_limits(struct user_beancounter *ub);
extern void ub_get_mem_cgroup_parms(struct user_beancounter *ub,
diff --git a/include/bc/oom_kill.h b/include/bc/oom_kill.h
deleted file mode 100644
index bbfc3a3..0000000
--- a/include/bc/oom_kill.h
+++ /dev/null
@@ -1,19 +0,0 @@
-#include <bc/decl.h>
-#include <bc/task.h>
-#include <bc/beancounter.h>
-
-UB_DECLARE_FUNC(int, ub_oom_lock(struct oom_control *oom_ctrl))
-UB_DECLARE_FUNC(struct user_beancounter *, ub_oom_select_worst(void))
-UB_DECLARE_VOID_FUNC(ub_oom_unlock(struct oom_control *oom_ctrl))
-static inline void ub_oom_mm_dead(struct mm_struct *mm) { }
-UB_DECLARE_FUNC(int, ub_oom_task_skip(struct user_beancounter *ub,
- struct task_struct *tsk))
-static inline unsigned long ub_oom_total_pages(struct user_beancounter *ub) { return 0; }
-static inline int out_of_memory_in_ub(struct user_beancounter *ub,
- gfp_t gfp_mask) { return 0; }
-UB_DECLARE_VOID_FUNC(ub_oom_start(struct oom_control *oom_ctrl))
-UB_DECLARE_VOID_FUNC(ub_oom_mark_mm(struct mm_struct *mm,
- struct oom_control *oom_ctrl))
-
-#ifdef CONFIG_BEANCOUNTERS
-#endif
diff --git a/include/bc/vmpages.h b/include/bc/vmpages.h
index f7a36ba..65d9de4 100644
--- a/include/bc/vmpages.h
+++ b/include/bc/vmpages.h
@@ -47,8 +47,6 @@ UB_DECLARE_FUNC(int, ub_lockedshm_charge(struct shmem_inode_info *shi,
UB_DECLARE_VOID_FUNC(ub_lockedshm_uncharge(struct shmem_inode_info *shi,
unsigned long size))
-extern void __ub_update_oomguarpages(struct user_beancounter *ub);
-
static inline int ub_swap_full(struct user_beancounter *ub)
{
return (ub->ub_parms[UB_SWAPPAGES].held * 2 >
diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h
index 9973661..5ddfa80 100644
--- a/include/linux/mm_types.h
+++ b/include/linux/mm_types.h
@@ -414,8 +414,6 @@ struct mm_struct {
unsigned long flags; /* Must use atomic bitops to access the bits */
unsigned int vps_dumpable:2;
- unsigned int global_oom:1;
- unsigned int ub_oom:1;
#ifdef CONFIG_BEANCOUNTERS
struct user_beancounter *mm_ub;
diff --git a/include/linux/oom.h b/include/linux/oom.h
index 0dbbe47..c13af3f 100644
--- a/include/linux/oom.h
+++ b/include/linux/oom.h
@@ -88,19 +88,6 @@ static inline void oom_killer_enable(void)
extern struct task_struct *find_lock_task_mm(struct task_struct *p);
-struct oom_control {
- int generation;
- int kill_counter;
- unsigned long last_kill;
- int oom_rage;
- spinlock_t lock;
- wait_queue_head_t wq;
-};
-
-extern struct oom_control global_oom_ctrl;
-
-static inline void init_oom_control(struct oom_control *oom_ctrl) { }
-
void oom_report_invocation(char *type, struct user_beancounter *ub,
gfp_t gfp_mask, int order);
diff --git a/kernel/bc/beancounter.c b/kernel/bc/beancounter.c
index 5cc0688..88faa1c 100644
--- a/kernel/bc/beancounter.c
+++ b/kernel/bc/beancounter.c
@@ -450,7 +450,6 @@ static inline int bc_verify_held(struct user_beancounter *ub)
ub_stat_mod(ub, dirty_pages, __ub_percpu_sum(ub, dirty_pages));
ub_stat_mod(ub, writeback_pages, __ub_percpu_sum(ub, writeback_pages));
uncharge_beancounter_precharge(ub);
- ub_update_resources_locked(ub);
clean = 1;
for (i = 0; i < UB_RESOURCES; i++)
@@ -955,7 +954,6 @@ static void init_beancounter_struct(struct user_beancounter *ub)
spin_lock_init(&ub->ub_lock);
INIT_LIST_HEAD(&ub->ub_tcp_sk_list);
INIT_LIST_HEAD(&ub->ub_other_sk_list);
- init_oom_control(&ub->oom_ctrl);
spin_lock_init(&ub->rl_lock);
ub->rl_wall.tv64 = LLONG_MIN;
}
@@ -1133,8 +1131,6 @@ void __init ub_init_late(void)
init_beancounter_syslimits(&default_beancounter);
#endif
init_beancounter_struct(&default_beancounter);
-
- init_oom_control(&global_oom_ctrl);
}
int __init ub_init_cgroup(void)
diff --git a/kernel/bc/oom_kill.c b/kernel/bc/oom_kill.c
deleted file mode 100644
index bd213df..0000000
--- a/kernel/bc/oom_kill.c
+++ /dev/null
@@ -1,289 +0,0 @@
-#include <linux/wait.h>
-#include <linux/sched.h>
-#include <linux/mm.h>
-#include <linux/swap.h>
-#include <linux/cpuset.h>
-#include <linux/module.h>
-#include <linux/oom.h>
-
-#include <bc/beancounter.h>
-#include <bc/oom_kill.h>
-#include <bc/vmpages.h>
-
-#define UB_OOM_TIMEOUT (5 * HZ)
-
-void ub_oom_start(struct oom_control *oom_ctrl)
-{
- current->task_bc.oom_generation = oom_ctrl->generation;
-}
-
-static inline const char *oom_ctrl_id(struct oom_control *ctrl)
-{
- return (ctrl == &global_oom_ctrl ? "-1" :
- container_of(ctrl, struct user_beancounter,
- oom_ctrl)->ub_name);
-}
-
-static void __ub_release_oom_control(struct oom_control *oom_ctrl, char *why)
-{
- printk("<<< %s oom generation %d ends (%s)\n",
- oom_ctrl_id(oom_ctrl), oom_ctrl->generation, why);
- oom_ctrl->kill_counter = 0;
- oom_ctrl->generation++;
-
- /* if there is time to sleep in ub_oom_lock -> sleep will continue */
- wake_up_all(&oom_ctrl->wq);
-}
-
-static void ub_release_oom_control(struct oom_control *oom_ctrl)
-{
- spin_lock(&oom_ctrl->lock);
- __ub_release_oom_control(oom_ctrl, "task died");
- spin_unlock(&oom_ctrl->lock);
-}
-
-/*
- * Must be called under task_lock() held
- */
-void ub_oom_mark_mm(struct mm_struct *mm, struct oom_control *oom_ctrl)
-{
- mm_ub(mm)->ub_parms[UB_OOMGUARPAGES].failcnt++;
-
- if (oom_ctrl == &global_oom_ctrl)
- mm->global_oom = 1;
- else if (oom_ctrl == &mm->mm_ub->oom_ctrl)
- mm->ub_oom = 1;
- else {
- /*
- * Task can be killed when using either global oom ctl
- * or by mm->mm_ub one. In other case we must release ctl now.
- * When this task will die it'll have to decide with ctl
- * to use lokking at this flag and we have to sure it
- * will use the proper one.
- */
- __ub_release_oom_control(oom_ctrl, "mark bug");
- WARN_ON(1);
- }
-}
-
-static inline int ub_oom_completed(struct oom_control *oom_ctrl)
-{
- if (test_thread_flag(TIF_MEMDIE))
- /* we were oom killed - just die */
- return 1;
- if (current->task_bc.oom_generation != oom_ctrl->generation)
- /* some task was succesfully killed */
- return 1;
- return 0;
-}
-
-static void ub_clear_oom(void)
-{
- struct user_beancounter *ub;
-
- rcu_read_lock();
- for_each_beancounter(ub)
- clear_bit(UB_OOM_NOPROC, &ub->ub_flags);
- rcu_read_unlock();
-}
-
-int ub_oom_lock(struct oom_control *oom_ctrl)
-{
- int timeout;
- DEFINE_WAIT(oom_w);
-
- if (oom_ctrl != &global_oom_ctrl && global_oom_ctrl.kill_counter) {
- /*
- * Check if global OOM killeris on the way. If so -
- * let the senior handle the situation.
- */
- wait_event_killable(global_oom_ctrl.wq,
- global_oom_ctrl.kill_counter == 0);
- return -EAGAIN;
- }
-
- spin_lock(&oom_ctrl->lock);
- if (!oom_ctrl->kill_counter && !ub_oom_completed(oom_ctrl))
- goto out_do_oom;
-
- timeout = UB_OOM_TIMEOUT;
- while (1) {
- if (ub_oom_completed(oom_ctrl)) {
- spin_unlock(&oom_ctrl->lock);
- /*
- * We raced with some other OOM killer and need
- * to update generation to be sure, that we can
- * call OOM killer on next loop iteration.
- */
- ub_oom_start(oom_ctrl);
- return -EAGAIN;
- }
-
- if (timeout == 0) {
- /*
- * Time is up, let's kill somebody else but
- * release the oom ctl since the stuck task
- * wasn't able to do it.
- */
- __ub_release_oom_control(oom_ctrl, "oom tmo");
- break;
- }
-
- __set_current_state(TASK_UNINTERRUPTIBLE);
- add_wait_queue(&oom_ctrl->wq, &oom_w);
- spin_unlock(&oom_ctrl->lock);
-
- timeout = schedule_timeout(timeout);
-
- spin_lock(&oom_ctrl->lock);
- remove_wait_queue(&oom_ctrl->wq, &oom_w);
-
- }
-
-out_do_oom:
- ub_clear_oom();
- printk(">>> %s oom generation %d starts\n",
- oom_ctrl_id(oom_ctrl), oom_ctrl->generation);
- return 0;
-}
-
-static inline long ub_current_overdraft(struct user_beancounter *ub)
-{
- return ((ub->ub_parms[UB_KMEMSIZE].held
- + ub->ub_parms[UB_TCPSNDBUF].held
- + ub->ub_parms[UB_TCPRCVBUF].held
- + ub->ub_parms[UB_OTHERSOCKBUF].held
- + ub->ub_parms[UB_DGRAMRCVBUF].held)
- >> PAGE_SHIFT) - ub_oomguarpages_left(ub);
-}
-
-int ub_oom_task_skip(struct user_beancounter *ub, struct task_struct *tsk)
-{
- struct user_beancounter *mm_ub;
-
- if (ub == NULL)
- return 0;
-
- task_lock(tsk);
- if (tsk->mm == NULL)
- mm_ub = NULL;
- else
- mm_ub = tsk->mm->mm_ub;
-
- task_unlock(tsk);
-
- return mm_ub != ub;
-}
-
-struct user_beancounter *ub_oom_select_worst(void)
-{
- struct user_beancounter *ub, *walkp;
- long ub_maxover;
-
- ub_maxover = 0;
- ub = NULL;
-
- rcu_read_lock();
- for_each_beancounter (walkp) {
- long ub_overdraft;
-
- if (test_bit(UB_OOM_NOPROC, &walkp->ub_flags))
- continue;
-
- ub_overdraft = ub_current_overdraft(walkp);
- if (ub_overdraft > ub_maxover && get_beancounter_rcu(walkp)) {
- put_beancounter(ub);
- ub = walkp;
- ub_maxover = ub_overdraft;
- }
- }
-
- if (ub) {
- set_bit(UB_OOM_NOPROC, &ub->ub_flags);
- printk(KERN_INFO "OOM selected worst BC %s (overdraft %lu):\n",
- ub->ub_name, ub_maxover);
- __show_ub_mem(ub);
- }
- rcu_read_unlock();
-
- return ub;
-}
-
-void ub_oom_unlock(struct oom_control *oom_ctrl)
-{
- spin_unlock(&oom_ctrl->lock);
-}
-
-void ub_oom_mm_dead(struct mm_struct *mm)
-{
- printk("OOM killed process %s (pid=%d, ve=%s) exited, "
- "free=%lu.\n",
- current->comm, current->pid,
- task_ve_name(current),
- nr_free_pages());
-
- if (mm->global_oom) {
- if (printk_ratelimit())
- show_mem(SHOW_MEM_FILTER_NODES);
- ub_release_oom_control(&global_oom_ctrl);
- }
-
- if (mm->ub_oom) {
- struct user_beancounter *ub = mm_ub(mm);
-
- if (__ratelimit(&ub->ub_ratelimit))
- show_ub_mem(ub);
- ub_release_oom_control(&ub->oom_ctrl);
- }
-}
-
-unsigned long ub_oom_total_pages(struct user_beancounter *ub)
-{
- return min(totalram_pages, ub->ub_parms[UB_PHYSPAGES].limit) +
- min(total_swap_pages, ub->ub_parms[UB_SWAPPAGES].limit);
-}
-
-int out_of_memory_in_ub(struct user_beancounter *ub, gfp_t gfp_mask)
-{
- struct task_struct *p;
- int res = 0;
- unsigned long ub_mem_pages;
- int points;
-
- if (ub_oom_lock(&ub->oom_ctrl))
- goto out;
-
- oom_report_invocation("loc", ub, gfp_mask, 0);
- ub_mem_pages = ub_oom_total_pages(ub);
- read_lock(&tasklist_lock);
-
- do {
- p = select_bad_process(&points, ub_mem_pages, ub, NULL, NULL);
- if (PTR_ERR(p) == -1UL || !p)
- break;
- } while (oom_kill_process(p, gfp_mask, 0, points, ub_mem_pages,
- ub, NULL, NULL, "Out of memory in UB"));
-
- read_unlock(&tasklist_lock);
- ub_oom_unlock(&ub->oom_ctrl);
-
- if (!p)
- res = -ENOMEM;
-out:
- /*
- * Give "p" a good chance of killing itself before we
- * retry to allocate memory unless "p" is current
- */
- if (!test_thread_flag(TIF_MEMDIE))
- schedule_timeout_uninterruptible(1);
-
- return res;
-}
-
-struct oom_control global_oom_ctrl;
-
-void init_oom_control(struct oom_control *oom_ctrl)
-{
- spin_lock_init(&oom_ctrl->lock);
- init_waitqueue_head(&oom_ctrl->wq);
-}
diff --git a/kernel/bc/proc.c b/kernel/bc/proc.c
index 3d5bf1c..46ea074 100644
--- a/kernel/bc/proc.c
+++ b/kernel/bc/proc.c
@@ -85,7 +85,6 @@ static void __show_resources(struct seq_file *f, struct user_beancounter *ub,
{
int i, precharge[UB_RESOURCES];
- ub_update_resources(ub);
ub_precharge_snapshot(ub, precharge);
for (i = 0; i < UB_RESOURCES_COMPAT; i++)
@@ -301,7 +300,6 @@ static int ub_show(struct seq_file *f, void *v)
int i, precharge[UB_RESOURCES];
struct user_beancounter *ub = v;
- ub_update_resources(ub);
ub_precharge_snapshot(ub, precharge);
for (i = 0; i < UB_RESOURCES_COMPAT; i++)
diff --git a/kernel/bc/statd.c b/kernel/bc/statd.c
index 25aab55..e0eac10 100644
--- a/kernel/bc/statd.c
+++ b/kernel/bc/statd.c
@@ -232,8 +232,6 @@ static int ubstat_get_stat(struct user_beancounter *ub, long cmd,
if (retval)
goto out;
- ub_update_resources(ub);
-
spin_lock(&ubs_notify_lock);
switch (UBSTAT_CMD(cmd)) {
case UBSTAT_READ_ONE:
@@ -384,7 +382,6 @@ static void ubstat_save_onestat(struct user_beancounter *ub)
/* called with local irq disabled */
spin_lock(&ub->ub_lock);
- ub_update_resources_locked(ub);
for (resource = 0; resource < UB_RESOURCES; resource++) {
memcpy(&ub->ub_store[resource], &ub->ub_parms[resource],
sizeof(struct ubparm));
diff --git a/kernel/bc/vm_pages.c b/kernel/bc/vm_pages.c
index b3d0dd0..bc1a1d7 100644
--- a/kernel/bc/vm_pages.c
+++ b/kernel/bc/vm_pages.c
@@ -23,52 +23,6 @@
#include <bc/beancounter.h>
#include <bc/vmpages.h>
#include <bc/proc.h>
-#include <bc/oom_kill.h>
-
-void __ub_update_oomguarpages(struct user_beancounter *ub)
-{
- ub->ub_parms[UB_OOMGUARPAGES].held =
- ub->ub_parms[UB_PRIVVMPAGES].held +
- ub->ub_parms[UB_LOCKEDPAGES].held +
- ub->ub_parms[UB_PHYSPAGES].held +
- ub->ub_parms[UB_SWAPPAGES].held;
-
- ub_adjust_maxheld(ub, UB_OOMGUARPAGES);
-}
-
-long ub_oomguarpages_left(struct user_beancounter *ub)
-{
- unsigned long flags;
- long left;
- int precharge[UB_RESOURCES];
-
- spin_lock_irqsave(&ub->ub_lock, flags);
- __ub_update_oomguarpages(ub);
- left = ub->ub_parms[UB_OOMGUARPAGES].barrier -
- ub->ub_parms[UB_OOMGUARPAGES].held;
- spin_unlock_irqrestore(&ub->ub_lock, flags);
-
- ub_precharge_snapshot(ub, precharge);
- left += precharge[UB_OOMGUARPAGES];
-
- return left;
-}
-
-void ub_update_resources_locked(struct user_beancounter *ub)
-{
- __ub_update_oomguarpages(ub);
-}
-EXPORT_SYMBOL(ub_update_resources_locked);
-
-void ub_update_resources(struct user_beancounter *ub)
-{
- unsigned long flags;
-
- spin_lock_irqsave(&ub->ub_lock, flags);
- ub_update_resources_locked(ub);
- spin_unlock_irqrestore(&ub->ub_lock, flags);
-}
-EXPORT_SYMBOL(ub_update_resources);
int ub_memory_charge(struct mm_struct *mm, unsigned long size,
unsigned vm_flags, struct file *vm_file, int sv)
diff --git a/kernel/exit.c b/kernel/exit.c
index 1c65d95..bbfd54d 100644
--- a/kernel/exit.c
+++ b/kernel/exit.c
@@ -56,7 +56,6 @@
#include <linux/shm.h>
#include <bc/misc.h>
-#include <bc/oom_kill.h>
#include <asm/uaccess.h>
#include <asm/unistd.h>
diff --git a/kernel/fork.c b/kernel/fork.c
index 95950e7..bf9aab4 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -82,7 +82,6 @@
#include <asm/tlbflush.h>
#include <bc/misc.h>
-#include <bc/oom_kill.h>
#include <bc/vmpages.h>
#include <trace/events/sched.h>
@@ -675,8 +674,6 @@ void mmput(struct mm_struct *mm)
}
if (mm->binfmt)
module_put(mm->binfmt->module);
- if (mm->global_oom || mm->ub_oom)
- ub_oom_mm_dead(mm);
put_mm_ub(mm);
mmdrop(mm);
}
@@ -873,8 +870,6 @@ struct mm_struct *dup_mm(struct task_struct *tsk)
goto fail_nomem;
memcpy(mm, oldmm, sizeof(*mm));
- mm->global_oom = 0;
- mm->ub_oom = 0;
mm_init_cpumask(mm);
#if defined(CONFIG_TRANSPARENT_HUGEPAGE) && !USE_SPLIT_PMD_PTLOCKS
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index cd26308..627677c 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -62,8 +62,6 @@
#include <linux/sched/rt.h>
#include <linux/ve.h>
-#include <bc/oom_kill.h>
-
#include <asm/tlbflush.h>
#include <asm/div64.h>
#include "internal.h"
@@ -2267,8 +2265,6 @@ __perform_reclaim(gfp_t gfp_mask, unsigned int order, struct zonelist *zonelist,
struct reclaim_state reclaim_state;
int progress;
- //ub_oom_start(&global_oom_ctrl);
-
cond_resched();
/* We now go into synchronous reclaim */
More information about the Devel
mailing list