Lines Matching refs:object

81 static int vnode_pager_input_smlfs(vm_object_t object, vm_page_t m);
82 static int vnode_pager_input_old(vm_object_t object, vm_page_t m);
100 /* Create the VM system backing object for this vnode */
104 vm_object_t object;
111 while ((object = vp->v_object) != NULL) {
112 VM_OBJECT_LOCK(object);
113 if (!(object->flags & OBJ_DEAD)) {
114 VM_OBJECT_UNLOCK(object);
118 vm_object_set_flag(object, OBJ_DISCONNECTWNT);
119 msleep(object, VM_OBJECT_MTX(object), PDROP | PVM, "vodead", 0);
133 object = vnode_pager_alloc(vp, size, 0, 0, td->td_ucred);
136 * that the object is associated with the vp.
138 VM_OBJECT_LOCK(object);
139 object->ref_count--;
140 VM_OBJECT_UNLOCK(object);
143 KASSERT(vp->v_object != NULL, ("vnode_create_vobject: NULL object"));
161 * removes the primary reference to the object,
163 * special-case to terminate the object.
165 * don't double-terminate the object
192 vm_object_t object;
204 * If the object is being terminated, wait for it to
208 while ((object = vp->v_object) != NULL) {
209 VM_OBJECT_LOCK(object);
210 if ((object->flags & OBJ_DEAD) == 0)
212 vm_object_set_flag(object, OBJ_DISCONNECTWNT);
213 msleep(object, VM_OBJECT_MTX(object), PDROP | PVM, "vadead", 0);
218 if (object == NULL) {
220 * Add an object of the appropriate size
222 object = vm_object_allocate(OBJT_VNODE, OFF_TO_IDX(round_page(size)));
224 object->un_pager.vnp.vnp_size = size;
225 object->un_pager.vnp.writemappings = 0;
227 object->handle = handle;
234 vm_object_destroy(object);
237 vp->v_object = object;
240 object->ref_count++;
241 VM_OBJECT_UNLOCK(object);
244 return (object);
248 * The object must be locked.
251 vnode_pager_dealloc(object)
252 vm_object_t object;
257 vp = object->handle;
261 VM_OBJECT_LOCK_ASSERT(object, MA_OWNED);
262 vm_object_pip_wait(object, "vnpdea");
263 refs = object->ref_count;
265 object->handle = NULL;
266 object->type = OBJT_DEAD;
267 if (object->flags & OBJ_DISCONNECTWNT) {
268 vm_object_clear_flag(object, OBJ_DISCONNECTWNT);
269 wakeup(object);
272 if (object->un_pager.vnp.writemappings > 0) {
273 object->un_pager.vnp.writemappings = 0;
278 VM_OBJECT_UNLOCK(object);
281 VM_OBJECT_LOCK(object);
285 vnode_pager_haspage(object, pindex, before, after)
286 vm_object_t object;
291 struct vnode *vp = object->handle;
300 VM_OBJECT_LOCK_ASSERT(object, MA_OWNED);
311 if (IDX_TO_OFF(pindex) >= object->un_pager.vnp.vnp_size)
323 VM_OBJECT_UNLOCK(object);
327 VM_OBJECT_LOCK(object);
343 object->un_pager.vnp.vnp_size) {
345 OFF_TO_IDX(object->un_pager.vnp.vnp_size) -
365 * the associated object that are affected by the size change.
368 * operation (possibly at object termination time), so we must be careful.
375 vm_object_t object;
379 if ((object = vp->v_object) == NULL)
382 VM_OBJECT_LOCK(object);
383 if (object->type == OBJT_DEAD) {
384 VM_OBJECT_UNLOCK(object);
387 KASSERT(object->type == OBJT_VNODE,
388 ("not vnode-backed object %p", object));
389 if (nsize == object->un_pager.vnp.vnp_size) {
393 VM_OBJECT_UNLOCK(object);
397 if (nsize < object->un_pager.vnp.vnp_size) {
401 if (nobjsize < object->size)
402 vm_object_page_remove(object, nobjsize, object->size,
413 (m = vm_page_lookup(object, OFF_TO_IDX(nsize))) != NULL &&
447 __predict_false(object->cache != NULL)) {
448 vm_page_cache_free(object, OFF_TO_IDX(nsize),
452 object->un_pager.vnp.vnp_size = nsize;
453 object->size = nobjsize;
454 VM_OBJECT_UNLOCK(object);
498 vnode_pager_input_smlfs(object, m)
499 vm_object_t object;
512 vp = object->handle;
530 if (address >= object->un_pager.vnp.vnp_size) {
577 VM_OBJECT_LOCK(object);
579 VM_OBJECT_UNLOCK(object);
592 vnode_pager_input_old(object, m)
593 vm_object_t object;
603 VM_OBJECT_LOCK_ASSERT(object, MA_OWNED);
609 if (IDX_TO_OFF(m->pindex) >= object->un_pager.vnp.vnp_size) {
613 if (IDX_TO_OFF(m->pindex) + size > object->un_pager.vnp.vnp_size)
614 size = object->un_pager.vnp.vnp_size - IDX_TO_OFF(m->pindex);
615 vp = object->handle;
616 VM_OBJECT_UNLOCK(object);
646 VM_OBJECT_LOCK(object);
667 vnode_pager_getpages(object, m, count, reqpage)
668 vm_object_t object;
678 vp = object->handle;
679 VM_OBJECT_UNLOCK(object);
685 VM_OBJECT_LOCK(object);
700 vm_object_t object;
713 object = vp->v_object;
736 VM_OBJECT_LOCK(object);
746 error = vnode_pager_input_old(object, m[reqpage]);
747 VM_OBJECT_UNLOCK(object);
750 VM_OBJECT_LOCK(object);
757 VM_OBJECT_UNLOCK(object);
767 VM_OBJECT_LOCK(object);
774 VM_OBJECT_UNLOCK(object);
777 return vnode_pager_input_smlfs(object, m[reqpage]);
785 VM_OBJECT_LOCK(object);
793 VM_OBJECT_UNLOCK(object);
806 VM_OBJECT_UNLOCK(object);
810 VM_OBJECT_UNLOCK(object);
823 VM_OBJECT_LOCK(object);
830 VM_OBJECT_UNLOCK(object);
834 VM_OBJECT_LOCK(object);
835 if (i == reqpage && foff < object->un_pager.vnp.vnp_size) {
840 (object->un_pager.vnp.vnp_size >> 32),
841 (uintmax_t)object->un_pager.vnp.vnp_size);
846 VM_OBJECT_UNLOCK(object);
853 VM_OBJECT_LOCK(object);
859 VM_OBJECT_UNLOCK(object);
862 VM_OBJECT_LOCK(object);
868 VM_OBJECT_UNLOCK(object);
896 if ((foff + size) > object->un_pager.vnp.vnp_size)
897 size = object->un_pager.vnp.vnp_size - foff;
982 VM_OBJECT_LOCK(object);
989 if (nextoff <= object->un_pager.vnp.vnp_size) {
1009 object->un_pager.vnp.vnp_size - tfoff);
1011 object->un_pager.vnp.vnp_size - tfoff)) == 0,
1019 VM_OBJECT_UNLOCK(object);
1035 vnode_pager_putpages(object, m, count, sync, rtvals)
1036 vm_object_t object;
1064 vp = object->handle;
1065 VM_OBJECT_UNLOCK(object);
1069 VM_OBJECT_LOCK(object);
1087 vm_object_t object;
1101 object = vp->v_object;
1131 VM_OBJECT_LOCK(object);
1132 if (maxsize + poffset > object->un_pager.vnp.vnp_size) {
1133 if (object->un_pager.vnp.vnp_size > poffset) {
1136 maxsize = object->un_pager.vnp.vnp_size - poffset;
1140 * If the object is locked and the following
1163 VM_OBJECT_UNLOCK(object);
1216 obj = ma[0]->object;
1232 vnode_pager_update_writecount(vm_object_t object, vm_offset_t start,
1238 VM_OBJECT_LOCK(object);
1239 if (object->type != OBJT_VNODE) {
1240 VM_OBJECT_UNLOCK(object);
1243 old_wm = object->un_pager.vnp.writemappings;
1244 object->un_pager.vnp.writemappings += (vm_ooffset_t)end - start;
1245 vp = object->handle;
1246 if (old_wm == 0 && object->un_pager.vnp.writemappings != 0) {
1249 } else if (old_wm != 0 && object->un_pager.vnp.writemappings == 0) {
1253 VM_OBJECT_UNLOCK(object);
1257 vnode_pager_release_writecount(vm_object_t object, vm_offset_t start,
1265 VM_OBJECT_LOCK(object);
1268 * First, recheck the object type to account for the race when
1271 if (object->type != OBJT_VNODE) {
1272 VM_OBJECT_UNLOCK(object);
1281 if (object->un_pager.vnp.writemappings != inc) {
1282 object->un_pager.vnp.writemappings -= inc;
1283 VM_OBJECT_UNLOCK(object);
1287 vp = object->handle;
1289 VM_OBJECT_UNLOCK(object);
1296 * Decrement the object's writemappings, by swapping the start
1301 vnode_pager_update_writecount(object, end, start);