Changeset View
Changeset View
Standalone View
Standalone View
sys/fs/unionfs/union_subr.c
Show First 20 Lines • Show All 675 Lines • ▼ Show 20 Lines | unionfs_relookup(struct vnode *dvp, struct vnode **vpp, | ||||
else if (RENAME == nameiop) | else if (RENAME == nameiop) | ||||
cn->cn_flags |= (cnp->cn_flags & SAVESTART); | cn->cn_flags |= (cnp->cn_flags & SAVESTART); | ||||
else if (nameiop == CREATE) | else if (nameiop == CREATE) | ||||
cn->cn_flags |= NOCACHE; | cn->cn_flags |= NOCACHE; | ||||
vref(dvp); | vref(dvp); | ||||
VOP_UNLOCK(dvp); | VOP_UNLOCK(dvp); | ||||
if ((error = relookup(dvp, vpp, cn))) { | if ((error = vfs_relookup(dvp, vpp, cn))) { | ||||
vn_lock(dvp, LK_EXCLUSIVE | LK_RETRY); | vn_lock(dvp, LK_EXCLUSIVE | LK_RETRY); | ||||
} else | } else | ||||
vrele(dvp); | vrele(dvp); | ||||
KASSERT((cn->cn_flags & HASBUF) != 0, | KASSERT((cn->cn_flags & HASBUF) != 0, | ||||
("%s: HASBUF cleared", __func__)); | ("%s: HASBUF cleared", __func__)); | ||||
KASSERT((cn->cn_flags & SAVENAME) != 0, | KASSERT((cn->cn_flags & SAVENAME) != 0, | ||||
("%s: SAVENAME cleared", __func__)); | ("%s: SAVENAME cleared", __func__)); | ||||
▲ Show 20 Lines • Show All 330 Lines • ▼ Show 20 Lines | unionfs_vn_create_on_upper(struct vnode **vpp, struct vnode *udvp, | ||||
nd.ni_cnd.cn_flags = LOCKPARENT | LOCKLEAF | HASBUF | SAVENAME | | nd.ni_cnd.cn_flags = LOCKPARENT | LOCKLEAF | HASBUF | SAVENAME | | ||||
ISLASTCN; | ISLASTCN; | ||||
nd.ni_cnd.cn_lkflags = LK_EXCLUSIVE; | nd.ni_cnd.cn_lkflags = LK_EXCLUSIVE; | ||||
nd.ni_cnd.cn_cred = cred; | nd.ni_cnd.cn_cred = cred; | ||||
nd.ni_cnd.cn_nameptr = nd.ni_cnd.cn_pnbuf; | nd.ni_cnd.cn_nameptr = nd.ni_cnd.cn_pnbuf; | ||||
NDPREINIT(&nd); | NDPREINIT(&nd); | ||||
vref(udvp); | vref(udvp); | ||||
if ((error = relookup(udvp, &vp, &nd.ni_cnd)) != 0) | if ((error = vfs_relookup(udvp, &vp, &nd.ni_cnd)) != 0) | ||||
goto unionfs_vn_create_on_upper_free_out2; | goto unionfs_vn_create_on_upper_free_out2; | ||||
vrele(udvp); | vrele(udvp); | ||||
if (vp != NULLVP) { | if (vp != NULLVP) { | ||||
if (vp == udvp) | if (vp == udvp) | ||||
vrele(vp); | vrele(vp); | ||||
else | else | ||||
vput(vp); | vput(vp); | ||||
▲ Show 20 Lines • Show All 297 Lines • Show Last 20 Lines |