From: Liam R. Howlett Date: Mon, 4 Jan 2021 20:07:11 +0000 (-0500) Subject: mm/swapfile: Use maple tree iterator instead of vma linked list X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=c4af6fcf204cf01f643cc50056d348c4d257752e;p=users%2Fjedix%2Flinux-maple.git mm/swapfile: Use maple tree iterator instead of vma linked list Signed-off-by: Liam R. Howlett --- diff --git a/mm/swapfile.c b/mm/swapfile.c index 149e77454e3c..69003ab63e64 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c @@ -2116,17 +2116,24 @@ static int unuse_mm(struct mm_struct *mm, unsigned int type, { struct vm_area_struct *vma; int ret = 0; + MA_STATE(mas, &mm->mm_mt, 0, 0); mmap_read_lock(mm); - for (vma = mm->mmap; vma; vma = vma->vm_next) { + mas_lock(&mas); + mas_for_each(&mas, vma, ULONG_MAX) { if (vma->anon_vma) { ret = unuse_vma(vma, type, frontswap, fs_pages_to_unuse); if (ret) break; } + + mas_unlock(&mas); + mas_pause(&mas); cond_resched(); + mas_lock(&mas); } + mas_unlock(&mas); mmap_read_unlock(mm); return ret; }