Page MenuHomeFreeBSD

D14625.diff
No OneTemporary

D14625.diff

Index: head/sys/vm/vm_fault.c
===================================================================
--- head/sys/vm/vm_fault.c
+++ head/sys/vm/vm_fault.c
@@ -682,7 +682,7 @@
/*
* Reference the page before unlocking and
* sleeping so that the page daemon is less
- * likely to reclaim it.
+ * likely to reclaim it.
*/
vm_page_aflag_set(fs.m, PGA_REFERENCED);
if (fs.object != fs.first_object) {
@@ -710,9 +710,6 @@
vm_object_deallocate(fs.first_object);
goto RetryFault;
}
- vm_page_lock(fs.m);
- vm_page_remque(fs.m);
- vm_page_unlock(fs.m);
/*
* Mark page busy for other processes, and the
@@ -723,7 +720,7 @@
vm_page_xbusy(fs.m);
if (fs.m->valid != VM_PAGE_BITS_ALL)
goto readrest;
- break;
+ break; /* break to PAGE HAS BEEN FOUND */
}
KASSERT(fs.m == NULL, ("fs.m should be NULL, not %p", fs.m));
@@ -1105,6 +1102,7 @@
*/
fs.object == fs.first_object->backing_object) {
vm_page_lock(fs.m);
+ vm_page_remque(fs.m);
vm_page_remove(fs.m);
vm_page_unlock(fs.m);
vm_page_lock(fs.first_m);

File Metadata

Mime Type
text/plain
Expires
Sat, Aug 22, 10:59 AM (19 h, 15 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
36956863
Default Alt Text
D14625.diff (1 KB)

Event Timeline