On Fri, May 16, 2025 at 11:36 AM Liam R. Howlett <Liam.Howlett@xxxxxxxxxx> wrote: > > * Nico Pache <npache@xxxxxxxxxx> [250514 23:23]: > > functions in khugepaged.c use a mix of hpage_collapse and khugepaged > > as the function prefix. > > > > rename all of them to khugepaged to keep things consistent and slightly > > shorten the function names. > > I don't like what was done here, we've lost the context of what these > functions are used for (collapse). Are they used for other things > besides collapse? Hi Liam, Most of the renamed functions are used by the daemon to determine the state of the khugepaged operations. You could argue that madvise_collapse is not part of the daemon, and a couple of them are both khugepaged and madvise_collapse, but what I do in the subsequent patch is *mostly* unify madvise_collapse and khugepaged. I personally believe this rename makes sense (and it was recommended by David H.) -- Nico > > I'd rather drop the prefix entirely than drop collapse from them all. > They are all static, so do we really need khugepaged_ at the start of > every static function in khugepaged.c? > > > > > > Reviewed-by: Zi Yan <ziy@xxxxxxxxxx> > > Reviewed-by: Baolin Wang <baolin.wang@xxxxxxxxxxxxxxxxx> > > Signed-off-by: Nico Pache <npache@xxxxxxxxxx> > > --- > > mm/khugepaged.c | 42 +++++++++++++++++++++--------------------- > > 1 file changed, 21 insertions(+), 21 deletions(-) > > > > diff --git a/mm/khugepaged.c b/mm/khugepaged.c > > index cdf5a581368b..806bcd8c5185 100644 > > --- a/mm/khugepaged.c > > +++ b/mm/khugepaged.c > > @@ -402,14 +402,14 @@ void __init khugepaged_destroy(void) > > kmem_cache_destroy(mm_slot_cache); > > } > > > > -static inline int hpage_collapse_test_exit(struct mm_struct *mm) > > +static inline int khugepaged_test_exit(struct mm_struct *mm) > > { > > return atomic_read(&mm->mm_users) == 0; > > } > > > > -static inline int hpage_collapse_test_exit_or_disable(struct mm_struct *mm) > > +static inline int khugepaged_test_exit_or_disable(struct mm_struct *mm) > > { > > - return hpage_collapse_test_exit(mm) || > > + return khugepaged_test_exit(mm) || > > test_bit(MMF_DISABLE_THP, &mm->flags); > > } > > > > @@ -444,7 +444,7 @@ void __khugepaged_enter(struct mm_struct *mm) > > int wakeup; > > > > /* __khugepaged_exit() must not run from under us */ > > - VM_BUG_ON_MM(hpage_collapse_test_exit(mm), mm); > > + VM_BUG_ON_MM(khugepaged_test_exit(mm), mm); > > if (unlikely(test_and_set_bit(MMF_VM_HUGEPAGE, &mm->flags))) > > return; > > > > @@ -503,7 +503,7 @@ void __khugepaged_exit(struct mm_struct *mm) > > } else if (mm_slot) { > > /* > > * This is required to serialize against > > - * hpage_collapse_test_exit() (which is guaranteed to run > > + * khugepaged_test_exit() (which is guaranteed to run > > * under mmap sem read mode). Stop here (after we return all > > * pagetables will be destroyed) until khugepaged has finished > > * working on the pagetables under the mmap_lock. > > @@ -851,7 +851,7 @@ struct collapse_control khugepaged_collapse_control = { > > .is_khugepaged = true, > > }; > > > > -static bool hpage_collapse_scan_abort(int nid, struct collapse_control *cc) > > +static bool khugepaged_scan_abort(int nid, struct collapse_control *cc) > > { > > int i; > > > > @@ -886,7 +886,7 @@ static inline gfp_t alloc_hugepage_khugepaged_gfpmask(void) > > } > > > > #ifdef CONFIG_NUMA > > -static int hpage_collapse_find_target_node(struct collapse_control *cc) > > +static int khugepaged_find_target_node(struct collapse_control *cc) > > { > > int nid, target_node = 0, max_value = 0; > > > > @@ -905,7 +905,7 @@ static int hpage_collapse_find_target_node(struct collapse_control *cc) > > return target_node; > > } > > #else > > -static int hpage_collapse_find_target_node(struct collapse_control *cc) > > +static int khugepaged_find_target_node(struct collapse_control *cc) > > { > > return 0; > > } > > @@ -925,7 +925,7 @@ static int hugepage_vma_revalidate(struct mm_struct *mm, unsigned long address, > > struct vm_area_struct *vma; > > unsigned long tva_flags = cc->is_khugepaged ? TVA_ENFORCE_SYSFS : 0; > > > > - if (unlikely(hpage_collapse_test_exit_or_disable(mm))) > > + if (unlikely(khugepaged_test_exit_or_disable(mm))) > > return SCAN_ANY_PROCESS; > > > > *vmap = vma = find_vma(mm, address); > > @@ -992,7 +992,7 @@ static int check_pmd_still_valid(struct mm_struct *mm, > > > > /* > > * Bring missing pages in from swap, to complete THP collapse. > > - * Only done if hpage_collapse_scan_pmd believes it is worthwhile. > > + * Only done if khugepaged_scan_pmd believes it is worthwhile. > > * > > * Called and returns without pte mapped or spinlocks held. > > * Returns result: if not SCAN_SUCCEED, mmap_lock has been released. > > @@ -1078,7 +1078,7 @@ static int alloc_charge_folio(struct folio **foliop, struct mm_struct *mm, > > { > > gfp_t gfp = (cc->is_khugepaged ? alloc_hugepage_khugepaged_gfpmask() : > > GFP_TRANSHUGE); > > - int node = hpage_collapse_find_target_node(cc); > > + int node = khugepaged_find_target_node(cc); > > struct folio *folio; > > > > folio = __folio_alloc(gfp, HPAGE_PMD_ORDER, node, &cc->alloc_nmask); > > @@ -1264,7 +1264,7 @@ static int collapse_huge_page(struct mm_struct *mm, unsigned long address, > > return result; > > } > > > > -static int hpage_collapse_scan_pmd(struct mm_struct *mm, > > +static int khugepaged_scan_pmd(struct mm_struct *mm, > > struct vm_area_struct *vma, > > unsigned long address, bool *mmap_locked, > > struct collapse_control *cc) > > @@ -1378,7 +1378,7 @@ static int hpage_collapse_scan_pmd(struct mm_struct *mm, > > * hit record. > > */ > > node = folio_nid(folio); > > - if (hpage_collapse_scan_abort(node, cc)) { > > + if (khugepaged_scan_abort(node, cc)) { > > result = SCAN_SCAN_ABORT; > > goto out_unmap; > > } > > @@ -1447,7 +1447,7 @@ static void collect_mm_slot(struct khugepaged_mm_slot *mm_slot) > > > > lockdep_assert_held(&khugepaged_mm_lock); > > > > - if (hpage_collapse_test_exit(mm)) { > > + if (khugepaged_test_exit(mm)) { > > /* free mm_slot */ > > hash_del(&slot->hash); > > list_del(&slot->mm_node); > > @@ -1740,7 +1740,7 @@ static void retract_page_tables(struct address_space *mapping, pgoff_t pgoff) > > if (find_pmd_or_thp_or_none(mm, addr, &pmd) != SCAN_SUCCEED) > > continue; > > > > - if (hpage_collapse_test_exit(mm)) > > + if (khugepaged_test_exit(mm)) > > continue; > > /* > > * When a vma is registered with uffd-wp, we cannot recycle > > @@ -2262,7 +2262,7 @@ static int collapse_file(struct mm_struct *mm, unsigned long addr, > > return result; > > } > > > > -static int hpage_collapse_scan_file(struct mm_struct *mm, unsigned long addr, > > +static int khugepaged_scan_file(struct mm_struct *mm, unsigned long addr, > > struct file *file, pgoff_t start, > > struct collapse_control *cc) > > { > > @@ -2307,7 +2307,7 @@ static int hpage_collapse_scan_file(struct mm_struct *mm, unsigned long addr, > > } > > > > node = folio_nid(folio); > > - if (hpage_collapse_scan_abort(node, cc)) { > > + if (khugepaged_scan_abort(node, cc)) { > > result = SCAN_SCAN_ABORT; > > break; > > } > > @@ -2391,7 +2391,7 @@ static unsigned int khugepaged_scan_mm_slot(unsigned int pages, int *result, > > goto breakouterloop_mmap_lock; > > > > progress++; > > - if (unlikely(hpage_collapse_test_exit_or_disable(mm))) > > + if (unlikely(khugepaged_test_exit_or_disable(mm))) > > goto breakouterloop; > > > > vma_iter_init(&vmi, mm, khugepaged_scan.address); > > @@ -2399,7 +2399,7 @@ static unsigned int khugepaged_scan_mm_slot(unsigned int pages, int *result, > > unsigned long hstart, hend; > > > > cond_resched(); > > - if (unlikely(hpage_collapse_test_exit_or_disable(mm))) { > > + if (unlikely(khugepaged_test_exit_or_disable(mm))) { > > progress++; > > break; > > } > > @@ -2421,7 +2421,7 @@ static unsigned int khugepaged_scan_mm_slot(unsigned int pages, int *result, > > bool mmap_locked = true; > > > > cond_resched(); > > - if (unlikely(hpage_collapse_test_exit_or_disable(mm))) > > + if (unlikely(khugepaged_test_exit_or_disable(mm))) > > goto breakouterloop; > > > > VM_BUG_ON(khugepaged_scan.address < hstart || > > @@ -2481,7 +2481,7 @@ static unsigned int khugepaged_scan_mm_slot(unsigned int pages, int *result, > > * Release the current mm_slot if this mm is about to die, or > > * if we scanned all vmas of this mm. > > */ > > - if (hpage_collapse_test_exit(mm) || !vma) { > > + if (khugepaged_test_exit(mm) || !vma) { > > /* > > * Make sure that if mm_users is reaching zero while > > * khugepaged runs here, khugepaged_exit will find > > -- > > 2.49.0 > > >