As vm_fault() descends the chain of backing objects, set paging-in-
progress on the next object before clearing it on the current object.
This commit is contained in:
parent
f90445cf1f
commit
c8567c3a77
@ -642,16 +642,16 @@ RetryFault:;
|
||||
fs.m->valid = VM_PAGE_BITS_ALL;
|
||||
break; /* break to PAGE HAS BEEN FOUND */
|
||||
} else {
|
||||
if (fs.object != fs.first_object) {
|
||||
VM_OBJECT_LOCK(fs.object);
|
||||
vm_object_pip_wakeup(fs.object);
|
||||
VM_OBJECT_UNLOCK(fs.object);
|
||||
}
|
||||
KASSERT(fs.object != next_object, ("object loop %p", next_object));
|
||||
fs.object = next_object;
|
||||
KASSERT(fs.object != next_object,
|
||||
("object loop %p", next_object));
|
||||
VM_OBJECT_LOCK(next_object);
|
||||
vm_object_pip_add(next_object, 1);
|
||||
VM_OBJECT_UNLOCK(next_object);
|
||||
VM_OBJECT_LOCK(fs.object);
|
||||
vm_object_pip_add(fs.object, 1);
|
||||
if (fs.object != fs.first_object)
|
||||
vm_object_pip_wakeup(fs.object);
|
||||
VM_OBJECT_UNLOCK(fs.object);
|
||||
fs.object = next_object;
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user