diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 7350986bbf996..b54c5cbf0200b 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -1942,9 +1942,24 @@ get_page_from_freelist(gfp_t gfp_mask, nodemask_t *nodemask, unsigned int order, continue; default: /* did we reclaim enough */ - if (!zone_watermark_ok(zone, order, mark, + if (zone_watermark_ok(zone, order, mark, classzone_idx, alloc_flags)) + goto try_this_zone; + + /* + * Failed to reclaim enough to meet watermark. + * Only mark the zone full if checking the min + * watermark or if we failed to reclaim just + * 1<