Do not sleep waiting for the MAP_ENTRY_IN_TRANSITION state ending with

the vnode locked.

Review:	https://reviews.freebsd.org/D2381
Submitted by:	Conrad Meyer, Attilio Rao
MFC after:	1 week
This commit is contained in:
Konstantin Belousov 2015-04-28 08:20:23 +00:00
parent 37a9b4136e
commit 85af31a464

View File

@ -348,6 +348,10 @@ RetryFault:;
vm_map_lock(fs.map);
if (vm_map_lookup_entry(fs.map, vaddr, &fs.entry) &&
(fs.entry->eflags & MAP_ENTRY_IN_TRANSITION)) {
if (fs.vp != NULL) {
vput(fs.vp);
fs.vp = NULL;
}
fs.entry->eflags |= MAP_ENTRY_NEEDS_WAKEUP;
vm_map_unlock_and_wait(fs.map, 0);
} else