diff options
| author | Thomas Gleixner <tglx@linutronix.de> | 2009-07-24 12:07:22 -0400 |
|---|---|---|
| committer | Thomas Gleixner <tglx@linutronix.de> | 2009-07-24 12:30:12 -0400 |
| commit | 104f75cb1a751a023beddacf56ca6c19ed90ce6c (patch) | |
| tree | f6dee8ac52211dea68f0bfd6dfd9112a7a0cdddd | |
| parent | 8a56ce758d645882ffbc920efd1d409c4ff83641 (diff) | |
mm: vmscan: do not disable interrupts on -RT
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
| -rw-r--r-- | mm/vmscan.c | 10 |
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); |
| 1163 | done: | 1169 | done: |
| 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 | } |
