graichen@freebsd.org: fixed -type:=direct mounts in amd
authordm <dm@openbsd.org>
Mon, 8 Jan 1996 07:36:23 +0000 (07:36 +0000)
committerdm <dm@openbsd.org>
Mon, 8 Jan 1996 07:36:23 +0000 (07:36 +0000)
sys/nfs/nfs_bio.c
sys/nfs/nfs_subs.c
sys/nfs/nfs_vfsops.c
usr.sbin/amd/config/os-bsd44.h

index fd4d2b7..0476a70 100644 (file)
@@ -167,7 +167,11 @@ nfs_bioread(vp, uio, ioflag, cred)
                        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);
index ad2ec19..1322229 100644 (file)
@@ -698,7 +698,7 @@ nfs_loadattrcache(vpp, mdp, dposp, vaper)
         * 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
index db33639..d876fbd 100644 (file)
@@ -486,6 +486,7 @@ mountnfs(argp, mp, nam, pth, hst, vpp)
        register struct nfsmount *nmp;
        struct nfsnode *np;
        int error;
+       struct vattr attrs;
 
        if (mp->mnt_flag & MNT_UPDATE) {
                nmp = VFSTONFS(mp);
@@ -565,6 +566,7 @@ mountnfs(argp, mp, nam, pth, hst, vpp)
        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:
@@ -664,7 +666,8 @@ nfs_root(mp, vpp)
        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);
index 4fe2ba8..128dafe 100644 (file)
@@ -36,7 +36,7 @@
  * 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)
  */
@@ -196,3 +196,8 @@ struct mntent {
  */
 #undef RE_HDR
 #define RE_HDR <regexp.h>
+
+/*
+ * Need precise length links
+ */
+#define        PRECISE_SYMLINKS