Lines Matching refs:lvp
61 * lvp, *lvpp: the "lower" vnode
84 * entry pointing at lvp.
93 getcwd_scandir(struct vnode *lvp, struct vnode **uvpp, char **bpp,
113 KASSERT(VOP_ISLOCKED(lvp) == LK_EXCLUSIVE);
120 error = VOP_GETATTR(lvp, &va, cred);
122 VOP_UNLOCK(lvp);
138 /* At this point, lvp is locked */
139 error = VOP_LOOKUP(lvp, uvpp, &cn);
140 VOP_UNLOCK(lvp);
159 /* Now lvp is unlocked, try to lock uvp */
274 getcwd_common(struct vnode *lvp, struct vnode *rvp, char **bpp, char *bufp,
292 vref(lvp);
297 * lvp is either NULL, or held.
310 if (lvp == rvp) {
327 if (lvp->v_vflag & VV_ROOT) {
328 vn_lock(lvp, LK_SHARED | LK_RETRY);
330 error = VOP_ACCESS(lvp, accmode, cred);
332 VOP_UNLOCK(lvp);
337 while (lvp->v_vflag & VV_ROOT) {
340 if (lvp == rvp) {
341 VOP_UNLOCK(lvp);
345 tvp = lvp->v_mount->mnt_vnodecovered;
350 VOP_UNLOCK(lvp);
355 vput(lvp);
356 lvp = tvp;
357 if (lvp->v_vflag & VV_ROOT)
358 vn_lock(lvp, LK_SHARED | LK_RETRY);
363 if (chkaccess && !cache_have_id(lvp)) {
368 vn_lock(lvp, LK_EXCLUSIVE | LK_RETRY);
369 error = VOP_ACCESS(lvp, accmode, cred);
371 VOP_UNLOCK(lvp);
382 error = cache_revlookup(lvp, &uvp, &bp, bufp, chkaccess,
387 vn_lock(lvp, LK_EXCLUSIVE | LK_RETRY);
389 if (lvp->v_type != VDIR) {
390 VOP_UNLOCK(lvp);
394 error = getcwd_scandir(lvp, &uvp, &bp, bufp, l);
395 /* lvp now unlocked */
397 VOP_UNLOCK(lvp);
409 vrele(lvp);
410 lvp = uvp;
413 } while ((lvp != rvp) && (limit > 0));
420 if (lvp)
421 vrele(lvp);
434 vn_isunder(struct vnode *lvp, struct vnode *rvp, struct lwp *l)
438 error = getcwd_common(lvp, rvp, NULL, NULL, MAXPATHLEN / 2, 0, l);