Module Name: src Committed By: dholland Date: Mon Apr 11 02:13:22 UTC 2011
Modified Files: src/sys/kern: vfs_lookup.c Log Message: description: state->namei_startdir has no further reason to exist. To generate a diff of this commit: cvs rdiff -u -r1.151 -r1.152 src/sys/kern/vfs_lookup.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/kern/vfs_lookup.c diff -u src/sys/kern/vfs_lookup.c:1.151 src/sys/kern/vfs_lookup.c:1.152 --- src/sys/kern/vfs_lookup.c:1.151 Mon Apr 11 02:13:10 2011 +++ src/sys/kern/vfs_lookup.c Mon Apr 11 02:13:22 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: vfs_lookup.c,v 1.151 2011/04/11 02:13:10 dholland Exp $ */ +/* $NetBSD: vfs_lookup.c,v 1.152 2011/04/11 02:13:22 dholland Exp $ */ /* * Copyright (c) 1982, 1986, 1989, 1993 @@ -37,7 +37,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: vfs_lookup.c,v 1.151 2011/04/11 02:13:10 dholland Exp $"); +__KERNEL_RCSID(0, "$NetBSD: vfs_lookup.c,v 1.152 2011/04/11 02:13:22 dholland Exp $"); #include "opt_magiclinks.h" @@ -403,9 +403,6 @@ struct nameidata *ndp; struct componentname *cnp; - /* used by the pieces of namei */ - struct vnode *namei_startdir; /* The directory namei() starts from. */ - /* used by the pieces of lookup */ int lookup_alldone; @@ -427,8 +424,6 @@ state->cnp = &ndp->ni_cnd; KASSERT((state->cnp->cn_flags & INRELOOKUP) == 0); - state->namei_startdir = NULL; - state->lookup_alldone = 0; state->docache = 0; @@ -460,8 +455,6 @@ { KASSERT(state->cnp == &state->ndp->ni_cnd); - //KASSERT(state->namei_startdir == NULL); // not yet - /* nothing for now */ (void)state; } @@ -1044,7 +1037,7 @@ const char *cp; int error; - error = namei_start(state, forcecwd, &state->namei_startdir); + error = namei_start(state, forcecwd, &searchdir); if (error) { return error; } @@ -1067,8 +1060,8 @@ * If the directory we're on is unmounted, bail out. * XXX: should this also check if it's unlinked? */ - if (state->namei_startdir->v_mount == NULL) { - vput(state->namei_startdir); + if (searchdir->v_mount == NULL) { + vput(searchdir); return (ENOENT); } @@ -1081,7 +1074,6 @@ ndp->ni_dvp = NULL; cnp->cn_flags &= ~ISSYMLINK; - searchdir = state->namei_startdir; dirloop: /* @@ -1173,10 +1165,16 @@ if (neverfollow) { error = EINVAL; } else { - state->namei_startdir = ndp->ni_dvp; + /* + * dholland 20110410: if we're at a + * union mount it might make sense to + * use the top of the union stack here + * rather than the layer we found the + * symlink in. (FUTURE) + */ error = namei_follow(state, inhibitmagic, - state->namei_startdir, - &state->namei_startdir); + searchdir, + &searchdir); } if (error) { KASSERT(ndp->ni_dvp != ndp->ni_vp);