The patch titled Subject: mm-compaction-simplify-should_compact_retry-fix has been added to the -mm mm-unstable branch. Its filename is mm-compaction-simplify-should_compact_retry-fix.patch This patch will shortly appear at https://git.kernel.org/pub/scm/linux/kernel/git/akpm/25-new.git/tree/patches/mm-compaction-simplify-should_compact_retry-fix.patch This patch will later appear in the mm-unstable branch at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/process/submit-checklist.rst when testing your code *** The -mm tree is included into linux-next via the mm-everything branch at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm and is updated there every 2-3 working days ------------------------------------------------------ From: Johannes Weiner <hannes@xxxxxxxxxxx> Subject: mm-compaction-simplify-should_compact_retry-fix Date: Fri, 2 Jun 2023 10:47:05 -0400 Vlastimil points out an unintended change. Previously when hitting max_retries we'd bump the priority level and restart the loop. Now we bail out and fail instead. Restore the original behavior. Link: https://lkml.kernel.org/r/20230602144705.GB161817@xxxxxxxxxxx Signed-off-by: Johannes Weiner <hannes@xxxxxxxxxxx> Cc: Mel Gorman <mgorman@xxxxxxxxxxxxxxxxxxx> Cc: Michal Hocko <mhocko@xxxxxxxx> Cc: Vlastimil Babka <vbabka@xxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- mm/page_alloc.c | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) --- a/mm/page_alloc.c~mm-compaction-simplify-should_compact_retry-fix +++ a/mm/page_alloc.c @@ -3506,6 +3506,15 @@ should_compact_retry(struct alloc_contex return false; /* + * Compaction was skipped due to a lack of free order-0 + * migration targets. Continue if reclaim can help. + */ + if (compact_result == COMPACT_SKIPPED) { + ret = compaction_zonelist_suitable(ac, order, alloc_flags); + goto out; + } + + /* * Compaction managed to coalesce some page blocks, but the * allocation failed presumably due to a race. Retry some. */ @@ -3522,17 +3531,10 @@ should_compact_retry(struct alloc_contex if (order > PAGE_ALLOC_COSTLY_ORDER) max_retries /= 4; - ret = ++(*compaction_retries) <= max_retries; - goto out; - } - - /* - * Compaction was skipped due to a lack of free order-0 - * migration targets. Continue if reclaim can help. - */ - if (compact_result == COMPACT_SKIPPED) { - ret = compaction_zonelist_suitable(ac, order, alloc_flags); - goto out; + if (++(*compaction_retries) <= max_retries) { + ret = true; + goto out; + } } /* _ Patches currently in -mm which might be from hannes@xxxxxxxxxxx are mm-compaction-remove-compaction-result-helpers.patch mm-compaction-simplify-should_compact_retry.patch mm-compaction-simplify-should_compact_retry-fix.patch mm-compaction-refactor-__compaction_suitable.patch mm-compaction-refactor-__compaction_suitable-fix.patch mm-compaction-remove-unnecessary-is_via_compact_memory-checks.patch mm-compaction-drop-redundant-watermark-check-in-compaction_zonelist_suitable.patch mm-compaction-have-compaction_suitable-return-bool.patch mm-page_isolation-write-proper-kerneldoc.patch mm-compaction-avoid-gfp_nofs-abba-deadlock.patch