git: 925906a61caf - main - vm_fault: use iterator in populate()
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 25 Apr 2025 06:02:44 UTC
The branch main has been updated by dougm:
URL: https://cgit.FreeBSD.org/src/commit/?id=925906a61cafb44df8643e33aa781ba546e92082
commit 925906a61cafb44df8643e33aa781ba546e92082
Author: Doug Moore <dougm@FreeBSD.org>
AuthorDate: 2025-04-25 06:01:43 +0000
Commit: Doug Moore <dougm@FreeBSD.org>
CommitDate: 2025-04-25 06:01:43 +0000
vm_fault: use iterator in populate()
Use iterators instead of tailq_next pointers in vm_fault_populate().
Reviewed by: kib
Differential Revision: https://reviews.freebsd.org/D50010
---
sys/vm/vm_fault.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/sys/vm/vm_fault.c b/sys/vm/vm_fault.c
index c096bfaffe73..24fc457adcad 100644
--- a/sys/vm/vm_fault.c
+++ b/sys/vm/vm_fault.c
@@ -497,6 +497,7 @@ vm_fault_populate_cleanup(vm_object_t object, vm_pindex_t first,
static enum fault_status
vm_fault_populate(struct faultstate *fs)
{
+ struct pctrie_iter pages;
vm_offset_t vaddr;
vm_page_t m;
vm_pindex_t map_first, map_last, pager_first, pager_last, pidx;
@@ -623,9 +624,10 @@ vm_fault_populate(struct faultstate *fs)
pager_last);
pager_last = map_last;
}
- for (pidx = pager_first, m = vm_page_lookup(fs->first_object, pidx);
+ vm_page_iter_init(&pages, fs->first_object);
+ for (pidx = pager_first, m = vm_radix_iter_lookup(&pages, pidx);
pidx <= pager_last;
- pidx += npages, m = TAILQ_NEXT(&m[npages - 1], listq)) {
+ pidx += npages, m = vm_radix_iter_stride(&pages, npages)) {
vaddr = fs->entry->start + IDX_TO_OFF(pidx) - fs->entry->offset;
KASSERT(m != NULL && m->pindex == pidx,
("%s: pindex mismatch", __func__));