|
@@ -837,7 +837,6 @@ int __isolate_lru_page(struct page *page, int mode, int file)
|
|
*/
|
|
*/
|
|
ClearPageLRU(page);
|
|
ClearPageLRU(page);
|
|
ret = 0;
|
|
ret = 0;
|
|
- mem_cgroup_del_lru(page);
|
|
|
|
}
|
|
}
|
|
|
|
|
|
return ret;
|
|
return ret;
|
|
@@ -885,12 +884,14 @@ static unsigned long isolate_lru_pages(unsigned long nr_to_scan,
|
|
switch (__isolate_lru_page(page, mode, file)) {
|
|
switch (__isolate_lru_page(page, mode, file)) {
|
|
case 0:
|
|
case 0:
|
|
list_move(&page->lru, dst);
|
|
list_move(&page->lru, dst);
|
|
|
|
+ mem_cgroup_del_lru(page);
|
|
nr_taken++;
|
|
nr_taken++;
|
|
break;
|
|
break;
|
|
|
|
|
|
case -EBUSY:
|
|
case -EBUSY:
|
|
/* else it is being freed elsewhere */
|
|
/* else it is being freed elsewhere */
|
|
list_move(&page->lru, src);
|
|
list_move(&page->lru, src);
|
|
|
|
+ mem_cgroup_rotate_lru_list(page, page_lru(page));
|
|
continue;
|
|
continue;
|
|
|
|
|
|
default:
|
|
default:
|
|
@@ -931,6 +932,7 @@ static unsigned long isolate_lru_pages(unsigned long nr_to_scan,
|
|
continue;
|
|
continue;
|
|
if (__isolate_lru_page(cursor_page, mode, file) == 0) {
|
|
if (__isolate_lru_page(cursor_page, mode, file) == 0) {
|
|
list_move(&cursor_page->lru, dst);
|
|
list_move(&cursor_page->lru, dst);
|
|
|
|
+ mem_cgroup_del_lru(page);
|
|
nr_taken++;
|
|
nr_taken++;
|
|
scan++;
|
|
scan++;
|
|
}
|
|
}
|