From: Liam R. Howlett Date: Mon, 4 Jan 2021 19:57:47 +0000 (-0500) Subject: mm/khugepaged: Use maple tree iterators instead of vma linked list X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=57bbfb4e77c29dd0d4306c9e7c2de2d1cd601f06;p=users%2Fjedix%2Flinux-maple.git mm/khugepaged: Use maple tree iterators instead of vma linked list Signed-off-by: Liam R. Howlett --- diff --git a/mm/khugepaged.c b/mm/khugepaged.c index 8369d9620f6d..1e22a5a2e25d 100644 --- a/mm/khugepaged.c +++ b/mm/khugepaged.c @@ -2073,6 +2073,7 @@ static unsigned int khugepaged_scan_mm_slot(unsigned int pages, struct mm_struct *mm; struct vm_area_struct *vma; int progress = 0; + MA_STATE(mas, NULL, 0, 0); VM_BUG_ON(!pages); lockdep_assert_held(&khugepaged_mm_lock); @@ -2089,18 +2090,20 @@ static unsigned int khugepaged_scan_mm_slot(unsigned int pages, khugepaged_collapse_pte_mapped_thps(mm_slot); mm = mm_slot->mm; + mas.tree = &mm->mm_mt; /* * Don't wait for semaphore (to avoid long wait times). Just move to * the next mm on the list. */ vma = NULL; + mas_set(&mas, khugepaged_scan.address); if (unlikely(!mmap_read_trylock(mm))) goto breakouterloop_mmap_lock; if (likely(!khugepaged_test_exit(mm))) - vma = find_vma(mm, khugepaged_scan.address); + vma = mas_find(&mas, ULONG_MAX); progress++; - for (; vma; vma = vma->vm_next) { + mas_for_each(&mas, vma, ULONG_MAX) { unsigned long hstart, hend; cond_resched();