aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2009-07-24 12:07:22 -0400
committerThomas Gleixner <tglx@linutronix.de>2009-07-24 12:30:12 -0400
commit104f75cb1a751a023beddacf56ca6c19ed90ce6c (patch)
treef6dee8ac52211dea68f0bfd6dfd9112a7a0cdddd
parent8a56ce758d645882ffbc920efd1d409c4ff83641 (diff)
mm: vmscan: do not disable interrupts on -RT
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-rw-r--r--mm/vmscan.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/mm/vmscan.c b/mm/vmscan.c
index dea7abd31098..6911d54ff9c8 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -23,6 +23,7 @@
23#include <linux/file.h> 23#include <linux/file.h>
24#include <linux/writeback.h> 24#include <linux/writeback.h>
25#include <linux/blkdev.h> 25#include <linux/blkdev.h>
26#include <linux/interrupt.h>
26#include <linux/buffer_head.h> /* for try_to_release_page(), 27#include <linux/buffer_head.h> /* for try_to_release_page(),
27 buffer_heads_over_limit */ 28 buffer_heads_over_limit */
28#include <linux/mm_inline.h> 29#include <linux/mm_inline.h>
@@ -1118,7 +1119,7 @@ static unsigned long shrink_inactive_list(unsigned long max_scan,
1118 } 1119 }
1119 1120
1120 nr_reclaimed += nr_freed; 1121 nr_reclaimed += nr_freed;
1121 local_irq_disable(); 1122 local_irq_disable_nort();
1122 if (current_is_kswapd()) { 1123 if (current_is_kswapd()) {
1123 __count_zone_vm_events(PGSCAN_KSWAPD, zone, nr_scan); 1124 __count_zone_vm_events(PGSCAN_KSWAPD, zone, nr_scan);
1124 __count_vm_events(KSWAPD_STEAL, nr_freed); 1125 __count_vm_events(KSWAPD_STEAL, nr_freed);
@@ -1159,9 +1160,14 @@ static unsigned long shrink_inactive_list(unsigned long max_scan,
1159 } 1160 }
1160 } 1161 }
1161 } while (nr_scanned < max_scan); 1162 } while (nr_scanned < max_scan);
1163 /*
1164 * Non-PREEMPT_RT relies on IRQs-off protecting the page_states
1165 * per-CPU data. PREEMPT_RT has that data protected even in
1166 * __mod_page_state(), so no need to keep IRQs disabled.
1167 */
1162 spin_unlock(&zone->lru_lock); 1168 spin_unlock(&zone->lru_lock);
1163done: 1169done:
1164 local_irq_enable(); 1170 local_irq_enable_nort();
1165 pagevec_release(&pvec); 1171 pagevec_release(&pvec);
1166 return nr_reclaimed; 1172 return nr_reclaimed;
1167} 1173}