|
@@ -1045,7 +1045,7 @@ static unsigned long isolate_lru_pages(unsigned long nr_to_scan,
|
|
|
case 0:
|
|
|
list_move(&page->lru, dst);
|
|
|
mem_cgroup_del_lru(page);
|
|
|
- nr_taken++;
|
|
|
+ nr_taken += hpage_nr_pages(page);
|
|
|
break;
|
|
|
|
|
|
case -EBUSY:
|
|
@@ -1103,7 +1103,7 @@ static unsigned long isolate_lru_pages(unsigned long nr_to_scan,
|
|
|
if (__isolate_lru_page(cursor_page, mode, file) == 0) {
|
|
|
list_move(&cursor_page->lru, dst);
|
|
|
mem_cgroup_del_lru(cursor_page);
|
|
|
- nr_taken++;
|
|
|
+ nr_taken += hpage_nr_pages(page);
|
|
|
nr_lumpy_taken++;
|
|
|
if (PageDirty(cursor_page))
|
|
|
nr_lumpy_dirty++;
|
|
@@ -1158,14 +1158,15 @@ static unsigned long clear_active_flags(struct list_head *page_list,
|
|
|
struct page *page;
|
|
|
|
|
|
list_for_each_entry(page, page_list, lru) {
|
|
|
+ int numpages = hpage_nr_pages(page);
|
|
|
lru = page_lru_base_type(page);
|
|
|
if (PageActive(page)) {
|
|
|
lru += LRU_ACTIVE;
|
|
|
ClearPageActive(page);
|
|
|
- nr_active++;
|
|
|
+ nr_active += numpages;
|
|
|
}
|
|
|
if (count)
|
|
|
- count[lru]++;
|
|
|
+ count[lru] += numpages;
|
|
|
}
|
|
|
|
|
|
return nr_active;
|
|
@@ -1483,7 +1484,7 @@ static void move_active_pages_to_lru(struct zone *zone,
|
|
|
|
|
|
list_move(&page->lru, &zone->lru[lru].list);
|
|
|
mem_cgroup_add_lru_list(page, lru);
|
|
|
- pgmoved++;
|
|
|
+ pgmoved += hpage_nr_pages(page);
|
|
|
|
|
|
if (!pagevec_add(&pvec, page) || list_empty(list)) {
|
|
|
spin_unlock_irq(&zone->lru_lock);
|