Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/nfs change n_mtime from time_t to timespec in order to i...



details:   https://anonhg.NetBSD.org/src/rev/db4702eccfd9
branches:  trunk
changeset: 552477:db4702eccfd9
user:      yamt <yamt%NetBSD.org@localhost>
date:      Fri Sep 26 11:51:53 2003 +0000

description:
change n_mtime from time_t to timespec in order to improve
cache consistency.
(1 second granularity is too loose these days.)

diffstat:

 sys/nfs/nfs.h       |   8 ++++----
 sys/nfs/nfs_bio.c   |  20 ++++++++++----------
 sys/nfs/nfs_subs.c  |   6 +++---
 sys/nfs/nfs_vnops.c |  13 ++++++-------
 sys/nfs/nfsm_subs.h |  11 +++++++----
 sys/nfs/nfsnode.h   |   4 ++--
 6 files changed, 32 insertions(+), 30 deletions(-)

diffs (203 lines):

diff -r b83e39559134 -r db4702eccfd9 sys/nfs/nfs.h
--- a/sys/nfs/nfs.h     Fri Sep 26 10:34:41 2003 +0000
+++ b/sys/nfs/nfs.h     Fri Sep 26 11:51:53 2003 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: nfs.h,v 1.41 2003/08/16 18:08:27 yamt Exp $    */
+/*     $NetBSD: nfs.h,v 1.42 2003/09/26 11:51:53 yamt Exp $    */
 /*
  * Copyright (c) 1989, 1993, 1995
  *     The Regents of the University of California.  All rights reserved.
@@ -155,9 +155,9 @@
  */
 #define        NFS_ATTRTIMEO(np) \
        ((((np)->n_flag & NMODIFIED) || \
-        (time.tv_sec - (np)->n_mtime) / 10 < NFS_MINATTRTIMO) ? NFS_MINATTRTIMO : \
-        ((time.tv_sec - (np)->n_mtime) / 10 > NFS_MAXATTRTIMO ? NFS_MAXATTRTIMO : \
-         (time.tv_sec - (np)->n_mtime) / 10))
+        (time.tv_sec - (np)->n_mtime.tv_sec) / 10 < NFS_MINATTRTIMO) ? NFS_MINATTRTIMO : \
+        ((time.tv_sec - (np)->n_mtime.tv_sec) / 10 > NFS_MAXATTRTIMO ? NFS_MAXATTRTIMO : \
+         (time.tv_sec - (np)->n_mtime.tv_sec) / 10))
 
 /*
  * Expected allocation sizes for major data structures. If the actual size
diff -r b83e39559134 -r db4702eccfd9 sys/nfs/nfs_bio.c
--- a/sys/nfs/nfs_bio.c Fri Sep 26 10:34:41 2003 +0000
+++ b/sys/nfs/nfs_bio.c Fri Sep 26 11:51:53 2003 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: nfs_bio.c,v 1.109 2003/09/17 09:11:12 yamt Exp $       */
+/*     $NetBSD: nfs_bio.c,v 1.110 2003/09/26 11:51:53 yamt Exp $       */
 
 /*
  * Copyright (c) 1989, 1993
@@ -35,7 +35,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nfs_bio.c,v 1.109 2003/09/17 09:11:12 yamt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nfs_bio.c,v 1.110 2003/09/26 11:51:53 yamt Exp $");
 
 #include "opt_nfs.h"
 #include "opt_ddb.h"
@@ -146,12 +146,12 @@
                        error = VOP_GETATTR(vp, &vattr, cred, p);
                        if (error)
                                return (error);
-                       np->n_mtime = vattr.va_mtime.tv_sec;
+                       np->n_mtime = vattr.va_mtime;
                } else {
                        error = VOP_GETATTR(vp, &vattr, cred, p);
                        if (error)
                                return (error);
-                       if (np->n_mtime != vattr.va_mtime.tv_sec) {
+                       if (timespeccmp(&np->n_mtime, &vattr.va_mtime, !=)) {
                                if (vp->v_type == VDIR) {
                                        nfs_invaldircache(vp, 0);
                                        np->n_direofoffset = 0;
@@ -159,7 +159,7 @@
                                error = nfs_vinvalbuf(vp, V_SAVE, cred, p, 1);
                                if (error)
                                        return (error);
-                               np->n_mtime = vattr.va_mtime.tv_sec;
+                               np->n_mtime = vattr.va_mtime;
                        }
                }
        }
@@ -921,11 +921,11 @@
                        }
                }
                if (uiop->uio_procp && (vp->v_flag & VTEXT) &&
-                       (((nmp->nm_flag & NFSMNT_NQNFS) &&
-                         NQNFS_CKINVALID(vp, np, ND_READ) &&
-                         np->n_lrev != np->n_brev) ||
-                        (!(nmp->nm_flag & NFSMNT_NQNFS) &&
-                         np->n_mtime != np->n_vattr->va_mtime.tv_sec))) {
+                   (((nmp->nm_flag & NFSMNT_NQNFS) &&
+                     NQNFS_CKINVALID(vp, np, ND_READ) &&
+                     np->n_lrev != np->n_brev) ||
+                    (!(nmp->nm_flag & NFSMNT_NQNFS) &&
+                     timespeccmp(&np->n_mtime, &np->n_vattr->va_mtime, !=)))) {
                        uprintf("Process killed due to "
                                "text file modification\n");
                        psignal(uiop->uio_procp, SIGKILL);
diff -r b83e39559134 -r db4702eccfd9 sys/nfs/nfs_subs.c
--- a/sys/nfs/nfs_subs.c        Fri Sep 26 10:34:41 2003 +0000
+++ b/sys/nfs/nfs_subs.c        Fri Sep 26 11:51:53 2003 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: nfs_subs.c,v 1.127 2003/08/07 16:33:53 agc Exp $       */
+/*     $NetBSD: nfs_subs.c,v 1.128 2003/09/26 11:51:53 yamt Exp $      */
 
 /*
  * Copyright (c) 1989, 1993
@@ -70,7 +70,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nfs_subs.c,v 1.127 2003/08/07 16:33:53 agc Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nfs_subs.c,v 1.128 2003/09/26 11:51:53 yamt Exp $");
 
 #include "fs_nfs.h"
 #include "opt_nfs.h"
@@ -1644,7 +1644,7 @@
                                *vpp = vp = nvp;
                        }
                }
-               np->n_mtime = mtime.tv_sec;
+               np->n_mtime = mtime;
        }
        uid = fxdr_unsigned(uid_t, fp->fa_uid);
        gid = fxdr_unsigned(gid_t, fp->fa_gid);
diff -r b83e39559134 -r db4702eccfd9 sys/nfs/nfs_vnops.c
--- a/sys/nfs/nfs_vnops.c       Fri Sep 26 10:34:41 2003 +0000
+++ b/sys/nfs/nfs_vnops.c       Fri Sep 26 11:51:53 2003 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: nfs_vnops.c,v 1.179 2003/09/25 23:10:58 enami Exp $    */
+/*     $NetBSD: nfs_vnops.c,v 1.180 2003/09/26 11:51:53 yamt Exp $     */
 
 /*
  * Copyright (c) 1989, 1993
@@ -39,7 +39,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nfs_vnops.c,v 1.179 2003/09/25 23:10:58 enami Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nfs_vnops.c,v 1.180 2003/09/26 11:51:53 yamt Exp $");
 
 #include "opt_nfs.h"
 #include "opt_uvmhist.h"
@@ -498,12 +498,12 @@
                        error = VOP_GETATTR(vp, &vattr, ap->a_cred, ap->a_p);
                        if (error)
                                return (error);
-                       np->n_mtime = vattr.va_mtime.tv_sec;
+                       np->n_mtime = vattr.va_mtime;
                } else {
                        error = VOP_GETATTR(vp, &vattr, ap->a_cred, ap->a_p);
                        if (error)
                                return (error);
-                       if (np->n_mtime != vattr.va_mtime.tv_sec) {
+                       if (timespeccmp(&np->n_mtime, &vattr.va_mtime, !=)) {
                                if (vp->v_type == VDIR) {
                                        nfs_invaldircache(vp, 0);
                                        np->n_direofoffset = 0;
@@ -511,7 +511,7 @@
                                if ((error = nfs_vinvalbuf(vp, V_SAVE,
                                        ap->a_cred, ap->a_p, 1)) == EINTR)
                                        return (error);
-                               np->n_mtime = vattr.va_mtime.tv_sec;
+                               np->n_mtime = vattr.va_mtime;
                        }
                }
        }
@@ -1405,8 +1405,7 @@
                } else
                        nfsm_loadattr(vp, (struct vattr *)0, NAC_NOTRUNC);
                if (wccflag)
-                       VTONFS(vp)->n_mtime =
-                           VTONFS(vp)->n_vattr->va_mtime.tv_sec;
+                       VTONFS(vp)->n_mtime = VTONFS(vp)->n_vattr->va_mtime;
                m_freem(mrep);
                if (error)
                        break;
diff -r b83e39559134 -r db4702eccfd9 sys/nfs/nfsm_subs.h
--- a/sys/nfs/nfsm_subs.h       Fri Sep 26 10:34:41 2003 +0000
+++ b/sys/nfs/nfsm_subs.h       Fri Sep 26 11:51:53 2003 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: nfsm_subs.h,v 1.31 2003/08/07 16:33:56 agc Exp $       */
+/*     $NetBSD: nfsm_subs.h,v 1.32 2003/09/26 11:51:53 yamt Exp $      */
 
 /*
  * Copyright (c) 1989, 1993
@@ -217,9 +217,12 @@
                nfsm_dissect(tl, u_int32_t *, NFSX_UNSIGNED); \
                if (*tl == nfs_true) { \
                        nfsm_dissect(tl, u_int32_t *, 6 * NFSX_UNSIGNED); \
-                       if (f) \
-                               ttretf = (VTONFS(v)->n_mtime == \
-                                       fxdr_unsigned(u_int32_t, *(tl + 2))); \
+                       if (f) { \
+                               struct timespec mtime; \
+                               fxdr_nfsv3time(tl + 2, &mtime); \
+                               ttretf = timespeccmp(&VTONFS(v)->n_mtime, \
+                                   &mtime, ==); \
+                       } \
                } \
                nfsm_postop_attr((v), ttattrf, (flags)); \
                if (f) { \
diff -r b83e39559134 -r db4702eccfd9 sys/nfs/nfsnode.h
--- a/sys/nfs/nfsnode.h Fri Sep 26 10:34:41 2003 +0000
+++ b/sys/nfs/nfsnode.h Fri Sep 26 11:51:53 2003 +0000
@@ -1,4 +1,4 @@
-/*      $NetBSD: nfsnode.h,v 1.43 2003/09/17 09:10:02 yamt Exp $       */
+/*      $NetBSD: nfsnode.h,v 1.44 2003/09/26 11:51:53 yamt Exp $       */
 
 /*
  * Copyright (c) 1989, 1993
@@ -119,7 +119,7 @@
        struct lockf            *n_lockf;       /* Locking record of file */
        unsigned                *n_dirgens;     /* 32<->64bit xlate gen. no. */
        time_t                  n_attrstamp;    /* Attr. cache timestamp */
-       time_t                  n_mtime;        /* Prev modify time. */
+       struct timespec         n_mtime;        /* Prev modify time. */
        time_t                  n_ctime;        /* Prev create time. */
        struct timespec         n_nctime;       /* Last neg cache entry (dir) */
        time_t                  n_expiry;       /* Lease expiry time */



Home | Main Index | Thread Index | Old Index