uvn 161 uvm/uvm_vnode.c struct uvm_vnode *uvn = &vp->v_uvm; uvn 175 uvm/uvm_vnode.c simple_lock(&uvn->u_obj.vmobjlock); uvn 176 uvm/uvm_vnode.c while (uvn->u_flags & UVM_VNODE_BLOCKED) { uvn 178 uvm/uvm_vnode.c uvn, uvn->u_flags); uvn 179 uvm/uvm_vnode.c uvn->u_flags |= UVM_VNODE_WANTED; uvn 181 uvm/uvm_vnode.c UVM_UNLOCK_AND_WAIT(uvn, &uvn->u_obj.vmobjlock, FALSE, uvn 183 uvm/uvm_vnode.c simple_lock(&uvn->u_obj.vmobjlock); uvn 191 uvm/uvm_vnode.c simple_unlock(&uvn->u_obj.vmobjlock); /* drop lock */ uvn 202 uvm/uvm_vnode.c if (uvn->u_flags & UVM_VNODE_VALID) { /* already active? */ uvn 205 uvm/uvm_vnode.c if (uvn->u_obj.uo_refs == 0) { uvn 210 uvm/uvm_vnode.c uvn->u_obj.uo_refs++; /* bump uvn ref! */ uvn 214 uvm/uvm_vnode.c (uvn->u_flags & UVM_VNODE_WRITEABLE) == 0) { uvn 215 uvm/uvm_vnode.c LIST_INSERT_HEAD(&uvn_wlist, uvn, u_wlist); uvn 217 uvm/uvm_vnode.c uvn->u_flags |= UVM_VNODE_WRITEABLE; uvn 221 uvm/uvm_vnode.c simple_unlock(&uvn->u_obj.vmobjlock); uvn 222 uvm/uvm_vnode.c UVMHIST_LOG(maphist,"<- done, refcnt=%ld", uvn->u_obj.uo_refs, uvn 224 uvm/uvm_vnode.c return (&uvn->u_obj); uvn 235 uvm/uvm_vnode.c uvn->u_flags = UVM_VNODE_ALOCK; uvn 236 uvm/uvm_vnode.c simple_unlock(&uvn->u_obj.vmobjlock); /* drop lock in case we sleep */ uvn 262 uvm/uvm_vnode.c simple_lock(&uvn->u_obj.vmobjlock); uvn 265 uvm/uvm_vnode.c if (uvn->u_flags & UVM_VNODE_WANTED) uvn 266 uvm/uvm_vnode.c wakeup(uvn); uvn 267 uvm/uvm_vnode.c uvn->u_flags = 0; uvn 268 uvm/uvm_vnode.c simple_unlock(&uvn->u_obj.vmobjlock); /* drop lock */ uvn 285 uvm/uvm_vnode.c uvn->u_obj.pgops = &uvm_vnodeops; uvn 286 uvm/uvm_vnode.c TAILQ_INIT(&uvn->u_obj.memq); uvn 287 uvm/uvm_vnode.c uvn->u_obj.uo_npages = 0; uvn 288 uvm/uvm_vnode.c uvn->u_obj.uo_refs = 1; /* just us... */ uvn 289 uvm/uvm_vnode.c oldflags = uvn->u_flags; uvn 290 uvm/uvm_vnode.c uvn->u_flags = UVM_VNODE_VALID|UVM_VNODE_CANPERSIST; uvn 291 uvm/uvm_vnode.c uvn->u_nio = 0; uvn 292 uvm/uvm_vnode.c uvn->u_size = used_vnode_size; uvn 296 uvm/uvm_vnode.c LIST_INSERT_HEAD(&uvn_wlist, uvn, u_wlist); uvn 297 uvm/uvm_vnode.c uvn->u_flags |= UVM_VNODE_WRITEABLE; /* we are on wlist! */ uvn 306 uvm/uvm_vnode.c simple_unlock(&uvn->u_obj.vmobjlock); uvn 308 uvm/uvm_vnode.c wakeup(uvn); uvn 310 uvm/uvm_vnode.c UVMHIST_LOG(maphist,"<- done/VREF, ret %p", &uvn->u_obj,0,0,0); uvn 311 uvm/uvm_vnode.c return(&uvn->u_obj); uvn 332 uvm/uvm_vnode.c struct uvm_vnode *uvn = (struct uvm_vnode *) uobj; uvn 338 uvm/uvm_vnode.c if ((uvn->u_flags & UVM_VNODE_VALID) == 0) { uvn 339 uvm/uvm_vnode.c printf("uvn_reference: ref=%d, flags=0x%x\n", uvn->u_flags, uvn 363 uvm/uvm_vnode.c struct uvm_vnode *uvn; uvn 382 uvm/uvm_vnode.c uvn = (struct uvm_vnode *) uobj; uvn 396 uvm/uvm_vnode.c if (uvn->u_flags & UVM_VNODE_CANPERSIST) { uvn 411 uvm/uvm_vnode.c uvn->u_flags |= UVM_VNODE_DYING; uvn 448 uvm/uvm_vnode.c uvn->u_flags |= UVM_VNODE_RELKILL; uvn 459 uvm/uvm_vnode.c if (uvn->u_flags & UVM_VNODE_WRITEABLE) { uvn 460 uvm/uvm_vnode.c LIST_REMOVE(uvn, u_wlist); uvn 467 uvm/uvm_vnode.c oldflags = uvn->u_flags; uvn 468 uvm/uvm_vnode.c uvn->u_flags = 0; uvn 473 uvm/uvm_vnode.c wakeup(uvn); uvn 516 uvm/uvm_vnode.c struct uvm_vnode *uvn = &vp->v_uvm; uvn 523 uvm/uvm_vnode.c simple_lock(&uvn->u_obj.vmobjlock); uvn 525 uvm/uvm_vnode.c uvn->u_obj.uo_refs, uvn->u_flags, 0); uvn 526 uvm/uvm_vnode.c if ((uvn->u_flags & UVM_VNODE_VALID) == 0) { uvn 527 uvm/uvm_vnode.c simple_unlock(&uvn->u_obj.vmobjlock); uvn 543 uvm/uvm_vnode.c if (uvn->u_obj.uo_refs) { uvn 545 uvm/uvm_vnode.c "(refs=%d)\n", uvn, uvn->u_obj.uo_refs); uvn 558 uvm/uvm_vnode.c if (uvn->u_flags & UVM_VNODE_RELKILL) uvn 559 uvm/uvm_vnode.c uvn->u_flags &= ~UVM_VNODE_RELKILL; /* cancel RELKILL */ uvn 574 uvm/uvm_vnode.c uvn->u_flags |= UVM_VNODE_DYING|UVM_VNODE_VNISLOCKED; uvn 576 uvm/uvm_vnode.c (void) uvn_flush(&uvn->u_obj, 0, 0, PGO_CLEANIT|PGO_FREE|PGO_ALLPAGES); uvn 583 uvm/uvm_vnode.c while (uvn->u_obj.uo_npages) { uvn 586 uvm/uvm_vnode.c TAILQ_FOREACH(pp, &uvn->u_obj.memq, listq) { uvn 590 uvm/uvm_vnode.c if (uvn->u_nio == 0) uvn 598 uvm/uvm_vnode.c uvn->u_flags |= UVM_VNODE_IOSYNC; uvn 599 uvm/uvm_vnode.c UVM_UNLOCK_AND_WAIT(&uvn->u_nio, &uvn->u_obj.vmobjlock, FALSE, uvn 601 uvm/uvm_vnode.c simple_lock(&uvn->u_obj.vmobjlock); uvn 611 uvm/uvm_vnode.c oldflags = uvn->u_flags; uvn 612 uvm/uvm_vnode.c if (uvn->u_obj.uo_refs) { uvn 619 uvm/uvm_vnode.c uvn->u_flags &= ~(UVM_VNODE_DYING|UVM_VNODE_VNISLOCKED| uvn 628 uvm/uvm_vnode.c if (uvn->u_flags & UVM_VNODE_IOSYNCWANTED) uvn 631 uvm/uvm_vnode.c if (uvn->u_flags & UVM_VNODE_WRITEABLE) { uvn 632 uvm/uvm_vnode.c LIST_REMOVE(uvn, u_wlist); uvn 634 uvm/uvm_vnode.c uvn->u_flags = 0; /* uvn is history, clear all bits */ uvn 638 uvm/uvm_vnode.c wakeup(uvn); /* object lock still held */ uvn 640 uvm/uvm_vnode.c simple_unlock(&uvn->u_obj.vmobjlock); uvn 667 uvm/uvm_vnode.c struct uvm_vnode *uvn = (struct uvm_vnode *) pg->uobject; uvn 687 uvm/uvm_vnode.c if (uvn->u_flags & UVM_VNODE_RELKILL) { uvn 688 uvm/uvm_vnode.c if (uvn->u_obj.uo_refs) uvn 691 uvm/uvm_vnode.c if (uvn->u_obj.uo_npages == 0) { uvn 692 uvm/uvm_vnode.c if (uvn->u_flags & UVM_VNODE_WRITEABLE) { uvn 693 uvm/uvm_vnode.c LIST_REMOVE(uvn, u_wlist); uvn 696 uvm/uvm_vnode.c if (!TAILQ_EMPTY(&uvn->u_obj.memq)) uvn 699 uvm/uvm_vnode.c if (uvn->u_flags & UVM_VNODE_WANTED) uvn 701 uvm/uvm_vnode.c wakeup(uvn); uvn 703 uvm/uvm_vnode.c uvn->u_flags = 0; /* DEAD! */ uvn 704 uvm/uvm_vnode.c simple_unlock(&uvn->u_obj.vmobjlock); uvn 810 uvm/uvm_vnode.c struct uvm_vnode *uvn = (struct uvm_vnode *) uobj; uvn 833 uvm/uvm_vnode.c if (stop > round_page(uvn->u_size)) uvn 1212 uvm/uvm_vnode.c while (uvn->u_nio != 0) { uvn 1213 uvm/uvm_vnode.c uvn->u_flags |= UVM_VNODE_IOSYNC; uvn 1214 uvm/uvm_vnode.c UVM_UNLOCK_AND_WAIT(&uvn->u_nio, &uvn->u_obj.vmobjlock, uvn 1216 uvm/uvm_vnode.c simple_lock(&uvn->u_obj.vmobjlock); uvn 1218 uvm/uvm_vnode.c if (uvn->u_flags & UVM_VNODE_IOSYNCWANTED) uvn 1219 uvm/uvm_vnode.c wakeup(&uvn->u_flags); uvn 1220 uvm/uvm_vnode.c uvn->u_flags &= ~(UVM_VNODE_IOSYNC|UVM_VNODE_IOSYNCWANTED); uvn 1244 uvm/uvm_vnode.c struct uvm_vnode *uvn = (struct uvm_vnode *) uobj; uvn 1247 uvm/uvm_vnode.c if (*loffset >= uvn->u_size) uvn 1254 uvm/uvm_vnode.c if (*hoffset > round_page(uvn->u_size)) /* past end? */ uvn 1255 uvm/uvm_vnode.c *hoffset = round_page(uvn->u_size); uvn 1550 uvm/uvm_vnode.c uvn_io(uvn, pps, npages, flags, rw) uvn 1551 uvm/uvm_vnode.c struct uvm_vnode *uvn; uvn 1571 uvm/uvm_vnode.c vn = (struct vnode *) uvn; uvn 1578 uvm/uvm_vnode.c while (uvn->u_flags & UVM_VNODE_IOSYNC) { uvn 1580 uvm/uvm_vnode.c simple_unlock(&uvn->u_obj.vmobjlock); uvn 1584 uvm/uvm_vnode.c uvn->u_flags |= UVM_VNODE_IOSYNCWANTED; uvn 1585 uvm/uvm_vnode.c UVM_UNLOCK_AND_WAIT(&uvn->u_flags, &uvn->u_obj.vmobjlock, uvn 1587 uvm/uvm_vnode.c simple_lock(&uvn->u_obj.vmobjlock); uvn 1594 uvm/uvm_vnode.c if (file_offset >= uvn->u_size) { uvn 1595 uvm/uvm_vnode.c simple_unlock(&uvn->u_obj.vmobjlock); uvn 1609 uvm/uvm_vnode.c simple_unlock(&uvn->u_obj.vmobjlock); uvn 1620 uvm/uvm_vnode.c uvn->u_nio++; /* we have an I/O in progress! */ uvn 1621 uvm/uvm_vnode.c simple_unlock(&uvn->u_obj.vmobjlock); uvn 1639 uvm/uvm_vnode.c if (file_offset + wanted > uvn->u_size) uvn 1640 uvm/uvm_vnode.c wanted = uvn->u_size - file_offset; /* XXX: needed? */ uvn 1666 uvm/uvm_vnode.c if ((uvn->u_flags & UVM_VNODE_VNISLOCKED) == 0) uvn 1677 uvm/uvm_vnode.c if ((uvn->u_flags & UVM_VNODE_VNISLOCKED) == 0) uvn 1711 uvm/uvm_vnode.c simple_lock(&uvn->u_obj.vmobjlock); uvn 1714 uvm/uvm_vnode.c uvn->u_nio--; /* I/O DONE! */ uvn 1715 uvm/uvm_vnode.c if ((uvn->u_flags & UVM_VNODE_IOSYNC) != 0 && uvn->u_nio == 0) { uvn 1716 uvm/uvm_vnode.c wakeup(&uvn->u_nio); uvn 1718 uvm/uvm_vnode.c simple_unlock(&uvn->u_obj.vmobjlock); uvn 1772 uvm/uvm_vnode.c struct uvm_vnode *uvn = &vp->v_uvm; uvn 1778 uvm/uvm_vnode.c simple_lock(&uvn->u_obj.vmobjlock); uvn 1779 uvm/uvm_vnode.c if ((uvn->u_flags & UVM_VNODE_VALID) == 0 || uvn 1780 uvm/uvm_vnode.c (uvn->u_flags & UVM_VNODE_BLOCKED) != 0) { uvn 1781 uvm/uvm_vnode.c simple_unlock(&uvn->u_obj.vmobjlock); uvn 1790 uvm/uvm_vnode.c uvn->u_flags &= ~UVM_VNODE_CANPERSIST; uvn 1791 uvm/uvm_vnode.c if (uvn->u_obj.uo_refs) { uvn 1792 uvm/uvm_vnode.c simple_unlock(&uvn->u_obj.vmobjlock); uvn 1802 uvm/uvm_vnode.c uvn->u_obj.uo_refs++; /* value is now 1 */ uvn 1803 uvm/uvm_vnode.c simple_unlock(&uvn->u_obj.vmobjlock); uvn 1847 uvm/uvm_vnode.c uvn_detach(&uvn->u_obj); uvn 1880 uvm/uvm_vnode.c struct uvm_vnode *uvn = &vp->v_uvm; uvn 1885 uvm/uvm_vnode.c simple_lock(&uvn->u_obj.vmobjlock); uvn 1886 uvm/uvm_vnode.c if (uvn->u_flags & UVM_VNODE_VALID) { uvn 1893 uvm/uvm_vnode.c if (uvn->u_size > newsize) { uvn 1894 uvm/uvm_vnode.c (void)uvn_flush(&uvn->u_obj, newsize, uvn 1895 uvm/uvm_vnode.c uvn->u_size, PGO_FREE); uvn 1897 uvm/uvm_vnode.c uvn->u_size = newsize; uvn 1899 uvm/uvm_vnode.c simple_unlock(&uvn->u_obj.vmobjlock); uvn 1922 uvm/uvm_vnode.c struct uvm_vnode *uvn; uvn 1937 uvm/uvm_vnode.c LIST_FOREACH(uvn, &uvn_wlist, u_wlist) { uvn 1939 uvm/uvm_vnode.c vp = (struct vnode *) uvn; uvn 1944 uvm/uvm_vnode.c while ((got_lock = simple_lock_try(&uvn->u_obj.vmobjlock)) == uvn 1946 uvm/uvm_vnode.c (uvn->u_flags & UVM_VNODE_BLOCKED) == 0) uvn 1963 uvm/uvm_vnode.c if (!got_lock || (uvn->u_flags & UVM_VNODE_BLOCKED) != 0) { uvn 1965 uvm/uvm_vnode.c simple_unlock(&uvn->u_obj.vmobjlock); uvn 1973 uvm/uvm_vnode.c if (uvn->u_obj.uo_refs == 0) uvn 1975 uvm/uvm_vnode.c uvn->u_obj.uo_refs++; uvn 1976 uvm/uvm_vnode.c simple_unlock(&uvn->u_obj.vmobjlock); uvn 1981 uvm/uvm_vnode.c SIMPLEQ_INSERT_HEAD(&uvn_sync_q, uvn, u_syncq); uvn 1989 uvm/uvm_vnode.c SIMPLEQ_FOREACH(uvn, &uvn_sync_q, u_syncq) { uvn 1990 uvm/uvm_vnode.c simple_lock(&uvn->u_obj.vmobjlock); uvn 1992 uvm/uvm_vnode.c if (uvn->u_flags & UVM_VNODE_DYING) { uvn 1996 uvm/uvm_vnode.c uvn_flush(&uvn->u_obj, 0, 0, uvn 2005 uvm/uvm_vnode.c if (uvn->u_obj.uo_refs == 1 && uvn 2006 uvm/uvm_vnode.c (uvn->u_flags & UVM_VNODE_WRITEABLE)) { uvn 2007 uvm/uvm_vnode.c LIST_REMOVE(uvn, u_wlist); uvn 2008 uvm/uvm_vnode.c uvn->u_flags &= ~UVM_VNODE_WRITEABLE; uvn 2011 uvm/uvm_vnode.c simple_unlock(&uvn->u_obj.vmobjlock); uvn 2014 uvm/uvm_vnode.c uvn_detach(&uvn->u_obj);