TRYEMULROOT
NDINIT(&nd, LOOKUP, FOLLOW | LOCKLEAF | TRYEMULROOT, pb);
NDINIT(&nd, LOOKUP, FOLLOW | LOCKLEAF | TRYEMULROOT, pb);
NDINIT(&nd, LOOKUP, FOLLOW | LOCKLEAF | TRYEMULROOT, pb);
error = vn_open(NULL, pb, TRYEMULROOT, FWRITE|O_APPEND, 0,
NDINIT(&nd, LOOKUP, FOLLOW | LOCKLEAF | TRYEMULROOT, pb);
flags = FOLLOW | TRYEMULROOT | EMULROOTSET;
NDINIT(&nd, LOOKUP, FOLLOW | LOCKLEAF | TRYEMULROOT, pb);
NDINIT(&nd, CREATE, FOLLOW | LOCKPARENT | TRYEMULROOT, pb);
if (cnp->cn_flags & TRYEMULROOT) {
cnp->cn_flags &= ~TRYEMULROOT;
return NOFOLLOW | TRYEMULROOT;
return FOLLOW | TRYEMULROOT;
if ((cnp->cn_flags & TRYEMULROOT) == 0) {
} else if (cnp->cn_flags & TRYEMULROOT && erootdir != NULL) {
NDINIT(&nd, LOOKUP, FOLLOW | LOCKLEAF | TRYEMULROOT, pb);
NDINIT(&nd, LOOKUP, FOLLOW | LOCKLEAF | LOCKSHARED | TRYEMULROOT, pb);
error = vn_open(dvp, pb, TRYEMULROOT, flags, cmode,
NDINIT(&nd, LOOKUP, FOLLOW | LOCKLEAF | TRYEMULROOT, pb);
NDINIT(&nd, CREATE, LOCKPARENT | TRYEMULROOT, pb);
NDINIT(&nd, CREATE, LOCKPARENT | TRYEMULROOT, pb);
NDINIT(&nd, CREATE, LOCKPARENT | TRYEMULROOT, linkpb);
NDINIT(&nd, CREATE, LOCKPARENT | TRYEMULROOT, linkpb);
NDINIT(&nd, DELETE, LOCKPARENT | DOWHITEOUT | TRYEMULROOT, pb);
NDINIT(&nd, DELETE, LOCKPARENT | LOCKLEAF | TRYEMULROOT, pb);
nd_flag = FOLLOW | LOCKLEAF | LOCKSHARED | TRYEMULROOT;
NDINIT(&nd, LOOKUP, nd_flag | LOCKLEAF | TRYEMULROOT, pb);
NDINIT(&nd, LOOKUP, flag | LOCKLEAF | TRYEMULROOT, pb);
NDINIT(&nd, LOOKUP, NOFOLLOW | LOCKLEAF | LOCKSHARED | TRYEMULROOT,
NDINIT(&fnd, DELETE, (LOCKPARENT | TRYEMULROOT), fpb);
(LOCKPARENT | NOCACHE | TRYEMULROOT |
NDINIT(&nd, CREATE, LOCKPARENT | CREATEDIR | TRYEMULROOT, pb);
NDINIT(&nd, LOOKUP, NOFOLLOW | LOCKLEAF | TRYEMULROOT, pb);
KASSERT((nmode & (TRYEMULROOT | NOCHROOT)) == nmode);
nd.ni_cnd.cn_flags &= TRYEMULROOT | NOCHROOT;
NDINIT(&nd, LOOKUP, FOLLOW | LOCKLEAF | TRYEMULROOT, pb);