pagemap: introduce data structure for pagemap entry
[platform/adaptation/renesas_rcar/renesas_kernel.git] / mm / page_alloc.c
index a13ded1..572b93e 100644 (file)
@@ -1990,7 +1990,7 @@ __alloc_pages_direct_compact(gfp_t gfp_mask, unsigned int order,
        if (!order)
                return NULL;
 
-       if (compaction_deferred(preferred_zone)) {
+       if (compaction_deferred(preferred_zone, order)) {
                *deferred_compaction = true;
                return NULL;
        }
@@ -2012,6 +2012,8 @@ __alloc_pages_direct_compact(gfp_t gfp_mask, unsigned int order,
                if (page) {
                        preferred_zone->compact_considered = 0;
                        preferred_zone->compact_defer_shift = 0;
+                       if (order >= preferred_zone->compact_order_failed)
+                               preferred_zone->compact_order_failed = order + 1;
                        count_vm_event(COMPACTSUCCESS);
                        return page;
                }
@@ -2028,7 +2030,7 @@ __alloc_pages_direct_compact(gfp_t gfp_mask, unsigned int order,
                 * defer if the failure was a sync compaction failure.
                 */
                if (sync_migration)
-                       defer_compaction(preferred_zone);
+                       defer_compaction(preferred_zone, order);
 
                cond_resched();
        }