Changeset View
Changeset View
Standalone View
Standalone View
sys/vm/vnode_pager.c
Show First 20 Lines • Show All 99 Lines • ▼ Show 20 Lines | |||||
static vm_object_t vnode_pager_alloc(void *, vm_ooffset_t, vm_prot_t, | static vm_object_t vnode_pager_alloc(void *, vm_ooffset_t, vm_prot_t, | ||||
vm_ooffset_t, struct ucred *cred); | vm_ooffset_t, struct ucred *cred); | ||||
static int vnode_pager_generic_getpages_done(struct buf *); | static int vnode_pager_generic_getpages_done(struct buf *); | ||||
static void vnode_pager_generic_getpages_done_async(struct buf *); | static void vnode_pager_generic_getpages_done_async(struct buf *); | ||||
static void vnode_pager_update_writecount(vm_object_t, vm_offset_t, | static void vnode_pager_update_writecount(vm_object_t, vm_offset_t, | ||||
vm_offset_t); | vm_offset_t); | ||||
static void vnode_pager_release_writecount(vm_object_t, vm_offset_t, | static void vnode_pager_release_writecount(vm_object_t, vm_offset_t, | ||||
vm_offset_t); | vm_offset_t); | ||||
static void vnode_pager_getvp(vm_object_t, struct vnode **, bool *); | |||||
struct pagerops vnodepagerops = { | const struct pagerops vnodepagerops = { | ||||
.pgo_alloc = vnode_pager_alloc, | .pgo_alloc = vnode_pager_alloc, | ||||
.pgo_dealloc = vnode_pager_dealloc, | .pgo_dealloc = vnode_pager_dealloc, | ||||
.pgo_getpages = vnode_pager_getpages, | .pgo_getpages = vnode_pager_getpages, | ||||
.pgo_getpages_async = vnode_pager_getpages_async, | .pgo_getpages_async = vnode_pager_getpages_async, | ||||
.pgo_putpages = vnode_pager_putpages, | .pgo_putpages = vnode_pager_putpages, | ||||
.pgo_haspage = vnode_pager_haspage, | .pgo_haspage = vnode_pager_haspage, | ||||
.pgo_update_writecount = vnode_pager_update_writecount, | .pgo_update_writecount = vnode_pager_update_writecount, | ||||
.pgo_release_writecount = vnode_pager_release_writecount, | .pgo_release_writecount = vnode_pager_release_writecount, | ||||
.pgo_set_writeable_dirty = vm_object_set_writeable_dirty_, | |||||
.pgo_mightbedirty = vm_object_mightbedirty_, | |||||
.pgo_getvp = vnode_pager_getvp, | |||||
}; | }; | ||||
static struct domainset *vnode_domainset = NULL; | static struct domainset *vnode_domainset = NULL; | ||||
SYSCTL_PROC(_debug, OID_AUTO, vnode_domainset, | SYSCTL_PROC(_debug, OID_AUTO, vnode_domainset, | ||||
CTLTYPE_STRING | CTLFLAG_MPSAFE | CTLFLAG_RW, &vnode_domainset, 0, | CTLTYPE_STRING | CTLFLAG_MPSAFE | CTLFLAG_RW, &vnode_domainset, 0, | ||||
sysctl_handle_domainset, "A", "Default vnode NUMA policy"); | sysctl_handle_domainset, "A", "Default vnode NUMA policy"); | ||||
▲ Show 20 Lines • Show All 1,468 Lines • ▼ Show 20 Lines | vnode_pager_release_writecount(vm_object_t object, vm_offset_t start, | ||||
* there was not a race with vnode reclaimation, then the | * there was not a race with vnode reclaimation, then the | ||||
* vnode's v_writecount is decremented. | * vnode's v_writecount is decremented. | ||||
*/ | */ | ||||
vnode_pager_update_writecount(object, end, start); | vnode_pager_update_writecount(object, end, start); | ||||
VOP_UNLOCK(vp); | VOP_UNLOCK(vp); | ||||
vdrop(vp); | vdrop(vp); | ||||
if (mp != NULL) | if (mp != NULL) | ||||
vn_finished_write(mp); | vn_finished_write(mp); | ||||
} | |||||
static void | |||||
vnode_pager_getvp(vm_object_t object, struct vnode **vpp, bool *vp_heldp) | |||||
{ | |||||
*vpp = object->handle; | |||||
} | } |