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