This is fine when you are comparing two files with the same timestamp
resolution, but when the resolutions are different you need to know
what they are.
Come to think of it, rounding up is no better than rounding down when
comparing two files. The application needs to round one of them up
and one of them down, in order to make reliable tests of the form "is
this file definitely newer than this other file".
For those kinds of tests, the application needs to know a lower bound
of the resolution. Note that a jiffie is not suitable as the lower
bound, because that part of the timestamp is dropped when the inode is
dropped from memory.
The other kind of test is a comparison of one file against against its
own modification time when something derived from the file was last
cached. (This is appropriate for server requests and JIT compiler
launching, for example).
This time there is only one resolution. Nevertheless, to make a
reliable test of the form "have the contents of the file definitely
not been modified since mtime T", neither form of rounding on the
kernel side is sufficient: the application needs to know the
resolution.
I think that in all cases, for the application to make useful
decisions it needs to know the resolution of the timestamps in any
particular struct stat. If those resolutions change when an inode is
flushed from memory: that should change the resolution returned by
struct stat.
So I propose: add a field to struct stat indicating the resolution of
the timestamps in it. It can go on the end.
-- Jamie
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/