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:
Alan Cox 2003-06-22 05:36:53 +00:00
parent f90445cf1f
commit c8567c3a77

View File

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