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:
Alan Cox 2018-05-28 04:38:10 +00:00
parent 2ebb808f8c
commit fccdefa1a1

View File

@ -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;