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/

