diff options
author | Andrew Morton <akpm@linux-foundation.org> | 2009-01-06 17:40:13 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-01-06 18:59:08 -0500 |
commit | b555749aac87d7c2637f153e44bd77c7fdf4c65b (patch) | |
tree | b65a437fd70795eac749f5dcf327151d458ec742 /mm | |
parent | 1e9e63650d6cb88e6d6d2ca6cc3ee276c26de4a3 (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')
-rw-r--r-- | mm/vmscan.c | 14 |
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); |