Lines Matching full:vp

239 devfs_usecount_add(struct vnode *vp)  in devfs_usecount_add()  argument
245 VI_LOCK(vp); in devfs_usecount_add()
246 VNPASS(vp->v_type == VCHR || vp->v_type == VBAD, vp); in devfs_usecount_add()
247 if (VN_IS_DOOMED(vp)) { in devfs_usecount_add()
251 de = vp->v_data; in devfs_usecount_add()
252 dev = vp->v_rdev; in devfs_usecount_add()
258 VI_UNLOCK(vp); in devfs_usecount_add()
263 devfs_usecount_subl(struct vnode *vp) in devfs_usecount_subl() argument
269 ASSERT_VI_LOCKED(vp, __func__); in devfs_usecount_subl()
270 VNPASS(vp->v_type == VCHR || vp->v_type == VBAD, vp); in devfs_usecount_subl()
272 de = vp->v_data; in devfs_usecount_subl()
273 dev = vp->v_rdev; in devfs_usecount_subl()
284 if (VN_IS_DOOMED(vp)) { in devfs_usecount_subl()
297 devfs_usecount_sub(struct vnode *vp) in devfs_usecount_sub() argument
301 VI_LOCK(vp); in devfs_usecount_sub()
302 devfs_usecount_subl(vp); in devfs_usecount_sub()
303 VI_UNLOCK(vp); in devfs_usecount_sub()
308 devfs_usecountl(struct vnode *vp) in devfs_usecountl() argument
311 VNPASS(vp->v_type == VCHR, vp); in devfs_usecountl()
313 ASSERT_VI_LOCKED(vp, __func__); in devfs_usecountl()
314 return (vp->v_rdev->si_usecount); in devfs_usecountl()
318 devfs_usecount(struct vnode *vp) in devfs_usecount() argument
322 VNPASS(vp->v_type == VCHR, vp); in devfs_usecount()
324 VI_LOCK(vp); in devfs_usecount()
325 count = devfs_usecountl(vp); in devfs_usecount()
326 VI_UNLOCK(vp); in devfs_usecount()
332 devfs_ctty_ref(struct vnode *vp) in devfs_ctty_ref() argument
335 vrefact(vp); in devfs_ctty_ref()
336 devfs_usecount_add(vp); in devfs_ctty_ref()
340 devfs_ctty_unref(struct vnode *vp) in devfs_ctty_unref() argument
343 devfs_usecount_sub(vp); in devfs_ctty_unref()
344 vrele(vp); in devfs_ctty_unref()
351 devfs_populate_vp(struct vnode *vp) in devfs_populate_vp() argument
357 ASSERT_VOP_LOCKED(vp, "devfs_populate_vp"); in devfs_populate_vp()
359 dmp = VFSTODEVFS(vp->v_mount); in devfs_populate_vp()
365 locked = VOP_ISLOCKED(vp); in devfs_populate_vp()
371 VOP_UNLOCK(vp); in devfs_populate_vp()
375 vn_lock(vp, locked | LK_RETRY); in devfs_populate_vp()
383 if (VN_IS_DOOMED(vp)) { in devfs_populate_vp()
387 de = vp->v_data; in devfs_populate_vp()
389 ("devfs_populate_vp: vp->v_data == NULL but vnode not doomed")); in devfs_populate_vp()
401 struct vnode *vp = ap->a_vp; in devfs_vptocnp() local
409 dmp = VFSTODEVFS(vp->v_mount); in devfs_vptocnp()
411 error = devfs_populate_vp(vp); in devfs_vptocnp()
415 if (vp->v_type != VCHR && vp->v_type != VDIR) { in devfs_vptocnp()
420 dd = vp->v_data; in devfs_vptocnp()
421 if (vp->v_type == VDIR && dd == dmp->dm_rootdir) { in devfs_vptocnp()
422 *dvp = vp; in devfs_vptocnp()
533 struct vnode *vp; in devfs_allocv() local
548 vp = de->de_vnode; in devfs_allocv()
549 if (vp != NULL) { in devfs_allocv()
550 vs = vget_prep(vp); in devfs_allocv()
553 vget_finish(vp, lockmode | LK_RETRY, vs); in devfs_allocv()
556 vput(vp); in devfs_allocv()
558 } else if (VN_IS_DOOMED(vp)) { in devfs_allocv()
560 if (de->de_vnode == vp) { in devfs_allocv()
562 vp->v_data = NULL; in devfs_allocv()
565 vput(vp); in devfs_allocv()
569 *vpp = vp; in devfs_allocv()
582 error = getnewvnode("devfs", mp, &devfs_vnodeops, &vp); in devfs_allocv()
590 vp->v_type = VCHR; in devfs_allocv()
591 VI_LOCK(vp); in devfs_allocv()
595 vp->v_rdev = dev; in devfs_allocv()
596 VNPASS(vp->v_usecount == 1, vp); in devfs_allocv()
600 vp->v_vflag |= VV_ISTTY; in devfs_allocv()
602 VI_UNLOCK(vp); in devfs_allocv()
604 vp->v_vflag |= VV_ETERNALDEV; in devfs_allocv()
605 vp->v_op = &devfs_specops; in devfs_allocv()
607 vp->v_type = VDIR; in devfs_allocv()
609 vp->v_type = VLNK; in devfs_allocv()
611 vp->v_type = VBAD; in devfs_allocv()
613 vn_lock(vp, LK_EXCLUSIVE | LK_RETRY | LK_NOWITNESS); in devfs_allocv()
614 VN_LOCK_ASHARE(vp); in devfs_allocv()
616 vp->v_data = de; in devfs_allocv()
617 de->de_vnode = vp; in devfs_allocv()
619 error = insmntque1(vp, mp); in devfs_allocv()
622 vp->v_data = NULL; in devfs_allocv()
625 vgone(vp); in devfs_allocv()
626 vput(vp); in devfs_allocv()
631 vgone(vp); in devfs_allocv()
632 vput(vp); in devfs_allocv()
636 mac_devfs_vnode_associate(mp, de, vp); in devfs_allocv()
639 vn_set_state(vp, VSTATE_CONSTRUCTED); in devfs_allocv()
640 *vpp = vp; in devfs_allocv()
647 struct vnode *vp = ap->a_vp; in devfs_access() local
652 de = vp->v_data; in devfs_access()
653 if (vp->v_type == VDIR) in devfs_access()
656 error = vaccess(vp->v_type, de->de_mode, de->de_uid, de->de_gid, in devfs_access()
681 struct vnode *vp = ap->a_vp, *oldvp; in devfs_close() local
684 struct cdev *dev = vp->v_rdev; in devfs_close()
686 struct devfs_dirent *de = vp->v_data; in devfs_close()
693 if (vp->v_data == NULL) in devfs_close()
708 if (vp == p->p_session->s_ttyvp) { in devfs_close()
712 if (vp == p->p_session->s_ttyvp) { in devfs_close()
715 VI_LOCK(vp); in devfs_close()
716 if (devfs_usecountl(vp) == 2 && !VN_IS_DOOMED(vp)) { in devfs_close()
719 oldvp = vp; in devfs_close()
721 VI_UNLOCK(vp); in devfs_close()
745 VI_LOCK(vp); in devfs_close()
746 if (devfs_usecountl(vp) == 1) in devfs_close()
748 devfs_usecount_subl(vp); in devfs_close()
750 if (VN_IS_DOOMED(vp)) { in devfs_close()
756 VI_UNLOCK(vp); in devfs_close()
760 vholdnz(vp); in devfs_close()
761 VI_UNLOCK(vp); in devfs_close()
762 vp_locked = VOP_ISLOCKED(vp); in devfs_close()
763 VOP_UNLOCK(vp); in devfs_close()
768 vn_lock(vp, vp_locked | LK_RETRY); in devfs_close()
769 vdrop(vp); in devfs_close()
800 struct vnode *vp = ap->a_vp; in devfs_getattr() local
808 error = devfs_populate_vp(vp); in devfs_getattr()
812 dmp = VFSTODEVFS(vp->v_mount); in devfs_getattr()
815 de = vp->v_data; in devfs_getattr()
816 KASSERT(de != NULL, ("Null dirent in devfs_getattr vp=%p", vp)); in devfs_getattr()
817 if (vp->v_type == VDIR) { in devfs_getattr()
820 ("Null dir dirent in devfs_getattr vp=%p", vp)); in devfs_getattr()
825 if (vp->v_type == VLNK) in devfs_getattr()
827 else if (vp->v_type == VDIR) in devfs_getattr()
831 if (vp->v_type != VDIR) in devfs_getattr()
834 vap->va_type = vp->v_type; in devfs_getattr()
845 if (vp->v_type != VCHR) { in devfs_getattr()
853 dev = vp->v_rdev; in devfs_getattr()
913 struct vnode *vpold, *vp; in devfs_ioctl() local
922 vp = ap->a_vp; in devfs_ioctl()
926 dsw = devvn_refthread(vp, &dev, &ref); in devfs_ioctl()
967 if (sess->s_ttyvp == vp || sess->s_ttyp == NULL) { in devfs_ioctl()
972 devfs_ctty_ref(vp); in devfs_ioctl()
975 sess->s_ttyvp = vp; in devfs_ioctl()
1253 struct vnode *vp = ap->a_vp; in devfs_open() local
1254 struct cdev *dev = vp->v_rdev; in devfs_open()
1260 if (vp->v_type == VBLK) in devfs_open()
1278 if (vp->v_type == VCHR) in devfs_open()
1279 devfs_usecount_add(vp); in devfs_open()
1281 vlocked = VOP_ISLOCKED(vp); in devfs_open()
1282 VOP_UNLOCK(vp); in devfs_open()
1288 fp->f_vnode = vp; in devfs_open()
1299 vn_lock(vp, vlocked | LK_RETRY); in devfs_open()
1300 if (error != 0 && vp->v_type == VCHR) in devfs_open()
1301 devfs_usecount_sub(vp); in devfs_open()
1532 devfs_reclaiml(struct vnode *vp) in devfs_reclaiml() argument
1537 de = vp->v_data; in devfs_reclaiml()
1541 vp->v_data = NULL; in devfs_reclaiml()
1548 struct vnode *vp; in devfs_reclaim() local
1550 vp = ap->a_vp; in devfs_reclaim()
1552 devfs_reclaiml(vp); in devfs_reclaim()
1560 struct vnode *vp; in devfs_reclaim_vchr() local
1563 vp = ap->a_vp; in devfs_reclaim_vchr()
1564 MPASS(vp->v_type == VCHR); in devfs_reclaim_vchr()
1567 VI_LOCK(vp); in devfs_reclaim_vchr()
1568 devfs_usecount_subl(vp); in devfs_reclaim_vchr()
1569 devfs_reclaiml(vp); in devfs_reclaim_vchr()
1572 dev = vp->v_rdev; in devfs_reclaim_vchr()
1573 vp->v_rdev = NULL; in devfs_reclaim_vchr()
1575 VI_UNLOCK(vp); in devfs_reclaim_vchr()
1585 struct vnode *vp = ap->a_vp; in devfs_remove() local
1588 struct devfs_mount *dmp = VFSTODEVFS(vp->v_mount); in devfs_remove()
1591 ASSERT_VOP_ELOCKED(vp, "devfs_remove"); in devfs_remove()
1595 de = vp->v_data; in devfs_remove()
1605 VOP_UNLOCK(vp); in devfs_remove()
1606 if (dvp != vp) in devfs_remove()
1610 if (dvp != vp) in devfs_remove()
1612 vn_lock(vp, LK_EXCLUSIVE | LK_RETRY); in devfs_remove()
1629 struct vnode *vp = ap->a_vp, *vp2; in devfs_revoke() local
1638 dev = vp->v_rdev; in devfs_revoke()
1645 vhold(vp); in devfs_revoke()
1646 vgone(vp); in devfs_revoke()
1647 vdrop(vp); in devfs_revoke()
1649 VOP_UNLOCK(vp); in devfs_revoke()
1694 vn_lock(vp, LK_EXCLUSIVE | LK_RETRY); in devfs_revoke()
1701 struct vnode *vp; in devfs_rioctl() local
1705 vp = ap->a_vp; in devfs_rioctl()
1706 vn_lock(vp, LK_SHARED | LK_RETRY); in devfs_rioctl()
1707 if (VN_IS_DOOMED(vp)) { in devfs_rioctl()
1708 VOP_UNLOCK(vp); in devfs_rioctl()
1711 dmp = VFSTODEVFS(vp->v_mount); in devfs_rioctl()
1713 VOP_UNLOCK(vp); in devfs_rioctl()
1740 struct vnode *vp; in devfs_setattr() local
1747 vp = ap->a_vp; in devfs_setattr()
1761 error = devfs_populate_vp(vp); in devfs_setattr()
1765 de = vp->v_data; in devfs_setattr()
1766 if (vp->v_type == VDIR) in devfs_setattr()
1801 error = vn_utimes_perm(vp, vap, ap->a_cred, td); in devfs_setattr()
1805 if (vp->v_type == VCHR) in devfs_setattr()
1806 vp->v_rdev->si_atime = vap->va_atime; in devfs_setattr()
1811 if (vp->v_type == VCHR) in devfs_setattr()
1812 vp->v_rdev->si_mtime = vap->va_mtime; in devfs_setattr()
1820 if (vp->v_type == VCHR) in devfs_setattr()
1821 vfs_timestamp(&vp->v_rdev->si_ctime); in devfs_setattr()
1827 sx_xunlock(&VFSTODEVFS(vp->v_mount)->dm_lock); in devfs_setattr()
1835 struct vnode *vp; in devfs_setlabel() local
1838 vp = ap->a_vp; in devfs_setlabel()
1839 de = vp->v_data; in devfs_setlabel()
1841 mac_vnode_relabel(ap->a_cred, vp, ap->a_label); in devfs_setlabel()
1842 mac_devfs_update(vp->v_mount, de, vp); in devfs_setlabel()
1960 struct vnode *vp; in devfs_mmap_f() local
1966 vp = fp->f_vnode; in devfs_mmap_f()
1972 mp = vp->v_mount; in devfs_mmap_f()