void __pagevec_lru_add_active(struct pagevec *pvec) { int i; struct zone *zone = NULL; for (i = 0; i < pagevec_count(pvec); i++) { struct page *page = pvec->pages[i]; struct zone *pagezone = page_zone(page); if (pagezone != zone) { if (zone) spin_unlock_irq(&zone->lru_lock); zone = pagezone; spin_lock_irq(&zone->lru_lock); } if (TestSetPageLRU(page)) BUG(); if (TestSetPageActive(page)) BUG(); add_page_to_active_list(zone, page); } if (zone) spin_unlock_irq(&zone->lru_lock); release_pages(pvec->pages, pvec->nr, pvec->cold); pagevec_reinit(pvec); }
static inline void putback_page_to_lru(struct zone *zone, struct page *page) { if (TestSetPageLRU(page)) BUG(); if (PageActive(page)) add_page_to_active_list(zone, page); else add_page_to_inactive_list(zone, page); }