|
@@ -949,29 +949,14 @@ keep:
|
|
|
*
|
|
|
* returns 0 on success, -ve errno on failure.
|
|
|
*/
|
|
|
-int __isolate_lru_page(struct page *page, isolate_mode_t mode, int file)
|
|
|
+int __isolate_lru_page(struct page *page, isolate_mode_t mode)
|
|
|
{
|
|
|
- bool all_lru_mode;
|
|
|
int ret = -EINVAL;
|
|
|
|
|
|
/* Only take pages on the LRU. */
|
|
|
if (!PageLRU(page))
|
|
|
return ret;
|
|
|
|
|
|
- all_lru_mode = (mode & (ISOLATE_ACTIVE|ISOLATE_INACTIVE)) ==
|
|
|
- (ISOLATE_ACTIVE|ISOLATE_INACTIVE);
|
|
|
-
|
|
|
- /*
|
|
|
- * When checking the active state, we need to be sure we are
|
|
|
- * dealing with comparible boolean values. Take the logical not
|
|
|
- * of each.
|
|
|
- */
|
|
|
- if (!all_lru_mode && !PageActive(page) != !(mode & ISOLATE_ACTIVE))
|
|
|
- return ret;
|
|
|
-
|
|
|
- if (!all_lru_mode && !!page_is_file_cache(page) != file)
|
|
|
- return ret;
|
|
|
-
|
|
|
/* Do not give back unevictable pages for compaction */
|
|
|
if (PageUnevictable(page))
|
|
|
return ret;
|
|
@@ -1070,7 +1055,7 @@ static unsigned long isolate_lru_pages(unsigned long nr_to_scan,
|
|
|
|
|
|
VM_BUG_ON(!PageLRU(page));
|
|
|
|
|
|
- switch (__isolate_lru_page(page, mode, file)) {
|
|
|
+ switch (__isolate_lru_page(page, mode)) {
|
|
|
case 0:
|
|
|
mem_cgroup_lru_del(page);
|
|
|
list_move(&page->lru, dst);
|
|
@@ -1282,7 +1267,7 @@ shrink_inactive_list(unsigned long nr_to_scan, struct mem_cgroup_zone *mz,
|
|
|
unsigned long nr_file;
|
|
|
unsigned long nr_dirty = 0;
|
|
|
unsigned long nr_writeback = 0;
|
|
|
- isolate_mode_t isolate_mode = ISOLATE_INACTIVE;
|
|
|
+ isolate_mode_t isolate_mode = 0;
|
|
|
int file = is_file_lru(lru);
|
|
|
struct zone *zone = mz->zone;
|
|
|
struct zone_reclaim_stat *reclaim_stat = get_reclaim_stat(mz);
|
|
@@ -1452,7 +1437,7 @@ static void shrink_active_list(unsigned long nr_to_scan,
|
|
|
struct page *page;
|
|
|
struct zone_reclaim_stat *reclaim_stat = get_reclaim_stat(mz);
|
|
|
unsigned long nr_rotated = 0;
|
|
|
- isolate_mode_t isolate_mode = ISOLATE_ACTIVE;
|
|
|
+ isolate_mode_t isolate_mode = 0;
|
|
|
int file = is_file_lru(lru);
|
|
|
struct zone *zone = mz->zone;
|
|
|
|