Changeset View
Changeset View
Standalone View
Standalone View
sys/vm/vm_fault.c
Show First 20 Lines • Show All 371 Lines • ▼ Show 20 Lines | out: | ||||
return (rv); | return (rv); | ||||
} | } | ||||
static void | static void | ||||
vm_fault_restore_map_lock(struct faultstate *fs) | vm_fault_restore_map_lock(struct faultstate *fs) | ||||
{ | { | ||||
VM_OBJECT_ASSERT_WLOCKED(fs->first_object); | VM_OBJECT_ASSERT_WLOCKED(fs->first_object); | ||||
MPASS(REFCOUNT_COUNT(fs->first_object->paging_in_progress) > 0); | MPASS(blockcount_read(&fs->first_object->paging_in_progress) > 0); | ||||
if (!vm_map_trylock_read(fs->map)) { | if (!vm_map_trylock_read(fs->map)) { | ||||
VM_OBJECT_WUNLOCK(fs->first_object); | VM_OBJECT_WUNLOCK(fs->first_object); | ||||
vm_map_lock_read(fs->map); | vm_map_lock_read(fs->map); | ||||
VM_OBJECT_WLOCK(fs->first_object); | VM_OBJECT_WLOCK(fs->first_object); | ||||
} | } | ||||
fs->lookup_still_valid = true; | fs->lookup_still_valid = true; | ||||
} | } | ||||
Show All 34 Lines | |||||
{ | { | ||||
vm_offset_t vaddr; | vm_offset_t vaddr; | ||||
vm_page_t m; | vm_page_t m; | ||||
vm_pindex_t map_first, map_last, pager_first, pager_last, pidx; | vm_pindex_t map_first, map_last, pager_first, pager_last, pidx; | ||||
int i, npages, psind, rv; | int i, npages, psind, rv; | ||||
MPASS(fs->object == fs->first_object); | MPASS(fs->object == fs->first_object); | ||||
VM_OBJECT_ASSERT_WLOCKED(fs->first_object); | VM_OBJECT_ASSERT_WLOCKED(fs->first_object); | ||||
MPASS(REFCOUNT_COUNT(fs->first_object->paging_in_progress) > 0); | MPASS(blockcount_read(&fs->first_object->paging_in_progress) > 0); | ||||
MPASS(fs->first_object->backing_object == NULL); | MPASS(fs->first_object->backing_object == NULL); | ||||
MPASS(fs->lookup_still_valid); | MPASS(fs->lookup_still_valid); | ||||
pager_first = OFF_TO_IDX(fs->entry->offset); | pager_first = OFF_TO_IDX(fs->entry->offset); | ||||
pager_last = pager_first + atop(fs->entry->end - fs->entry->start) - 1; | pager_last = pager_first + atop(fs->entry->end - fs->entry->start) - 1; | ||||
unlock_map(fs); | unlock_map(fs); | ||||
unlock_vp(fs); | unlock_vp(fs); | ||||
▲ Show 20 Lines • Show All 1,575 Lines • Show Last 20 Lines |