git: c802dd74bbcf - main - vm_object: use iterator in populate()
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 25 Apr 2025 00:10:28 UTC
The branch main has been updated by dougm:
URL: https://cgit.FreeBSD.org/src/commit/?id=c802dd74bbcf9cd55d4dbd368309a5aa6884f3a8
commit c802dd74bbcf9cd55d4dbd368309a5aa6884f3a8
Author: Doug Moore <dougm@FreeBSD.org>
AuthorDate: 2025-04-25 00:09:09 +0000
Commit: Doug Moore <dougm@FreeBSD.org>
CommitDate: 2025-04-25 00:09:09 +0000
vm_object: use iterator in populate()
Use an iterator instead of tailq pointers in vm_object_populate().
Reviewed by: kib
Differential Revision: https://reviews.freebsd.org/D49938
---
sys/vm/vm_object.c | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/sys/vm/vm_object.c b/sys/vm/vm_object.c
index e301114f800a..5f505f87de67 100644
--- a/sys/vm/vm_object.c
+++ b/sys/vm/vm_object.c
@@ -2133,13 +2133,16 @@ vm_object_page_noreuse(vm_object_t object, vm_pindex_t start, vm_pindex_t end)
boolean_t
vm_object_populate(vm_object_t object, vm_pindex_t start, vm_pindex_t end)
{
+ struct pctrie_iter pages;
vm_page_t m;
vm_pindex_t pindex;
int rv;
+ vm_page_iter_init(&pages, object);
VM_OBJECT_ASSERT_WLOCKED(object);
for (pindex = start; pindex < end; pindex++) {
- rv = vm_page_grab_valid(&m, object, pindex, VM_ALLOC_NORMAL);
+ rv = vm_page_grab_valid_iter(&m, object, &pages, pindex,
+ VM_ALLOC_NORMAL);
if (rv != VM_PAGER_OK)
break;
@@ -2149,11 +2152,9 @@ vm_object_populate(vm_object_t object, vm_pindex_t start, vm_pindex_t end)
*/
}
if (pindex > start) {
- m = vm_page_lookup(object, start);
- while (m != NULL && m->pindex < pindex) {
+ pages.limit = pindex;
+ VM_RADIX_FORALL_FROM(m, &pages, start)
vm_page_xunbusy(m);
- m = TAILQ_NEXT(m, listq);
- }
}
return (pindex == end);
}