Eliminate duplicate assertions. We assert at the start of vm_fault_hold()
that the map entry is wired if the caller passes the flag VM_FAULT_WIRE. Eliminate the same assertion, but spelled differently, at the end of vm_fault_hold() and vm_fault_populate(). Repeat the assertion only if the map is unlocked and the map lookup must be repeated. Reviewed by: kib MFC after: 10 days Differential Revision: https://reviews.freebsd.org/D15582
This commit is contained in:
parent
2ebb808f8c
commit
fccdefa1a1
@ -482,10 +482,9 @@ vm_fault_populate(struct faultstate *fs, vm_prot_t prot, int fault_type,
|
||||
m_mtx = NULL;
|
||||
for (i = 0; i < npages; i++) {
|
||||
vm_page_change_lock(&m[i], &m_mtx);
|
||||
if ((fault_flags & VM_FAULT_WIRE) != 0) {
|
||||
KASSERT(wired, ("VM_FAULT_WIRE && !wired"));
|
||||
if ((fault_flags & VM_FAULT_WIRE) != 0)
|
||||
vm_page_wire(&m[i]);
|
||||
} else
|
||||
else
|
||||
vm_page_activate(&m[i]);
|
||||
if (m_hold != NULL && m[i].pindex == fs->first_pindex) {
|
||||
*m_hold = &m[i];
|
||||
@ -1247,6 +1246,10 @@ RetryFault:;
|
||||
unlock_and_deallocate(&fs);
|
||||
goto RetryFault;
|
||||
}
|
||||
|
||||
/* Reassert because wired may have changed. */
|
||||
KASSERT(wired || (fault_flags & VM_FAULT_WIRE) == 0,
|
||||
("!wired && VM_FAULT_WIRE"));
|
||||
}
|
||||
}
|
||||
|
||||
@ -1290,10 +1293,9 @@ RetryFault:;
|
||||
* If the page is not wired down, then put it where the pageout daemon
|
||||
* can find it.
|
||||
*/
|
||||
if ((fault_flags & VM_FAULT_WIRE) != 0) {
|
||||
KASSERT(wired, ("VM_FAULT_WIRE && !wired"));
|
||||
if ((fault_flags & VM_FAULT_WIRE) != 0)
|
||||
vm_page_wire(fs.m);
|
||||
} else
|
||||
else
|
||||
vm_page_activate(fs.m);
|
||||
if (m_hold != NULL) {
|
||||
*m_hold = fs.m;
|
||||
|
Loading…
Reference in New Issue
Block a user