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); }