mm: move pagevec stripping to save unlock-relock
[safe/jmp/linux-2.6] / mm / vmscan.c
index 51f2df0..988aef9 100644 (file)
@@ -1298,14 +1298,11 @@ static void shrink_active_list(unsigned long nr_pages, struct zone *zone,
        }
        __mod_zone_page_state(zone, NR_LRU_BASE + lru, pgmoved);
        pgdeactivate += pgmoved;
-       if (buffer_heads_over_limit) {
-               spin_unlock_irq(&zone->lru_lock);
-               pagevec_strip(&pvec);
-               spin_lock_irq(&zone->lru_lock);
-       }
        __count_zone_vm_events(PGREFILL, zone, pgscanned);
        __count_vm_events(PGDEACTIVATE, pgdeactivate);
        spin_unlock_irq(&zone->lru_lock);
+       if (buffer_heads_over_limit)
+               pagevec_strip(&pvec);
        if (vm_swap_full())
                pagevec_swap_free(&pvec);