On 3/18/26 19:59, Nico Pache wrote: > > > On 3/17/26 4:35 AM, Lorenzo Stoakes (Oracle) wrote: >> On Wed, Feb 25, 2026 at 08:26:31PM -0700, Nico Pache wrote: >>> There are cases where, if an attempted collapse fails, all subsequent >>> orders are guaranteed to also fail. Avoid these collapse attempts by >>> bailing out early. >>> >>> Signed-off-by: Nico Pache <[email protected]> >> >> With David's concern addressed: >> >> Reviewed-by: Lorenzo Stoakes (Oracle) <[email protected]> >> >>> --- >>> mm/khugepaged.c | 35 ++++++++++++++++++++++++++++++++++- >>> 1 file changed, 34 insertions(+), 1 deletion(-) >>> >>> diff --git a/mm/khugepaged.c b/mm/khugepaged.c >>> index 1c3711ed4513..388d3f2537e2 100644 >>> --- a/mm/khugepaged.c >>> +++ b/mm/khugepaged.c >>> @@ -1492,9 +1492,42 @@ static int mthp_collapse(struct mm_struct *mm, >>> unsigned long address, >>> ret = collapse_huge_page(mm, collapse_address, >>> referenced, >>> unmapped, cc, mmap_locked, >>> order); >>> - if (ret == SCAN_SUCCEED) { >>> + >>> + switch (ret) { >>> + /* Cases were we continue to next collapse candidate */ >>> + case SCAN_SUCCEED: >>> collapsed += nr_pte_entries; >>> + fallthrough; >>> + case SCAN_PTE_MAPPED_HUGEPAGE: >>> continue; >>> + /* Cases were lower orders might still succeed */ >>> + case SCAN_LACK_REFERENCED_PAGE: >>> + case SCAN_EXCEED_NONE_PTE: >>> + case SCAN_EXCEED_SWAP_PTE: >>> + case SCAN_EXCEED_SHARED_PTE: >>> + case SCAN_PAGE_LOCK: >>> + case SCAN_PAGE_COUNT: >>> + case SCAN_PAGE_LRU: >>> + case SCAN_PAGE_NULL: >>> + case SCAN_DEL_PAGE_LRU: >>> + case SCAN_PTE_NON_PRESENT: >>> + case SCAN_PTE_UFFD_WP: >>> + case SCAN_ALLOC_HUGE_PAGE_FAIL: >>> + goto next_order; >>> + /* Cases were no further collapse is possible */ >>> + case SCAN_CGROUP_CHARGE_FAIL: >>> + case SCAN_COPY_MC: >>> + case SCAN_ADDRESS_RANGE: >>> + case SCAN_NO_PTE_TABLE: >>> + case SCAN_ANY_PROCESS: >>> + case SCAN_VMA_NULL: >>> + case SCAN_VMA_CHECK: >>> + case SCAN_SCAN_ABORT: >>> + case SCAN_PAGE_ANON: >>> + case SCAN_PMD_MAPPED: >>> + case SCAN_FAIL: >>> + default: >> >> Agree with david, let's spell them out please :) > > I believe David is arguing for the opposite. To drop all these spelt out cases > and just leave the default case. > > @david is that correct or did I misunderstand that.
Either spell all out (no default) OR add a default. I prefer to just ... use the default :) -- Cheers, David
