bug fix from Macklem
authorKirk McKusick <mckusick@ucbvax.Berkeley.EDU>
Fri, 12 Aug 1994 02:59:17 +0000 (18:59 -0800)
committerKirk McKusick <mckusick@ucbvax.Berkeley.EDU>
Fri, 12 Aug 1994 02:59:17 +0000 (18:59 -0800)
SCCS-vsn: sys/nfs/nfs_vnops.c 8.10
SCCS-vsn: sys/nfs/nfs_bio.c 8.7

usr/src/sys/nfs/nfs_bio.c
usr/src/sys/nfs/nfs_vnops.c

index 9d6a234..8c00d9b 100644 (file)
@@ -7,7 +7,7 @@
  *
  * %sccs.include.redist.c%
  *
  *
  * %sccs.include.redist.c%
  *
- *     @(#)nfs_bio.c   8.6 (Berkeley) %G%
+ *     @(#)nfs_bio.c   8.7 (Berkeley) %G%
  */
 
 #include <sys/param.h>
  */
 
 #include <sys/param.h>
@@ -699,6 +699,7 @@ nfs_doio(bp, cr, p)
                }
                if (p && (vp->v_flag & VTEXT) &&
                        (((nmp->nm_flag & NFSMNT_NQNFS) &&
                }
                if (p && (vp->v_flag & VTEXT) &&
                        (((nmp->nm_flag & NFSMNT_NQNFS) &&
+                         NQNFS_CKINVALID(vp, np, NQL_READ) &&
                          np->n_lrev != np->n_brev) ||
                         (!(nmp->nm_flag & NFSMNT_NQNFS) &&
                          np->n_mtime != np->n_vattr.va_mtime.ts_sec))) {
                          np->n_lrev != np->n_brev) ||
                         (!(nmp->nm_flag & NFSMNT_NQNFS) &&
                          np->n_mtime != np->n_vattr.va_mtime.ts_sec))) {
index 5453c2d..7f8bbf7 100644 (file)
@@ -7,7 +7,7 @@
  *
  * %sccs.include.redist.c%
  *
  *
  * %sccs.include.redist.c%
  *
- *     @(#)nfs_vnops.c 8.9 (Berkeley) %G%
+ *     @(#)nfs_vnops.c 8.10 (Berkeley) %G%
  */
 
 /*
  */
 
 /*
@@ -1291,6 +1291,13 @@ nfs_link(ap)
                return (EXDEV);
        }
 
                return (EXDEV);
        }
 
+       /*
+        * Push all writes to the server, so that the attribute cache
+        * doesn't get "out of sync" with the server.
+        * XXX There should be a better way!
+        */
+       VOP_FSYNC(tdvp, cnp->cn_cred, MNT_WAIT, cnp->cn_proc);
+
        nfsstats.rpccnt[NFSPROC_LINK]++;
        nfsm_reqhead(tdvp, NFSPROC_LINK,
                NFSX_FH*2+NFSX_UNSIGNED+nfsm_rndup(cnp->cn_namelen));
        nfsstats.rpccnt[NFSPROC_LINK]++;
        nfsm_reqhead(tdvp, NFSPROC_LINK,
                NFSX_FH*2+NFSX_UNSIGNED+nfsm_rndup(cnp->cn_namelen));