yes. very good observation. the following change fixes it for me (with added 
comments)

term% hg diff -r 1763 cw.c
diff -r 5229de0742e8 sys/src/cmd/cwfs/cw.c
--- a/sys/src/cmd/cwfs/cw.c     Tue Jul 24 19:42:18 2012 +0200
+++ b/sys/src/cmd/cwfs/cw.c     Mon Feb 25 06:30:55 2013 +0100
@@ -1557,14 +1557,13 @@
        d1->uid = d->uid;
        d1->gid = d->gid;
        putbuf(p);
-       accessdir(p1, d1, FWRITE, 0);   <- was modifying yyyy direcoty in case 
when added, will do below instead
+       accessdir(pr, dr, FWRITE, 0);   <- update mtime of dumproot as we added 
yyyy directory
 
        /*
         * put mmdd[count] in year directory
         */
 found2:
-       accessdir(p1, d1, FREAD, 0);    <- was updating atime of yyyy 
direcotory in case when it was already present. this is not needed as we'r 
going to always update both atime and mtime below
-       p1->flags |= Bmod;      /* noatime */
+       accessdir(pr, dr, FREAD, 0);    <- update atime of dumproot only as we 
didnt add a new yyyy direcotory
        putbuf(pr);
        pr = p1;                                                <- yyyy 
directory become pr/dr
        dr = d1;
@@ -1603,6 +1602,7 @@
        d1->qid.version += n;
        accessdir(p1, d1, FWRITE, 0);   <- update dump sub directory times
        putbuf(p1);
+       accessdir(pr, dr, FWRITE, 0);   <- now update atime and mtime of yyyy 
directory after creating dump sub directory in it
        putbuf(pr);
 
        cw->fsize = cwsize(cw->dev);

the problem was that we only updated mtime of the yyyy directory when
we newly created it, otherwise only access time was updated. but we
*always* have to update mtime of the yyyy directory because we are
modifying it by creating the dump sub directory in it.

--
cinap

Reply via email to