Page MenuHomeFreeBSD

D49987.diff
No OneTemporary

D49987.diff

diff --git a/sys/vm/vm_map.c b/sys/vm/vm_map.c
--- a/sys/vm/vm_map.c
+++ b/sys/vm/vm_map.c
@@ -2678,7 +2678,7 @@
struct pctrie_iter pages;
vm_offset_t start;
vm_page_t p, p_start;
- vm_pindex_t mask, psize, threshold, tmpidx;
+ vm_pindex_t jump, mask, psize, threshold, tmpidx;
int psind;
if ((prot & (VM_PROT_READ | VM_PROT_EXECUTE)) == 0 || object == NULL)
@@ -2710,7 +2710,7 @@
vm_page_iter_limit_init(&pages, object, pindex + psize);
for (p = vm_radix_iter_lookup_ge(&pages, pindex); p != NULL;
- p = vm_radix_iter_jump(&pages, mask + 1)) {
+ p = vm_radix_iter_jump(&pages, jump)) {
/*
* don't allow an madvise to blow away our really
* free pages allocating pv entries.
@@ -2723,7 +2723,7 @@
psize = tmpidx;
break;
}
- mask = 0;
+ jump = 1;
if (vm_page_all_valid(p)) {
if (p_start == NULL) {
start = addr + ptoa(tmpidx);
@@ -2737,6 +2737,7 @@
if (tmpidx + mask < psize &&
vm_page_ps_test(p, psind,
PS_ALL_VALID, NULL)) {
+ jump += mask;
threshold += mask;
break;
}

File Metadata

Mime Type
text/plain
Expires
Thu, May 1, 1:04 PM (17 h, 6 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
17779087
Default Alt Text
D49987.diff (1 KB)

Event Timeline