tacme: attempt to fix Put mtime skew on NFS - plan9port - [fork] Plan 9 from user space
 (HTM) git clone git://src.adamsgaard.dk/plan9port
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit be856b940fb5abb22abe649256bb4283c07c3d85
 (DIR) parent 1619f52cbc2096dd2fc93b189890bc8fd0771681
 (HTM) Author: Russ Cox <rsc@swtch.com>
       Date:   Thu, 18 Mar 2010 18:07:39 -0700
       
       acme: attempt to fix Put mtime skew on NFS
       
       R=r
       http://codereview.appspot.com/583043
       
       Diffstat:
         M src/cmd/acme/exec.c                 |      13 +++++++++++++
       
       1 file changed, 13 insertions(+), 0 deletions(-)
       ---
 (DIR) diff --git a/src/cmd/acme/exec.c b/src/cmd/acme/exec.c
       t@@ -687,6 +687,19 @@ putfile(File *f, int q0, int q1, Rune *namer, int nname)
                                w->dirty = TRUE;
                                f->unread = TRUE;
                        }else{
       +                        // In case the file is on NFS, reopen the fd
       +                        // before dirfstat to cause the attribute cache
       +                        // to be updated (otherwise the mtime in the
       +                        // dirfstat below will be stale and not match
       +                        // what NFS sees).  The file is already written,
       +                        // so this should be a no-op when not on NFS.
       +                        // Opening for OWRITE (but no truncation)
       +                        // in case we don't have read permission.
       +                        // (The create above worked, so we probably
       +                        // still have write permission.)
       +                        close(fd);
       +                        fd = open(name, OWRITE);
       +
                                d1 = dirfstat(fd);
                                if(d1 != nil){
                                        free(d);