Hello sinap, thank you for your quick fix. your patches work also for me.
however the problem is not only in dump but (I think) in all directories of cwfs. # # fossil # ar% ls -lt --rw-r--r-- M 546403 arisawa arisawa 1123 Apr 3 2001 a.c --rwxrwxr-x M 546403 arisawa arisawa 39276 Mar 31 2001 8.out --rw-rw-r-- M 546403 arisawa arisawa 4559 Mar 31 2001 a.8 --rw-r--r-- M 546403 arisawa arisawa 248 Mar 31 2001 mkfile ar% ls -ld . d-rwxrwxrwx M 546403 arisawa arisawa 0 Aug 5 2002 wrk ar% touch a.c ar% ls -ld . d-rwxrwxrwx M 546403 arisawa arisawa 0 Feb 25 16:02 wrk # this is OK because the directory is updated ar% # # cwfs # maia# ls -lt --rw-rw-r-- M 20 arisawa arisawa 43320 Feb 25 15:50 cw.c d-rwxrwxr-x M 20 arisawa arisawa 0 Feb 17 17:43 cwfs64x ... maia# ls -ld . d-rwxrwxr-x M 20 arisawa arisawa 0 Sep 11 14:17 cwfs # NG because cw.c updated this time. maia# Kenji Arisawa On 2013/02/25, at 14:55, cinap_len...@gmx.de wrote: > 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 >