summaryrefslogtreecommitdiffstats
path: root/sys/vm/vm_fault.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/vm/vm_fault.c')
-rw-r--r--sys/vm/vm_fault.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/sys/vm/vm_fault.c b/sys/vm/vm_fault.c
index e647288..bd7de42 100644
--- a/sys/vm/vm_fault.c
+++ b/sys/vm/vm_fault.c
@@ -868,13 +868,17 @@ vnode_locked:
}
}
/*
- * update lastr imperfectly (we do not know how much
- * getpages will actually read), but good enough.
+ * If the page was filled by a pager, update the map entry's
+ * last read offset. Since the pager does not return the
+ * actual set of pages that it read, this update is based on
+ * the requested set. Typically, the requested and actual
+ * sets are the same.
*
* XXX The following assignment modifies the map
* without holding a write lock on it.
*/
- fs.entry->lastr = fs.pindex + faultcount - behind;
+ if (hardfault)
+ fs.entry->lastr = fs.pindex + faultcount - behind;
if (prot & VM_PROT_WRITE) {
vm_object_set_writeable_dirty(fs.object);
OpenPOWER on IntegriCloud