Lines Matching full:dvp
132 unionfs_get_hashhead(struct vnode *dvp, struct vnode *lookup) in unionfs_get_hashhead() argument
136 unp = VTOUNIONFS(dvp); in unionfs_get_hashhead()
143 * from dvp, with dvp's interlock held.
146 unionfs_get_cached_vnode_locked(struct vnode *lookup, struct vnode *dvp) in unionfs_get_cached_vnode_locked() argument
152 hd = unionfs_get_hashhead(dvp, lookup); in unionfs_get_cached_vnode_locked()
181 struct vnode *dvp) in unionfs_get_cached_vnode() argument
186 VI_LOCK(dvp); in unionfs_get_cached_vnode()
188 vp = unionfs_get_cached_vnode_locked(uvp, dvp); in unionfs_get_cached_vnode()
190 vp = unionfs_get_cached_vnode_locked(lvp, dvp); in unionfs_get_cached_vnode()
191 VI_UNLOCK(dvp); in unionfs_get_cached_vnode()
201 struct vnode *dvp) in unionfs_ins_cached_vnode() argument
207 VI_LOCK(dvp); in unionfs_ins_cached_vnode()
212 vp = unionfs_get_cached_vnode_locked(uncp->un_uppervp, dvp); in unionfs_ins_cached_vnode()
217 vp = unionfs_get_cached_vnode_locked(uncp->un_lowervp, dvp); in unionfs_ins_cached_vnode()
220 hd = unionfs_get_hashhead(dvp, (uncp->un_uppervp != NULLVP ? in unionfs_ins_cached_vnode()
224 VI_UNLOCK(dvp); in unionfs_ins_cached_vnode()
233 unionfs_rem_cached_vnode(struct unionfs_node *unp, struct vnode *dvp) in unionfs_rem_cached_vnode() argument
236 KASSERT(dvp != NULLVP, in unionfs_rem_cached_vnode()
239 VI_LOCK(dvp); in unionfs_rem_cached_vnode()
245 VI_UNLOCK(dvp); in unionfs_rem_cached_vnode()
300 struct vnode *lowervp, struct vnode *dvp, struct vnode **vpp, in unionfs_nodeget() argument
328 if (dvp != NULLVP && vt == VDIR) { in unionfs_nodeget()
329 vp = unionfs_get_cached_vnode(uppervp, lowervp, dvp); in unionfs_nodeget()
346 if (dvp != NULLVP) in unionfs_nodeget()
347 vref(dvp); in unionfs_nodeget()
363 unp->un_dvp = dvp; in unionfs_nodeget()
389 KASSERT(dvp != NULL || (vp->v_vflag & VV_ROOT) != 0, in unionfs_nodeget()
390 ("%s: NULL dvp for non-root vp %p", __func__, vp)); in unionfs_nodeget()
395 * If dvp has an upper FS component and is locked, while the new vnode in unionfs_nodeget()
436 if (dvp != NULLVP && vt == VDIR) in unionfs_nodeget()
437 *vpp = unionfs_ins_cached_vnode(unp, dvp); in unionfs_nodeget()
465 struct vnode *dvp; in unionfs_noderem() local
486 dvp = unp->un_dvp; in unionfs_noderem()
553 if (dvp != NULLVP) in unionfs_noderem()
554 unionfs_rem_cached_vnode(unp, dvp); in unionfs_noderem()
570 if (dvp != NULLVP) { in unionfs_noderem()
711 * dvp should be locked on entry and will be locked on return.
714 * locked, referenced vnode. If *vpp == dvp then remember that only one
718 unionfs_relookup(struct vnode *dvp, struct vnode **vpp, in unionfs_relookup() argument
742 vref(dvp); in unionfs_relookup()
743 VOP_UNLOCK(dvp); in unionfs_relookup()
745 if ((error = vfs_relookup(dvp, vpp, cn, refstart))) { in unionfs_relookup()
746 vn_lock(dvp, LK_EXCLUSIVE | LK_RETRY); in unionfs_relookup()
748 vrele(dvp); in unionfs_relookup()
768 struct vnode *dvp; in unionfs_node_update() local
775 dvp = unp->un_dvp; in unionfs_node_update()
796 if (dvp != NULLVP && vp->v_type == VDIR) { in unionfs_node_update()
797 VI_LOCK(dvp); in unionfs_node_update()
800 hd = unionfs_get_hashhead(dvp, uvp); in unionfs_node_update()
877 * dvp and vp are unionfs vnodes representing a parent directory and
883 unionfs_mkshadowdir(struct vnode *dvp, struct vnode *vp, in unionfs_mkshadowdir() argument
901 ASSERT_VOP_ELOCKED(dvp, __func__); in unionfs_mkshadowdir()
907 dunp = VTOUNIONFS(dvp); in unionfs_mkshadowdir()
941 * then jump to exit code that relocks dvp, which in most in unionfs_mkshadowdir()
945 * below) may unlock and then relock udvp, allowing dvp to in unionfs_mkshadowdir()
946 * be reclaimed in the meantime. In such a situation dvp in unionfs_mkshadowdir()
950 * dvp on exit than to explicitly check for reclamation in unionfs_mkshadowdir()
951 * of dvp. in unionfs_mkshadowdir()
995 * dvp on exit. in unionfs_mkshadowdir()
1036 vn_lock(dvp, LK_EXCLUSIVE | LK_RETRY); in unionfs_mkshadowdir()
1038 if (error == 0 && (VN_IS_DOOMED(dvp) || VN_IS_DOOMED(vp))) in unionfs_mkshadowdir()
1203 * dvp and vp are unionfs vnodes representing a parent directory and
1207 unionfs_mkwhiteout(struct vnode *dvp, struct vnode *vp, in unionfs_mkwhiteout() argument
1217 ASSERT_VOP_ELOCKED(dvp, __func__); in unionfs_mkwhiteout()
1220 udvp = VTOUNIONFS(dvp)->un_uppervp; in unionfs_mkwhiteout()
1248 if (VTOUNIONFS(dvp) == NULL) { in unionfs_mkwhiteout()
1255 vn_lock_pair(dvp, dvp_locked, LK_EXCLUSIVE, vp, false, LK_EXCLUSIVE); in unionfs_mkwhiteout()