]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
sched: Convert to vma iterator
authorLiam R. Howlett <Liam.Howlett@Oracle.com>
Wed, 9 Nov 2022 19:31:34 +0000 (14:31 -0500)
committerLiam R. Howlett <Liam.Howlett@oracle.com>
Tue, 13 Dec 2022 20:58:35 +0000 (15:58 -0500)
Use the vma iterator so that the iterator can be invalidated or updated
to avoid each caller doing so.

Signed-off-by: Liam R. Howlett <Liam.Howlett@oracle.com>
kernel/sched/fair.c

index e4a0b8bd941c78446353d275d4b22e283acd21f9..aa780a00bf4ef35d5678a658d5bf9cd013e89930 100644 (file)
@@ -2926,11 +2926,11 @@ static void task_numa_work(struct callback_head *work)
        struct task_struct *p = current;
        struct mm_struct *mm = p->mm;
        u64 runtime = p->se.sum_exec_runtime;
-       MA_STATE(mas, &mm->mm_mt, 0, 0);
        struct vm_area_struct *vma;
        unsigned long start, end;
        unsigned long nr_pte_updates = 0;
        long pages, virtpages;
+       struct vma_iterator vmi;
 
        SCHED_WARN_ON(p != container_of(work, struct task_struct, numa_work));
 
@@ -2983,16 +2983,16 @@ static void task_numa_work(struct callback_head *work)
 
        if (!mmap_read_trylock(mm))
                return;
-       mas_set(&mas, start);
-       vma = mas_find(&mas, ULONG_MAX);
+       vma_iter_init(&vmi, mm, start);
+       vma = vma_next(&vmi);
        if (!vma) {
                reset_ptenuma_scan(p);
                start = 0;
-               mas_set(&mas, start);
-               vma = mas_find(&mas, ULONG_MAX);
+               vma_iter_set(&vmi, start);
+               vma = vma_next(&vmi);
        }
 
-       for (; vma; vma = mas_find(&mas, ULONG_MAX)) {
+       do {
                if (!vma_migratable(vma) || !vma_policy_mof(vma) ||
                        is_vm_hugetlb_page(vma) || (vma->vm_flags & VM_MIXEDMAP)) {
                        continue;
@@ -3039,7 +3039,7 @@ static void task_numa_work(struct callback_head *work)
 
                        cond_resched();
                } while (end != vma->vm_end);
-       }
+       } for_each_vma(vmi, vma);
 
 out:
        /*