summaryrefslogtreecommitdiff
path: root/mm
diff options
context:
space:
mode:
authorVinayak Menon <vinmenon@codeaurora.org>2015-05-08 18:36:52 +0530
committerKyle Yan <kyan@codeaurora.org>2016-06-29 15:11:36 -0700
commit1ad1a93af4bcd68bd3beb526ec2d64495bc9ce64 (patch)
tree6c8c7e9130fb3eb4264b3ae46b5a4b69438ce381 /mm
parent9caa3b38bbead2fc0e28554641880c02e0f6d649 (diff)
mm: process_reclaim: fix reclaim skip on low efficiency
The logic used to skip reclaim on low efficiency results in process reclaim not triggering at all. Fix it by properly handling the skip_reclaim atomic variable. Change-Id: I119097bb9b1baf8f3e8d4afa0a6dc2c30c0de6e7 Signed-off-by: Vinayak Menon <vinmenon@codeaurora.org>
Diffstat (limited to 'mm')
-rw-r--r--mm/process_reclaim.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/mm/process_reclaim.c b/mm/process_reclaim.c
index 7f70a3784d9b..f483f7276597 100644
--- a/mm/process_reclaim.c
+++ b/mm/process_reclaim.c
@@ -208,7 +208,7 @@ static void swap_fn(struct work_struct *work)
if (efficiency < swap_opt_eff) {
if (++monitor_eff == swap_eff_win) {
- atomic_set(&skip_reclaim, swap_eff_win + 1);
+ atomic_set(&skip_reclaim, swap_eff_win);
monitor_eff = 0;
}
} else {
@@ -232,7 +232,7 @@ static int vmpressure_notifier(struct notifier_block *nb,
if (!current_is_kswapd())
return 0;
- if (!atomic_dec_and_test(&skip_reclaim))
+ if (atomic_dec_if_positive(&skip_reclaim) >= 0)
return 0;
if ((pressure >= pressure_min) && (pressure < pressure_max))