aboutsummaryrefslogtreecommitdiffstats
path: root/mm/vmscan.c
diff options
context:
space:
mode:
Diffstat (limited to 'mm/vmscan.c')
-rw-r--r--mm/vmscan.c26
1 files changed, 6 insertions, 20 deletions
diff --git a/mm/vmscan.c b/mm/vmscan.c
index d55d106ad179..2b1c74817a1e 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -71,12 +71,6 @@ struct scan_control {
71 /* Can pages be swapped as part of reclaim? */ 71 /* Can pages be swapped as part of reclaim? */
72 int may_swap; 72 int may_swap;
73 73
74 /* This context's SWAP_CLUSTER_MAX. If freeing memory for
75 * suspend, we effectively ignore SWAP_CLUSTER_MAX.
76 * In this context, it doesn't matter that we scan the
77 * whole list at once. */
78 int swap_cluster_max;
79
80 int swappiness; 74 int swappiness;
81 75
82 int all_unreclaimable; 76 int all_unreclaimable;
@@ -1137,7 +1131,7 @@ static unsigned long shrink_inactive_list(unsigned long max_scan,
1137 unsigned long nr_anon; 1131 unsigned long nr_anon;
1138 unsigned long nr_file; 1132 unsigned long nr_file;
1139 1133
1140 nr_taken = sc->isolate_pages(sc->swap_cluster_max, 1134 nr_taken = sc->isolate_pages(SWAP_CLUSTER_MAX,
1141 &page_list, &nr_scan, sc->order, mode, 1135 &page_list, &nr_scan, sc->order, mode,
1142 zone, sc->mem_cgroup, 0, file); 1136 zone, sc->mem_cgroup, 0, file);
1143 1137
@@ -1572,15 +1566,14 @@ static void get_scan_ratio(struct zone *zone, struct scan_control *sc,
1572 * until we collected @swap_cluster_max pages to scan. 1566 * until we collected @swap_cluster_max pages to scan.
1573 */ 1567 */
1574static unsigned long nr_scan_try_batch(unsigned long nr_to_scan, 1568static unsigned long nr_scan_try_batch(unsigned long nr_to_scan,
1575 unsigned long *nr_saved_scan, 1569 unsigned long *nr_saved_scan)
1576 unsigned long swap_cluster_max)
1577{ 1570{
1578 unsigned long nr; 1571 unsigned long nr;
1579 1572
1580 *nr_saved_scan += nr_to_scan; 1573 *nr_saved_scan += nr_to_scan;
1581 nr = *nr_saved_scan; 1574 nr = *nr_saved_scan;
1582 1575
1583 if (nr >= swap_cluster_max) 1576 if (nr >= SWAP_CLUSTER_MAX)
1584 *nr_saved_scan = 0; 1577 *nr_saved_scan = 0;
1585 else 1578 else
1586 nr = 0; 1579 nr = 0;
@@ -1599,7 +1592,6 @@ static void shrink_zone(int priority, struct zone *zone,
1599 unsigned long percent[2]; /* anon @ 0; file @ 1 */ 1592 unsigned long percent[2]; /* anon @ 0; file @ 1 */
1600 enum lru_list l; 1593 enum lru_list l;
1601 unsigned long nr_reclaimed = sc->nr_reclaimed; 1594 unsigned long nr_reclaimed = sc->nr_reclaimed;
1602 unsigned long swap_cluster_max = sc->swap_cluster_max;
1603 unsigned long nr_to_reclaim = sc->nr_to_reclaim; 1595 unsigned long nr_to_reclaim = sc->nr_to_reclaim;
1604 struct zone_reclaim_stat *reclaim_stat = get_reclaim_stat(zone, sc); 1596 struct zone_reclaim_stat *reclaim_stat = get_reclaim_stat(zone, sc);
1605 int noswap = 0; 1597 int noswap = 0;
@@ -1622,15 +1614,15 @@ static void shrink_zone(int priority, struct zone *zone,
1622 scan = (scan * percent[file]) / 100; 1614 scan = (scan * percent[file]) / 100;
1623 } 1615 }
1624 nr[l] = nr_scan_try_batch(scan, 1616 nr[l] = nr_scan_try_batch(scan,
1625 &reclaim_stat->nr_saved_scan[l], 1617 &reclaim_stat->nr_saved_scan[l]);
1626 swap_cluster_max);
1627 } 1618 }
1628 1619
1629 while (nr[LRU_INACTIVE_ANON] || nr[LRU_ACTIVE_FILE] || 1620 while (nr[LRU_INACTIVE_ANON] || nr[LRU_ACTIVE_FILE] ||
1630 nr[LRU_INACTIVE_FILE]) { 1621 nr[LRU_INACTIVE_FILE]) {
1631 for_each_evictable_lru(l) { 1622 for_each_evictable_lru(l) {
1632 if (nr[l]) { 1623 if (nr[l]) {
1633 nr_to_scan = min(nr[l], swap_cluster_max); 1624 nr_to_scan = min_t(unsigned long,
1625 nr[l], SWAP_CLUSTER_MAX);
1634 nr[l] -= nr_to_scan; 1626 nr[l] -= nr_to_scan;
1635 1627
1636 nr_reclaimed += shrink_list(l, nr_to_scan, 1628 nr_reclaimed += shrink_list(l, nr_to_scan,
@@ -1838,7 +1830,6 @@ unsigned long try_to_free_pages(struct zonelist *zonelist, int order,
1838 struct scan_control sc = { 1830 struct scan_control sc = {
1839 .gfp_mask = gfp_mask, 1831 .gfp_mask = gfp_mask,
1840 .may_writepage = !laptop_mode, 1832 .may_writepage = !laptop_mode,
1841 .swap_cluster_max = SWAP_CLUSTER_MAX,
1842 .nr_to_reclaim = SWAP_CLUSTER_MAX, 1833 .nr_to_reclaim = SWAP_CLUSTER_MAX,
1843 .may_unmap = 1, 1834 .may_unmap = 1,
1844 .may_swap = 1, 1835 .may_swap = 1,
@@ -1863,7 +1854,6 @@ unsigned long mem_cgroup_shrink_node_zone(struct mem_cgroup *mem,
1863 .may_writepage = !laptop_mode, 1854 .may_writepage = !laptop_mode,
1864 .may_unmap = 1, 1855 .may_unmap = 1,
1865 .may_swap = !noswap, 1856 .may_swap = !noswap,
1866 .swap_cluster_max = SWAP_CLUSTER_MAX,
1867 .swappiness = swappiness, 1857 .swappiness = swappiness,
1868 .order = 0, 1858 .order = 0,
1869 .mem_cgroup = mem, 1859 .mem_cgroup = mem,
@@ -1897,7 +1887,6 @@ unsigned long try_to_free_mem_cgroup_pages(struct mem_cgroup *mem_cont,
1897 .may_writepage = !laptop_mode, 1887 .may_writepage = !laptop_mode,
1898 .may_unmap = 1, 1888 .may_unmap = 1,
1899 .may_swap = !noswap, 1889 .may_swap = !noswap,
1900 .swap_cluster_max = SWAP_CLUSTER_MAX,
1901 .nr_to_reclaim = SWAP_CLUSTER_MAX, 1890 .nr_to_reclaim = SWAP_CLUSTER_MAX,
1902 .swappiness = swappiness, 1891 .swappiness = swappiness,
1903 .order = 0, 1892 .order = 0,
@@ -1969,7 +1958,6 @@ static unsigned long balance_pgdat(pg_data_t *pgdat, int order)
1969 .gfp_mask = GFP_KERNEL, 1958 .gfp_mask = GFP_KERNEL,
1970 .may_unmap = 1, 1959 .may_unmap = 1,
1971 .may_swap = 1, 1960 .may_swap = 1,
1972 .swap_cluster_max = SWAP_CLUSTER_MAX,
1973 /* 1961 /*
1974 * kswapd doesn't want to be bailed out while reclaim. because 1962 * kswapd doesn't want to be bailed out while reclaim. because
1975 * we want to put equal scanning pressure on each zone. 1963 * we want to put equal scanning pressure on each zone.
@@ -2354,7 +2342,6 @@ unsigned long shrink_all_memory(unsigned long nr_to_reclaim)
2354 .may_swap = 1, 2342 .may_swap = 1,
2355 .may_unmap = 1, 2343 .may_unmap = 1,
2356 .may_writepage = 1, 2344 .may_writepage = 1,
2357 .swap_cluster_max = SWAP_CLUSTER_MAX,
2358 .nr_to_reclaim = nr_to_reclaim, 2345 .nr_to_reclaim = nr_to_reclaim,
2359 .hibernation_mode = 1, 2346 .hibernation_mode = 1,
2360 .swappiness = vm_swappiness, 2347 .swappiness = vm_swappiness,
@@ -2539,7 +2526,6 @@ static int __zone_reclaim(struct zone *zone, gfp_t gfp_mask, unsigned int order)
2539 .may_writepage = !!(zone_reclaim_mode & RECLAIM_WRITE), 2526 .may_writepage = !!(zone_reclaim_mode & RECLAIM_WRITE),
2540 .may_unmap = !!(zone_reclaim_mode & RECLAIM_SWAP), 2527 .may_unmap = !!(zone_reclaim_mode & RECLAIM_SWAP),
2541 .may_swap = 1, 2528 .may_swap = 1,
2542 .swap_cluster_max = SWAP_CLUSTER_MAX,
2543 .nr_to_reclaim = max_t(unsigned long, nr_pages, 2529 .nr_to_reclaim = max_t(unsigned long, nr_pages,
2544 SWAP_CLUSTER_MAX), 2530 SWAP_CLUSTER_MAX),
2545 .gfp_mask = gfp_mask, 2531 .gfp_mask = gfp_mask,