[tahoe-dev] [tahoe-lafs] #924: stop writing mtime and ctime fields (except for "tahoe backup")

tahoe-lafs trac at allmydata.org
Fri Jan 22 05:07:36 UTC 2010

#924: stop writing mtime and ctime fields (except for "tahoe backup")
 Reporter:  zooko                                                                   |           Owner:  warner    
     Type:  enhancement                                                             |          Status:  new       
 Priority:  major                                                                   |       Milestone:  eventually
Component:  code-dirnodes                                                           |         Version:  1.5.0     
 Keywords:  backward-compatibility forward-compatibility unix windows tahoe-backup  |   Launchpad_bug:            
 In Tahoe-LAFS v1.3 metadata fields named {{{mtime}}} and {{{ctime}}} were
 written onto links both by "tahoe backup" and by any operation which
 created or updated a link.  In Tahoe-LAFS v1.4 we started putting data
 with clarified semantics in fields named {{{linkmotime}}} and
 {{{linkcrtime}}} in a sub-dict of the link metadata named {{{tahoe}}}.

 For backwards compatibility, we continued to write {{{mtime}}} and
 {{{ctime}}} into the original fields whenever a link was
 This situation, piled on top of the ambiguity and mistakes inherent in
 Python's notion of "ctime" (see #628 and #897) led to a rather complicated
 semantics for the {{{mtime}}} and {{{ctime}}} fields. Interpreting what a
 {{{ctime}}} field means require both figuring out whether "tahoe backup"
 or a different operation was the last operation to touch that link as well
 as whether that operation was running on Windows or another operating
 system.  See [source:docs/frontends/webapi.txt at 4112#L552 the doc about
 those fields] which takes up 86 lines in webapi.txt.

 In some future release of Tahoe-LAFS (for example, maybe Tahoe-LAFS v1.7)
 we should make it so that normal link creations or updates (i.e.,
 excluding the "tahoe backup" command) no longer write to the old
 {{{mtime}}} and {{{ctime}}} fields, but only to the new
 {{{tahoe:linkmotime}}} and {{{tahoe:linkcrtime}}} fields.

 This will greatly simplify the semantics of {{{mtime}}} and {{{ctime}}} --
 they will then mean only what "tahoe backup" intends them to mean (see
 #897 for what that is), provided that only new clients (>= v1.7) have ever
 written to them.  (Hm, that suggests that "tahoe backup" ought to choose
 new names, such as creating a new sub-dict named {{{backup}}} or
 {{{original-file-metadata}}}, containing keys named something like
 {{{mtime}}} and {{{posix-change-time}}} and {{{creation-time}}}, and we
 should abandon the old {{{mtime}}} completely...)

 This will mean that Tahoe-LAFS v1.3 clients which examine those
 directories will not see any mtime or ctime info but they will still be
 able to use the links to access file contents.

Ticket URL: <http://allmydata.org/trac/tahoe/ticket/924>
tahoe-lafs <http://allmydata.org>
secure decentralized file storage grid

More information about the tahoe-dev mailing list