Page MenuHomeFreeBSD

D49932.id153971.diff
No OneTemporary

D49932.id153971.diff

Index: sys/vm/vm_object.c
===================================================================
--- sys/vm/vm_object.c
+++ sys/vm/vm_object.c
@@ -1332,6 +1332,7 @@
vm_object_madvise(vm_object_t object, vm_pindex_t pindex, vm_pindex_t end,
int advice)
{
+ struct pctrie_iter pages;
vm_pindex_t tpindex;
vm_object_t backing_object, tobject;
vm_page_t m, tm;
@@ -1339,13 +1340,15 @@
if (object == NULL)
return;
+ vm_page_iter_init(&pages, object);
relookup:
VM_OBJECT_WLOCK(object);
if (!vm_object_advice_applies(object, advice)) {
VM_OBJECT_WUNLOCK(object);
return;
}
- for (m = vm_page_find_least(object, pindex); pindex < end; pindex++) {
+ for (m = vm_radix_iter_lookup_ge(&pages, pindex); pindex < end;
+ pindex++) {
tobject = object;
/*
@@ -1394,7 +1397,7 @@
} else {
next_page:
tm = m;
- m = TAILQ_NEXT(m, listq);
+ m = vm_radix_iter_step(&pages);
}
/*
@@ -1420,6 +1423,7 @@
}
if (!vm_page_busy_sleep(tm, "madvpo", 0))
VM_OBJECT_WUNLOCK(tobject);
+ pctrie_iter_reset(&pages);
goto relookup;
}
vm_page_advise(tm, advice);

File Metadata

Mime Type
text/plain
Expires
Wed, Apr 8, 1:32 PM (10 h, 28 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
31100776
Default Alt Text
D49932.id153971.diff (1 KB)

Event Timeline