summaryrefslogtreecommitdiffstats
path: root/sys/kern
diff options
context:
space:
mode:
authorpjd <pjd@FreeBSD.org>2007-04-20 19:49:20 +0000
committerpjd <pjd@FreeBSD.org>2007-04-20 19:49:20 +0000
commitacc4c54fc554d034a6cffaf5db33b3b358447060 (patch)
treef7167974b4d7d23e72ad2eef699f6331f2b58140 /sys/kern
parentb388ff90ba28e24c1b28b7362d82d6480d60d996 (diff)
downloadFreeBSD-src-acc4c54fc554d034a6cffaf5db33b3b358447060.zip
FreeBSD-src-acc4c54fc554d034a6cffaf5db33b3b358447060.tar.gz
Don't reinvent vm_page_grab().
Reviewed by: ups
Diffstat (limited to 'sys/kern')
-rw-r--r--sys/kern/uipc_syscalls.c26
1 files changed, 3 insertions, 23 deletions
diff --git a/sys/kern/uipc_syscalls.c b/sys/kern/uipc_syscalls.c
index d9e9f10..53de5bc 100644
--- a/sys/kern/uipc_syscalls.c
+++ b/sys/kern/uipc_syscalls.c
@@ -2038,35 +2038,15 @@ retry_space:
VM_OBJECT_UNLOCK(obj);
break;
}
-retry_lookup:
+
/*
* Attempt to look up the page.
* Allocate if not found or
* wait and loop if busy.
*/
pindex = OFF_TO_IDX(off);
- pg = vm_page_lookup(obj, pindex);
- if (pg == NULL) {
- pg = vm_page_alloc(obj, pindex,
- VM_ALLOC_NOBUSY | VM_ALLOC_NORMAL |
- VM_ALLOC_WIRED);
- if (pg == NULL) {
- VM_OBJECT_UNLOCK(obj);
- VM_WAIT;
- VM_OBJECT_LOCK(obj);
- goto retry_lookup;
- }
- } else if (vm_page_sleep_if_busy(pg, TRUE, "sfpbsy"))
- goto retry_lookup;
- else {
- /*
- * Wire the page so it does not get
- * ripped out from under us.
- */
- vm_page_lock_queues();
- vm_page_wire(pg);
- vm_page_unlock_queues();
- }
+ pg = vm_page_grab(obj, pindex, VM_ALLOC_NOBUSY |
+ VM_ALLOC_NORMAL | VM_ALLOC_WIRED | VM_ALLOC_RETRY);
/*
* Check if page is valid for what we need,
OpenPOWER on IntegriCloud