svn commit: r236761 - user/attilio/vmc-playground/sys/vm
Attilio Rao
attilio at FreeBSD.org
Fri Jun 8 18:11:22 UTC 2012
Author: attilio
Date: Fri Jun 8 18:11:21 2012
New Revision: 236761
URL: http://svn.freebsd.org/changeset/base/236761
Log:
Revert r234033, 234007.
The target of this is getting at the point where the recovery path is
completely removed as we could count on pre-allocation once the
path compressed trie is implemented.
Modified:
user/attilio/vmc-playground/sys/vm/device_pager.c
Modified: user/attilio/vmc-playground/sys/vm/device_pager.c
==============================================================================
--- user/attilio/vmc-playground/sys/vm/device_pager.c Fri Jun 8 18:08:31 2012 (r236760)
+++ user/attilio/vmc-playground/sys/vm/device_pager.c Fri Jun 8 18:11:21 2012 (r236761)
@@ -52,8 +52,6 @@ __FBSDID("$FreeBSD$");
#include <vm/vm_pager.h>
#include <vm/uma.h>
-#include <machine/cpu.h>
-
static void dev_pager_init(void);
static vm_object_t dev_pager_alloc(void *, vm_ooffset_t, vm_prot_t,
vm_ooffset_t, struct ucred *);
@@ -298,7 +296,7 @@ old_dev_pager_fault(vm_object_t object,
struct file *fpop;
struct thread *td;
vm_memattr_t memattr;
- int i, ref, ret;
+ int ref, ret;
pidx = OFF_TO_IDX(offset);
memattr = object->memattr;
@@ -346,14 +344,14 @@ old_dev_pager_fault(vm_object_t object,
*/
page = vm_page_getfake(paddr, memattr);
VM_OBJECT_LOCK(object);
+ if (vm_page_insert(page, object, offset) != 0) {
+ vm_page_putfake(page);
+ return (VM_PAGER_FAIL);
+ }
vm_page_lock(*mres);
vm_page_free(*mres);
vm_page_unlock(*mres);
*mres = page;
- while (vm_page_insert(page, object, pidx) != 0) {
- for (i = 0; i < 10000000; i++)
- cpu_spinwait();
- }
}
page->valid = VM_PAGE_BITS_ALL;
return (VM_PAGER_OK);
More information about the svn-src-user
mailing list