Merge tag 'ftracetest-3.19' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt...
[firefly-linux-kernel-4.4.55.git] / mm / vmscan.c
index dcb47074ae03cdbe7ff4d823e116776b6dbc8673..4636d9e822c12f08577c90fd28587659b3f57c39 100644 (file)
@@ -260,8 +260,7 @@ shrink_slab_node(struct shrink_control *shrinkctl, struct shrinker *shrinker,
        do_div(delta, lru_pages + 1);
        total_scan += delta;
        if (total_scan < 0) {
-               printk(KERN_ERR
-               "shrink_slab: %pF negative objects to delete nr=%ld\n",
+               pr_err("shrink_slab: %pF negative objects to delete nr=%ld\n",
                       shrinker->scan_objects, total_scan);
                total_scan = freeable;
        }
@@ -875,7 +874,8 @@ static unsigned long shrink_page_list(struct list_head *page_list,
                 * end of the LRU a second time.
                 */
                mapping = page_mapping(page);
-               if ((mapping && bdi_write_congested(mapping->backing_dev_info)) ||
+               if (((dirty || writeback) && mapping &&
+                    bdi_write_congested(mapping->backing_dev_info)) ||
                    (writeback && PageReclaim(page)))
                        nr_congested++;
 
@@ -2249,7 +2249,7 @@ static inline bool should_continue_reclaim(struct zone *zone,
                return true;
 
        /* If compaction would go ahead or the allocation would succeed, stop */
-       switch (compaction_suitable(zone, sc->order)) {
+       switch (compaction_suitable(zone, sc->order, 0, 0)) {
        case COMPACT_PARTIAL:
        case COMPACT_CONTINUE:
                return false;
@@ -2346,7 +2346,7 @@ static inline bool compaction_ready(struct zone *zone, int order)
         * If compaction is not ready to start and allocation is not likely
         * to succeed without it, then keep reclaiming.
         */
-       if (compaction_suitable(zone, order) == COMPACT_SKIPPED)
+       if (compaction_suitable(zone, order, 0, 0) == COMPACT_SKIPPED)
                return false;
 
        return watermark_ok;
@@ -2824,8 +2824,8 @@ static bool zone_balanced(struct zone *zone, int order,
                                    balance_gap, classzone_idx, 0))
                return false;
 
-       if (IS_ENABLED(CONFIG_COMPACTION) && order &&
-           compaction_suitable(zone, order) == COMPACT_SKIPPED)
+       if (IS_ENABLED(CONFIG_COMPACTION) && order && compaction_suitable(zone,
+                               order, 0, classzone_idx) == COMPACT_SKIPPED)
                return false;
 
        return true;
@@ -2952,8 +2952,8 @@ static bool kswapd_shrink_zone(struct zone *zone,
         * from memory. Do not reclaim more than needed for compaction.
         */
        if (IS_ENABLED(CONFIG_COMPACTION) && sc->order &&
-                       compaction_suitable(zone, sc->order) !=
-                               COMPACT_SKIPPED)
+                       compaction_suitable(zone, sc->order, 0, classzone_idx)
+                                                       != COMPACT_SKIPPED)
                testorder = 0;
 
        /*