Lines Matching full:dp
165 struct vnode *dp; member
196 nameicap_tracker_add(struct nameidata *ndp, struct vnode *dp) in nameicap_tracker_add() argument
200 if ((ndp->ni_lcf & NI_LCF_CAP_DOTDOT) == 0 || dp->v_type != VDIR) in nameicap_tracker_add()
203 if (nt != NULL && nt->dp == dp) in nameicap_tracker_add()
206 vhold(dp); in nameicap_tracker_add()
207 nt->dp = dp; in nameicap_tracker_add()
219 vdrop(nt->dp); in nameicap_cleanup_from()
244 nameicap_check_dotdot(struct nameidata *ndp, struct vnode *dp) in nameicap_check_dotdot() argument
249 if (dp == NULL || dp->v_type != VDIR || (ndp->ni_lcf & in nameicap_check_dotdot()
257 mp = dp->v_mount; in nameicap_check_dotdot()
263 if (dp == nt->dp) { in nameicap_check_dotdot()
455 struct vnode *dp; in namei_emptypath() local
464 error = namei_setup(ndp, &dp, &pwd); in namei_emptypath()
470 * Usecount on dp already provided by namei_setup. in namei_emptypath()
472 ndp->ni_vp = dp; in namei_emptypath()
476 VOP_LOCK(dp, (cnp->cn_flags & LOCKSHARED) != 0 ? in namei_emptypath()
478 if (VN_IS_DOOMED(dp)) { in namei_emptypath()
479 vput(dp); in namei_emptypath()
584 struct vnode *dp; /* the directory we are searching */ in namei() local
669 dp = ndp->ni_startdir; in namei()
692 error = namei_setup(ndp, &dp, &pwd); in namei()
704 ndp->ni_startdir = dp; in namei()
734 dp = ndp->ni_dvp; in namei()
748 vrele(dp); in namei()
749 error = namei_handle_root(ndp, &dp); in namei()
818 vfs_lookup_degenerate(struct nameidata *ndp, struct vnode *dp, int wantparent) in vfs_lookup_degenerate() argument
828 mp = atomic_load_ptr(&dp->v_mount); in vfs_lookup_degenerate()
834 vn_lock(dp, enforce_lkflags(mp, cnp->cn_lkflags | LK_RETRY)); in vfs_lookup_degenerate()
836 if (dp->v_type != VDIR) { in vfs_lookup_degenerate()
845 ndp->ni_dvp = dp; in vfs_lookup_degenerate()
846 VREF(dp); in vfs_lookup_degenerate()
848 ndp->ni_vp = dp; in vfs_lookup_degenerate()
852 AUDIT_ARG_VNODE1(dp); in vfs_lookup_degenerate()
854 AUDIT_ARG_VNODE2(dp); in vfs_lookup_degenerate()
857 VOP_UNLOCK(dp); in vfs_lookup_degenerate()
860 VOP_UNLOCK(dp); in vfs_lookup_degenerate()
895 struct vnode *dp, *tdp; in vfs_lookup_cross_mount() local
900 dp = ndp->ni_vp; in vfs_lookup_cross_mount()
907 mp = dp->v_mountedhere; in vfs_lookup_cross_mount()
908 ASSERT_VOP_LOCKED(dp, __func__); in vfs_lookup_cross_mount()
909 VNPASS((vn_irflag_read(dp) & VIRF_MOUNTPOINT) != 0 && mp != NULL, dp); in vfs_lookup_cross_mount()
911 crosslock = (dp->v_vflag & VV_CROSSLOCK) != 0; in vfs_lookup_cross_mount()
924 if (VOP_ISLOCKED(dp) == LK_EXCLUSIVE) { in vfs_lookup_cross_mount()
928 error = vn_lock(dp, LK_UPGRADE); in vfs_lookup_cross_mount()
931 vrele(dp); in vfs_lookup_cross_mount()
932 if (dp != ndp->ni_dvp) in vfs_lookup_cross_mount()
938 if (dp->v_mountedhere != mp) { in vfs_lookup_cross_mount()
942 * ensure we stop iterating if dp is in vfs_lookup_cross_mount()
953 vput(dp); in vfs_lookup_cross_mount()
954 if (dp != ndp->ni_dvp) in vfs_lookup_cross_mount()
963 vput(dp); in vfs_lookup_cross_mount()
968 ndp->ni_vp = dp = tdp; in vfs_lookup_cross_mount()
969 } while ((vn_irflag_read(dp) & VIRF_MOUNTPOINT) != 0); in vfs_lookup_cross_mount()
1020 struct vnode *dp = NULL; /* the directory we are searching */ in vfs_lookup() local
1021 struct vnode *tdp; /* saved dp */ in vfs_lookup()
1045 * during the full lookup, for instance UFS sets dp->i_offset. in vfs_lookup()
1060 dp = ndp->ni_startdir; in vfs_lookup()
1073 error = vfs_lookup_degenerate(ndp, dp, wantparent); in vfs_lookup()
1105 vn_lock(dp, in vfs_lookup()
1106 enforce_lkflags(dp->v_mount, cnp->cn_lkflags | LK_RETRY)); in vfs_lookup()
1164 nameicap_tracker_add(ndp, dp); in vfs_lookup()
1210 if (dp == pr->pr_root) in vfs_lookup()
1212 bool isroot = dp == ndp->ni_rootdir || in vfs_lookup()
1213 dp == ndp->ni_topdir || dp == rootvnode || in vfs_lookup()
1224 if (isroot || ((dp->v_vflag & VV_ROOT) != 0 && in vfs_lookup()
1226 ndp->ni_dvp = dp; in vfs_lookup()
1227 ndp->ni_vp = dp; in vfs_lookup()
1228 VREF(dp); in vfs_lookup()
1231 if ((dp->v_vflag & VV_ROOT) == 0) in vfs_lookup()
1233 if (VN_IS_DOOMED(dp)) { /* forced unmount */ in vfs_lookup()
1237 tdp = dp; in vfs_lookup()
1238 dp = dp->v_mount->mnt_vnodecovered; in vfs_lookup()
1239 VREF(dp); in vfs_lookup()
1241 vn_lock(dp, in vfs_lookup()
1242 enforce_lkflags(dp->v_mount, cnp->cn_lkflags | in vfs_lookup()
1244 error = nameicap_check_dotdot(ndp, dp); in vfs_lookup()
1257 error = mac_vnode_check_lookup(cnp->cn_cred, dp, cnp); in vfs_lookup()
1261 ndp->ni_dvp = dp; in vfs_lookup()
1263 ASSERT_VOP_LOCKED(dp, "lookup"); in vfs_lookup()
1269 dp != vp_crossmp && VOP_ISLOCKED(dp) == LK_SHARED) in vfs_lookup()
1270 vn_lock(dp, LK_UPGRADE|LK_RETRY); in vfs_lookup()
1271 if (VN_IS_DOOMED(dp)) { in vfs_lookup()
1279 if (needs_exclusive_leaf(dp->v_mount, cnp->cn_flags)) in vfs_lookup()
1282 cnp->cn_lkflags = enforce_lkflags(dp->v_mount, cnp->cn_lkflags); in vfs_lookup()
1283 error = VOP_LOOKUP(dp, &ndp->ni_vp, cnp); in vfs_lookup()
1288 (dp->v_vflag & VV_ROOT) && (dp->v_mount != NULL) && in vfs_lookup()
1289 (dp->v_mount->mnt_flag & MNT_UNION)) { in vfs_lookup()
1290 tdp = dp; in vfs_lookup()
1291 dp = dp->v_mount->mnt_vnodecovered; in vfs_lookup()
1292 VREF(dp); in vfs_lookup()
1294 vn_lock(dp, in vfs_lookup()
1295 enforce_lkflags(dp->v_mount, cnp->cn_lkflags | in vfs_lookup()
1297 nameicap_tracker_add(ndp, dp); in vfs_lookup()
1302 vref(dp); in vfs_lookup()
1303 ndp->ni_vp = dp; in vfs_lookup()
1328 VOP_UNLOCK(dp); in vfs_lookup()
1338 dp = ndp->ni_vp; in vfs_lookup()
1343 if ((dp->v_type == VLNK) && in vfs_lookup()
1347 if (VN_IS_DOOMED(dp)) { in vfs_lookup()
1355 if (dp->v_mount->mnt_flag & MNT_NOSYMFOLLOW) { in vfs_lookup()
1369 if ((vn_irflag_read(dp) & VIRF_MOUNTPOINT) != 0 && in vfs_lookup()
1377 dp = ndp->ni_vp; in vfs_lookup()
1391 if (ndp->ni_dvp != dp) in vfs_lookup()
1408 if (ndp->ni_dvp != dp) in vfs_lookup()
1418 if ((cnp->cn_flags & TRAILINGSLASH) && dp->v_type != VDIR) { in vfs_lookup()
1432 if (ndp->ni_dvp != dp) in vfs_lookup()
1436 } else if ((cnp->cn_flags & LOCKPARENT) == 0 && ndp->ni_dvp != dp) { in vfs_lookup()
1442 AUDIT_ARG_VNODE1(dp); in vfs_lookup()
1444 AUDIT_ARG_VNODE2(dp); in vfs_lookup()
1447 VOP_UNLOCK(dp); in vfs_lookup()
1458 if (needs_exclusive_leaf(dp->v_mount, cnp->cn_flags) && in vfs_lookup()
1459 VOP_ISLOCKED(dp) != LK_EXCLUSIVE) { in vfs_lookup()
1460 vn_lock(dp, LK_UPGRADE | LK_RETRY); in vfs_lookup()
1461 if (VN_IS_DOOMED(dp)) { in vfs_lookup()
1477 if (dp != ndp->ni_dvp && !ni_dvp_unlocked) in vfs_lookup()
1483 vput(dp); in vfs_lookup()
1497 struct vnode *dp = NULL; /* the directory we are searching */ in vfs_relookup() local
1510 dp = dvp; in vfs_relookup()
1512 vn_lock(dp, LK_EXCLUSIVE | LK_RETRY); in vfs_relookup()
1528 KASSERT(dp->v_type == VDIR, ("dp is not a directory")); in vfs_relookup()
1531 VOP_UNLOCK(dp); in vfs_relookup()
1532 *vpp = dp; in vfs_relookup()
1545 if ((error = VOP_LOOKUP(dp, vpp, cnp)) != 0) { in vfs_relookup()
1561 VOP_UNLOCK(dp); in vfs_relookup()
1570 dp = *vpp; in vfs_relookup()
1577 if (dvp == dp) in vfs_relookup()
1587 if ((cnp->cn_flags & LOCKPARENT) == 0 && dvp != dp) in vfs_relookup()
1592 KASSERT(dp->v_type != VLNK || !(cnp->cn_flags & FOLLOW), in vfs_relookup()
1600 VOP_UNLOCK(dp); in vfs_relookup()
1603 vput(dp); in vfs_relookup()