On 05/12/2015 09:51 AM, Vlastimil Babka wrote:
   {
        struct page *page;
+       bool steal_fallback;

-retry_reserve:
+retry:
        page = __rmqueue_smallest(zone, order, migratetype);

        if (unlikely(!page) && migratetype != MIGRATE_RESERVE) {
                if (migratetype == MIGRATE_MOVABLE)
                        page = __rmqueue_cma_fallback(zone, order);

-               if (!page)
-                       page = __rmqueue_fallback(zone, order, migratetype);
+               if (page)
+                       goto out;
+
+               steal_fallback = __rmqueue_fallback(zone, order, migratetype);

Oh and the variable can be probably replaced by calling __rmqueue_fallback directly in the if() below.


                /*
                 * Use MIGRATE_RESERVE rather than fail an allocation. goto
                 * is used because __rmqueue_smallest is an inline function
                 * and we want just one call site
                 */
-               if (!page) {
+               if (!steal_fallback)
                        migratetype = MIGRATE_RESERVE;
-                       goto retry_reserve;
-               }
+
+               goto retry;
        }

+out:
        trace_mm_page_alloc_zone_locked(page, order, migratetype);
        return page;
   }


--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to [email protected].  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]";> [email protected] </a>


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to