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