diff options
| author | Alan Cox <alc@FreeBSD.org> | 2002-11-24 06:13:38 +0000 |
|---|---|---|
| committer | Alan Cox <alc@FreeBSD.org> | 2002-11-24 06:13:38 +0000 |
| commit | 13dc71ed4048645aa7c9a9d2ff6e9e5516772306 (patch) | |
| tree | 0a47c36737222e313d8571677f4536dd6e3d42b9 /sys/vm/vm_object.c | |
| parent | 87b45ed5760436016dc13f285f9f6b0d5fa5e0e4 (diff) | |
Notes
Diffstat (limited to 'sys/vm/vm_object.c')
| -rw-r--r-- | sys/vm/vm_object.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/vm/vm_object.c b/sys/vm/vm_object.c index ec59e9b09267..b71d9c85d03d 100644 --- a/sys/vm/vm_object.c +++ b/sys/vm/vm_object.c @@ -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); |
