aboutsummaryrefslogtreecommitdiffstats
path: root/mm/vmscan.c
diff options
context:
space:
mode:
authorAndrew Morton <akpm@linux-foundation.org>2009-01-06 17:40:13 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2009-01-06 18:59:08 -0500
commitb555749aac87d7c2637f153e44bd77c7fdf4c65b (patch)
treeb65a437fd70795eac749f5dcf327151d458ec742 /mm/vmscan.c
parent1e9e63650d6cb88e6d6d2ca6cc3ee276c26de4a3 (diff)
vmscan: shrink_active_list(): reduce lru_lock hold time
These three statements manipulate local variables and do not need the lock coverage. Cc: Johannes Weiner <hannes@cmpxchg.org> Cc: Lee Schermerhorn <Lee.Schermerhorn@hp.com> Cc: Rik van Riel <riel@redhat.com Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm/vmscan.c')
-rw-r--r--mm/vmscan.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/mm/vmscan.c b/mm/vmscan.c
index 466a36b3bada..5daf606e0a35 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -1237,6 +1237,13 @@ static void shrink_active_list(unsigned long nr_pages, struct zone *zone,
1237 list_add(&page->lru, &l_inactive); 1237 list_add(&page->lru, &l_inactive);
1238 } 1238 }
1239 1239
1240 /*
1241 * Move the pages to the [file or anon] inactive list.
1242 */
1243 pagevec_init(&pvec, 1);
1244 pgmoved = 0;
1245 lru = LRU_BASE + file * LRU_FILE;
1246
1240 spin_lock_irq(&zone->lru_lock); 1247 spin_lock_irq(&zone->lru_lock);
1241 /* 1248 /*
1242 * Count referenced pages from currently used mappings as 1249 * Count referenced pages from currently used mappings as
@@ -1247,13 +1254,6 @@ static void shrink_active_list(unsigned long nr_pages, struct zone *zone,
1247 if (scan_global_lru(sc)) 1254 if (scan_global_lru(sc))
1248 zone->recent_rotated[!!file] += pgmoved; 1255 zone->recent_rotated[!!file] += pgmoved;
1249 1256
1250 /*
1251 * Move the pages to the [file or anon] inactive list.
1252 */
1253 pagevec_init(&pvec, 1);
1254
1255 pgmoved = 0;
1256 lru = LRU_BASE + file * LRU_FILE;
1257 while (!list_empty(&l_inactive)) { 1257 while (!list_empty(&l_inactive)) {
1258 page = lru_to_page(&l_inactive); 1258 page = lru_to_page(&l_inactive);
1259 prefetchw_prev_lru_page(page, &l_inactive, flags); 1259 prefetchw_prev_lru_page(page, &l_inactive, flags);