ISLASTCN
if ((cnp->cn_flags & ISLASTCN) && cnp->cn_nameiop == CREATE) {
if ((cnp->cn_flags & ISLASTCN) && cnp->cn_nameiop == CREATE)
if ((flags & ISLASTCN) && nameiop == LOOKUP)
if ((flags & ISLASTCN) && nameiop == RENAME)
if ((flags & ISLASTCN) && nameiop != LOOKUP)
if ((flags & ISLASTCN) && nameiop != LOOKUP)
(flags & (LOCKPARENT | WANTPARENT)) && (flags & ISLASTCN)) {
if ((cnp->cn_nameiop == DELETE) && (flags & ISLASTCN)) {
(flags & ISLASTCN)) {
(flags & ISLASTCN) && dp->i_nlink != 0) {
if ((flags & ISLASTCN) && nameiop == LOOKUP)
if (nameiop == DELETE && (flags & ISLASTCN)) {
if (nameiop == RENAME && (flags & ISLASTCN)) {
if ((cnp->cn_flags & ISLASTCN) &&
bool islastcn = cnp->cn_flags & ISLASTCN;
(flags & ISLASTCN))
(flags & ISLASTCN) && dp->de_refcnt != 0) {
if (nameiop == DELETE && (flags & ISLASTCN)) {
if (nameiop == RENAME && (flags & ISLASTCN)) {
opennamed = (flags & (OPENNAMED | ISLASTCN)) == (OPENNAMED | ISLASTCN);
if ((is_nameddir && (flags & ISLASTCN) == 0 && (cnp->cn_namelen > 1 ||
if ((flags & ISLASTCN) && (mp->mnt_flag & MNT_RDONLY) &&
(flags & (ISLASTCN | ISOPEN)) ==
(ISLASTCN | ISOPEN) &&
(flags & (ISLASTCN | ISOPEN | OPENNAMED))) == (ISLASTCN | ISOPEN)) {
(flags & ISLASTCN)) {
if (cnp->cn_nameiop == RENAME && (flags & ISLASTCN)) {
else if ((flags & (ISLASTCN | ISOPEN)) ==
(ISLASTCN | ISOPEN) &&
(cnp->cn_nameiop != DELETE || !(flags & ISLASTCN)) &&
opennamed = (cnp->cn_flags & (OPENNAMED | ISLASTCN)) ==
(OPENNAMED | ISLASTCN);
cn.cn_flags = ISLASTCN |
named.ni_cnd.cn_flags = ISLASTCN | LOCKPARENT | LOCKLEAF;
named.ni_cnd.cn_flags = ISLASTCN | LOCKPARENT | LOCKLEAF;
NFSNAMEICNDSET(&cn, nd->nd_cred, LOOKUP, OPENNAMED | ISLASTCN |
if ((flags & ISLASTCN) != 0 && (mp->mnt_flag & MNT_RDONLY) != 0 &&
if (error == EJUSTRETURN && (flags & ISLASTCN) != 0 &&
if ((flags & ISLASTCN) && (mp->mnt_flag & MNT_RDONLY) &&
(flags & ISLASTCN)) {
&& (flags & ISLASTCN)) {
if ((cnp->cn_flags & ISLASTCN) &&
islastcn = flags & ISLASTCN;
if ((cnp->cn_flags & ISLASTCN) == 0 &&
if ((cnp->cn_flags & ISLASTCN) &&
!(cnp->cn_flags & ISLASTCN)) {
if ((cnp->cn_flags & ISLASTCN) &&
if ((flags & ISLASTCN) && nameiop == LOOKUP)
if ((flags & ISLASTCN) &&
nd.ni_cnd.cn_flags = LOCKPARENT | LOCKLEAF | ISLASTCN;
nd.ni_cnd.cn_flags = LOCKPARENT | LOCKLEAF | ISLASTCN;
cn.cn_flags = LOCKPARENT | LOCKLEAF | RDONLY | ISLASTCN;
if (cnp && !(cnp->cn_flags & ISLASTCN))
cn->cn_flags = (LOCKPARENT | LOCKLEAF | ISLASTCN);
if ((cnflags & ISLASTCN) &&
if ((flags & ISLASTCN) && nameiop != LOOKUP)
if ((flags & ISLASTCN) && nameiop != LOOKUP)
if (nameiop == DELETE && (flags & ISLASTCN)) {
&& (flags & ISLASTCN)) {
if (cnp->cn_flags & ISLASTCN) {
if (cnp->cn_flags & ISLASTCN) {
if (cnp->cn_flags & ISLASTCN) {
if ((flags & ISLASTCN) && (dvp->v_mount->mnt_flag & MNT_RDONLY) &&
(ISDOTDOT | MAKEENTRY | ISLASTCN)
cnp->cn_flags |= ISLASTCN;
cnp->cn_flags |= ISLASTCN;
cnp->cn_flags |= ISLASTCN | MAKEENTRY;
cnp->cn_flags &= ~(ISDOTDOT|ISLASTCN);
cnp->cn_flags |= ISLASTCN;
if ((cnp->cn_flags & ISLASTCN) != 0 &&
if ((cnp->cn_flags & LOCKPARENT) && (cnp->cn_flags & ISLASTCN) &&
KASSERT((cnp->cn_flags & ISLASTCN) || *ndp->ni_next == '/',
KASSERT(cnp->cn_flags & ISLASTCN,
if ((flags & (ISLASTCN | LOCKLEAF)) != (ISLASTCN | LOCKLEAF))
cnp->cn_flags |= ISLASTCN;
(NOEXECCHECK | MAKEENTRY | ISSYMLINK | ISLASTCN | ISDOTDOT | \
cnp.cn_flags = ISLASTCN;
cnp.cn_flags = ISLASTCN;
(flags & (LOCKPARENT | ISLASTCN)) == (LOCKPARENT | ISLASTCN))
(flags & ISLASTCN)) {
(flags & ISLASTCN) && dp->i_effnlink != 0) {
if ((flags & ISLASTCN) && nameiop == LOOKUP)
if (nameiop == DELETE && (flags & ISLASTCN)) {
if (nameiop == RENAME && (flags & ISLASTCN)) {