return (error);
}
}
- if (np->n_flag & NQNFSNONCACHE) {
+ /*
+ * Don't cache magic amd symlinks.
+ */
+ if (np->n_flag & NQNFSNONCACHE
+ || ((vp->v_flag & VROOT) && vp->v_type == VLNK)) {
switch (vp->v_type) {
case VREG:
error = nfs_readrpc(vp, uio, cred);
* information.
*/
np = VTONFS(vp);
- if (vp->v_type == VNON) {
+ if (vp->v_type != vtyp) {
if (vtyp == VCHR && rdev == 0xffffffff)
vp->v_type = vtyp = VFIFO;
else
register struct nfsmount *nmp;
struct nfsnode *np;
int error;
+ struct vattr attrs;
if (mp->mnt_flag & MNT_UPDATE) {
nmp = VFSTONFS(mp);
if (error = nfs_nget(mp, &nmp->nm_fh, &np))
goto bad;
*vpp = NFSTOV(np);
+ VOP_GETATTR(*vpp, &attrs, curproc->p_ucred, curproc);
return (0);
bad:
if (error = nfs_nget(mp, &nmp->nm_fh, &np))
return (error);
vp = NFSTOV(np);
- vp->v_type = VDIR;
+ if (vp->v_type == VNON)
+ vp->v_type = VDIR;
vp->v_flag = VROOT;
*vpp = vp;
return (0);
* SUCH DAMAGE.
*
* from: @(#)os-bsd44.h 8.1 (Berkeley) 6/6/93
- * $Id: os-bsd44.h,v 1.1.1.1 1995/10/18 08:47:14 deraadt Exp $
+ * $Id: os-bsd44.h,v 1.2 1996/01/08 07:36:31 dm Exp $
*
* 4.4 BSD definitions for Amd (automounter)
*/
*/
#undef RE_HDR
#define RE_HDR <regexp.h>
+
+/*
+ * Need precise length links
+ */
+#define PRECISE_SYMLINKS