Prior to r188331 a map entry's last read offset was only updated by a hard
fault. In r188331 this update was relocated because of synchronization changes to a place where it would occur on both hard and soft faults. This change again restricts the update to hard faults.
This commit is contained in:
parent
e0bc0fad3d
commit
5758fe7185
@ -868,13 +868,17 @@ RetryFault:;
|
||||
}
|
||||
}
|
||||
/*
|
||||
* 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);
|
||||
|
Loading…
Reference in New Issue
Block a user