[Last updated April 20 2007] Aardvark Summary Table ______________________ ERN 1 Accept as marked ERN 2 Accept ERN 3 Accept ERN 4 Accept as marked ERN 5 Accept as marked ERN 6 Duplicate of 5 ERN 7 Accept as marked ERN 8 Accept as marked ERN 9 Duplicate of 3 ERN 10 Accept as marked _____________________________________________________________________________ OBJECTION Enhancement Request Number 1 nick:xxxxxxxxxx Fine grain timestamp updates (rdvk# 1) _____________________________________________________________________________ Accept_____ Accept as marked below_X___ Duplicate_____ Reject_____ Rationale for rejected or partial changes: File Times Update Each file has three distinct associated timestamps: the time of last data access, the time of last data modification, and the time the file status last changed. These values are returned in the file characteristics structure, struct stat, as described in . Each function or utility in IEEE Std 1003.1-200x that reads or writes data or changes file status indicates which of the appropriate timestamps shall be "marked for update". If an implementation of such a function or utility marks for update one of these timestamps in a place or time not specified by IEEE Std 1003.1-200x, this shall be documented, except that any changes caused by pathname resolution need not be documented. For the other functions or utilities in IEEE Std 1003.1-200x (those that are not explicitly required to read or write file data or change file status, but that in some implementations happen to do so), the effect is unspecified. An implementation may update timestamps that are marked for update immediately, or it may update such timestamps periodically. At the point in time when an update occurs, any marked timestamps shall be set to the current time and the update marks shall be cleared. All timestamps that are marked for update shall be updated when the file ceases to be open by any process or before a stat(), fstat(), lstat(), fsync(), utime(), utimensat(), or utimes() is successfully performed on the file. Other times at which updates are done are unspecified. Marks for update, and updates themselves, shall not be done for files on read-only file systems; see Section 3.304 (on page 73). The resolution of timestamps of files in a file system is implementation-defined, but shall be no coarser than one-second resolution. The three timestamps shall always have values that are supported by the file system. Whenever any of a file's timestamps are to be set to a value V according to the rules of the preceding paragraphs of this section, the implementation shall immediately set the timestamp to the greatest value supported by the file system that is not greater than V. _____________________________________________________________________________ Page: 95 Line: 2913-2932 Section: 4.8 Problem: Fine Grain timestamp updates Action: Change entire section from: File Times Update Each file has three distinct associated time values: st_atime, st_mtime, and st_ctime. The st_atime field is associated with the times that the file data is accessed; st_mtime is associated with the times that the file data is modified; and st_ctime is associated with the times that the file status is changed. These values are returned in the file characteristics structure, as described in . Each function or utility in IEEE Std 1003.1-200x that reads or writes data or changes file status indicates which of the appropriate time-related fields shall be "marked for update". If an implementation of such a function or utility marks for update a time-related field not specified by IEEE Std 1003.1-200x, this shall be documented, except that any changes caused by pathname resolution need not be documented. For the other functions or utilities in IEEE Std 1003.1-200x (those that are not explicitly required to read or write file data or change file status, but that in some implementations happen to do so), the effect is unspecified. An implementation may update fields that are marked for update immediately, or it may update such fields periodically. At an update point in time, any marked fields shall be set to the current time and the update marks shall be cleared. All fields that are marked for update shall be updated when the file ceases to be open by any process or before a stat( ), fstat( ), lstat( ), fsync( ), utime(), or utimes( ) is successfully performed on the file. Other times at which updates are done are unspecified. Marks for update, and updates themselves, are not done for files on read-only file systems; see Section 3.304 (on page 73). to: File Times Update Each file has three distinct associated timestamps: the time of last data access, the time of last data modification, and the time the file status last changed. These values are returned in the file characteristics structure, as described in . Each function or utility in IEEE Std 1003.1-200x that reads or writes data or changes file status indicates which of the appropriate timestamps shall be "marked for update". If an implementation of such a function or utility marks for update one of these timestamps in a place or time not specified by IEEE Std 1003.1-200x, this shall be documented, except that any changes caused by pathname resolution need not be documented. For the other functions or utilities in IEEE Std 1003.1-200x (those that are not explicitly required to read or write file data or change file status, but that in some implementations happen to do so), the effect is unspecified. An implementation may update timestamps that are marked for update immediately, or it may update such timestamps periodically. At the point in time when an update occurs, any marked timestamps shall be set to the current time and the update marks shall be cleared. All timestamps that are marked for update shall be updated when the file ceases to be open by any process or before a stat(), fstat(), lstat(), fsync(), utime(), utimensat(), or utimes() is successfully performed on the file. Other times at which updates are done are unspecified. Marks for update, and updates themselves, shall not be done for files on read-only file systems; see Section 3.304 (on page 73). The resolution of timestamps of files in a file system is implementation-defined, but shall be no coarser than one-second resolution. The three timestamps shall always have values that are supported by the file system. Whenever any of a file's timestamps are to be set to a value V according to the rules of the preceding paragraphs of this section, the implementation shall immediately set the timestamp to the greatest value supported by the file system that is not greater than V. [ See mail seq 10329 > File Times Update > > Each file has three distinct associated timestamps: the time > of last data access, the time of last data modification, and the > time the file status last changed. These values are returned in > the file characteristics structure, as described in . Please add the C name of the structure here ^^^ (and add a comma). {....} > successfully > performed on the file. Other times at which updates are done are > unspecified. Marks for update, and updates themselves, shall not > be done for files on read-only file systems; see Section 3.304 > (on page 73). Perhaps some rational could be added here, e.g., "Thus, in the absence of operating system crashes [or however this situation is described in officialeze], applications can rely on the correctness of timestamps; however, not all timestamps may be correct after a system crash. Furthermore, any delay in the update of timestamps must not be visible to applications: caching of timestamp updates must be transparent." > supported by the file system. Whenever any of a file's timestamps > are to be set to a value V according to the rules of the preceding > paragraphs of this section, the implementation shall immediately > set the timestamp to the greatest value supported by the > file system that is not greater than V. Again, a bit of rational might help (at least me): "Thus, timestamps will never indicate times in the future". ] _____________________________________________________________________________ OBJECTION Enhancement Request Number 2 nick:xxxxxxxxxx Fine grain timestamp updates (rdvk# 2) _____________________________________________________________________________ Accept_X___ Accept as marked below_____ Duplicate_____ Reject_____ Rationale for rejected or partial changes: _____________________________________________________________________________ Page: 365 Line: 12739-12741 Section: sys/stat.h Problem: Fine Grain timestamp updates Action: Change lines 12739-12741 from time_t st_atime Time of last access. time_t st_mtime Time of last data modification. time_t st_ctime Time of last status change. to: struct timespec st_atim Last data access timestamp. struct timespec st_mtim Last data modification timestamp. struct timespec st_ctim Last file status change timestamp. _____________________________________________________________________________ OBJECTION Enhancement Request Number 3 nick:xxxxxxxxxx Fine grain timestamp updates (rdvk# 3) _____________________________________________________________________________ Accept_X___ Accept as marked below_____ Duplicate_____ Reject_____ Rationale for rejected or partial changes: _____________________________________________________________________________ Page: 365 Line: 12748-12749 Section: sys/stat.h Problem: Fine Grain timestamp updates Action: Change from: The timespec structure may be defined as described in . to: The timespec structure shall be defined as described in . _____________________________________________________________________________ OBJECTION Enhancement Request Number 4 nick:xxxxxxxxxx Fine grain timestamp updates (rdvk# 4) _____________________________________________________________________________ Accept_____ Accept as marked below_X___ Duplicate_____ Reject_____ Rationale for rejected or partial changes: Add a new paragraph after line 12752: For compatibility with previous editions of this standard the st_atime macro shall be defined with the value st_atim.tv_sec. Similarly, st_ctime and st_mtime shall be defined as macros with the values st_ctim.tv_sec and st_mtim.tv_sec, respectively. _____________________________________________________________________________ Page: 365 Line: 12752 Section: sys/stat.h Problem: Fine Grain timestamp updates Action: Add a new paragraph after line 12752: The st_atime field shall be an alias for the st_atim.tm_sec field. It is implementation-defined whether this aliasing is via a macro (e.g., "#define st_atime st_atim.tv_sec") or by other means. Similarly, st_ctime shall be an alias for st_ctim.tm_sec, and st_mtime for st_mtim.tm_sec. _____________________________________________________________________________ OBJECTION Enhancement Request Number 5 nick:xxxxxxxxxx Fine grain timestamp updates (rdvk# 5) _____________________________________________________________________________ Accept_____ Accept as marked below_X___ Duplicate_____ Reject_____ Rationale for rejected or partial changes: Add a new paragraph to rationale for : Upon assignment, file timestamps are immediately converted to the resolution of the file system by truncation (i.e., the recorded time can be older than the actual time). For example, if the file system resolution is 1 microsecond, then a conforming stat() must always return an st_mtim.tv_nsec that is a multiple of 1000. Some older implementations returned higher-resolution time stamps while the inode information was cached, and then spontaneously truncated the tv_nsec fields when they were stored to and retrieved from disk, but this behavior does not conform. _____________________________________________________________________________ Page: 367 Line: 12841 Section: sys/stat.h Problem: Fine Grain timestamp updates Action: Add a new paragraph to rationale for : When a file timestamp is converted to file system resolution, it may decrease by a nonnegative value that is less than the file system resolution. This action must occur immediately, and must not be visible to applications. For example, if the file system resolution is 1 microsecond, then a conforming stat() must always return an st_mtim.tv_nsec that is a multiple of 1000. Some older implementations returned higher-resolution time stamps while the inode information was cached, and then spontaneously truncated the tv_nsec fields when they were stored to and retrieved from disk, but this behavior does not conform. [ See mail seq 10329 > This action must occur immediately, > and must not be visible to applications. Don't you mean: "Upon assignment, file timestamps are immediately converted to the resolution of the file system by truncation (i.e., the recorded time can be older than the actual time)." ] _____________________________________________________________________________ OBJECTION Enhancement Request Number 6 nick:xxxxxxxxxx Fine grain timestamp updates (rdvk# 6) _____________________________________________________________________________ Accept_____ Accept as marked below_____ Duplicate_of_5 Reject_____ Rationale for rejected or partial changes: _____________________________________________________________________________ Page: 368 Line: 12841 Section: sys/stat.h Problem: Fine Grain timestamp updates Action: After line 12841 add new paragraph: When a file timestamp is converted to file system resolution, it may decrease by a nonnegative value that is less than the file system resolution. This action must occur immediately, and must not be visible to applications. For example, if the file system resolution is 1 microsecond, then a conforming stat() must always return an st_mtim.tv_nsec that is a multiple of 1000. Some older implementations returned higher-resolution time stamps while the inode information was cached, and then spontaneously truncated the tv_nsec fields when they were stored to and retrieved from disk, but this behavior does not conform. _____________________________________________________________________________ OBJECTION Enhancement Request Number 7 nick:xxxxxxxxxx Fine grain timestamp updates (rdvk# 7) _____________________________________________________________________________ Accept_____ Accept as marked below_X___ Duplicate_____ Reject_____ Rationale for rejected or partial changes: Delete line 12970 (declaration of futimesat in sys/time.h) Add int utimensat(int, const char *, const struct timespec [2]); to the p 367 after line 12828 (after umask declaration) _____________________________________________________________________________ Page: 372 Line: 12970 Section: sys/time.h Problem: Fine Grain timestamp updates Action: change from: [XSI]int futimesat(int, const char *, const struct timeval [2]);[/XSI] to int utimensat(int, const char *, const struct timespec [2]); and move this to the correct alphabetical place in this list. (there is also an associated change history for version 7 that should change on line 12999) _____________________________________________________________________________ OBJECTION Enhancement Request Number 8 nick:xxxxxxxxxx Fine grain timestamp updates (rdvk# 8) _____________________________________________________________________________ Accept_____ Accept as marked below_X___ Duplicate_____ Reject_____ Rationale for rejected or partial changes: Add a new paragraph to sys/stat.h p367 line 12812 The following symbolic constants shall be defined as distinct integer values outside of the range [0,999 999 999], for use with the utimensat() function: UTIME_NOW UTIME_OMIT (Cathy check the number spacing in the range ) _____________________________________________________________________________ Page: 372 Line: 12978 Section: sys/time.h Problem: Fine Grain timestamp updates Action: Add a new paragraph before line 12978 The following symbolic constants shall be defined as distinct negative integer values, for use with the utimensat() function: UTIME_NOW UTIME_OMIT _____________________________________________________________________________ OBJECTION Enhancement Request Number 9 nick:xxxxxxxxxx Fine grain timestamp updates (rdvk# 9) _____________________________________________________________________________ Accept_____ Accept as marked below_____ Duplicate_of_3 Reject_____ Rationale for rejected or partial changes: _____________________________________________________________________________ Page: 372 Line: 12978-12979 Section: sys/time.h Problem: Fine Grain timestamp updates Action: Change from: Inclusion of the header may make visible all symbols from the header. to: Inclusion of the header may make visible all symbols from the and headers. _____________________________________________________________________________ OBJECTION Enhancement Request Number 10 nick:xxxxxxxxxx Fine grain timestamp updates (rdvk# 10) _____________________________________________________________________________ Accept_____ Accept as marked below_X___ Duplicate_____ Reject_____ Rationale for rejected or partial changes: Change from: #include to: [OB]#include [/OB] Add to APP USAGE The utime() function only allows setting file timestamps to the nearest second. Applications should use utimensat() instead. See . Add to SEE ALSO _____________________________________________________________________________ Page: 427 Line: 14989 Section: utime.h Problem: Fine Grain timestamp updates Action: Change from: #include to: [OB]#include [/OB] Add to APP USAGE The utime() function only allows setting file timestamps to the nearest second. Applications should use utimensat() instead. See . Add to SEE ALSO