mirror of
https://git.FreeBSD.org/src.git
synced 2025-01-25 16:13:17 +00:00
Extend the scope of the page queues/fields locking in vm_freeze_copyopts()
to cover pmap_remove_all(). Approved by: re
This commit is contained in:
parent
87b45ed576
commit
13dc71ed40
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=107200
@ -1933,7 +1933,9 @@ vm_freeze_copyopts(vm_object_t object, vm_pindex_t froma, vm_pindex_t toa)
|
||||
if (m_out->valid == 0) {
|
||||
m_in = vm_page_grab(object, bo_pindex + idx,
|
||||
VM_ALLOC_NORMAL | VM_ALLOC_RETRY);
|
||||
vm_page_lock_queues();
|
||||
if (m_in->valid == 0) {
|
||||
vm_page_unlock_queues();
|
||||
rv = vm_pager_get_pages(object, &m_in, 1, 0);
|
||||
if (rv != VM_PAGER_OK) {
|
||||
printf("vm_freeze_copyopts: cannot read page from file: %lx\n", (long)m_in->pindex);
|
||||
@ -1941,10 +1943,10 @@ vm_freeze_copyopts(vm_object_t object, vm_pindex_t froma, vm_pindex_t toa)
|
||||
}
|
||||
vm_page_lock_queues();
|
||||
vm_page_deactivate(m_in);
|
||||
vm_page_unlock_queues();
|
||||
}
|
||||
|
||||
pmap_remove_all(m_in);
|
||||
vm_page_unlock_queues();
|
||||
pmap_copy_page(m_in, m_out);
|
||||
m_out->valid = m_in->valid;
|
||||
vm_page_dirty(m_out);
|
||||
|
Loading…
Reference in New Issue
Block a user