| From: "Liam R. Howlett" <Liam.Howlett@Oracle.com> |
| Subject: sched: convert to vma iterator |
| Date: Fri, 20 Jan 2023 11:26:23 -0500 |
| |
| Use the vma iterator so that the iterator can be invalidated or updated to |
| avoid each caller doing so. |
| |
| Link: https://lkml.kernel.org/r/20230120162650.984577-23-Liam.Howlett@oracle.com |
| Signed-off-by: Liam R. Howlett <Liam.Howlett@oracle.com> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| --- |
| |
| kernel/sched/fair.c | 14 +++++++------- |
| 1 file changed, 7 insertions(+), 7 deletions(-) |
| |
| --- a/kernel/sched/fair.c~sched-convert-to-vma-iterator |
| +++ a/kernel/sched/fair.c |
| @@ -2938,11 +2938,11 @@ static void task_numa_work(struct callba |
| 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)); |
| |
| @@ -2995,16 +2995,16 @@ static void task_numa_work(struct callba |
| |
| 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; |
| @@ -3051,7 +3051,7 @@ static void task_numa_work(struct callba |
| |
| cond_resched(); |
| } while (end != vma->vm_end); |
| - } |
| + } for_each_vma(vmi, vma); |
| |
| out: |
| /* |
| _ |