On Fri, May 30, 2014 at 05:41:14PM -0700, H. Peter Anvin wrote:
> On 05/30/2014 05:37 PM, Dave Chinner wrote:
> > IOWs, the filesystem has to be able to reject any attempt to set a
> > timestamp that is can't represent on disk otherwise Bad Stuff will
> > happen,
> Actually it is questionable if it is worse to reject a timestamp or just
> let it wrap. Rejecting a valid timestamp is a bit like "You don't
> exist, go away."
I think having the new systems calls being able to
return EINVAL if the value cannot be stored permanently on disk
correctly is the right thing to do. Having it silently mangled
by the filesystem and returning "everything is just fine, trust me"
is close to the worst solution I can think of. That's exactly what
leads to overflow bugs occurring....
> > and filesystems have to be able to specify in their on
> > disk format what timestamp encoding is being used. The solution will
> > be different for every filesystem that needs to support time beyond
> > 2038.
> Actually the cutoff can be really different for each filesystem, not
> necessarily 2038. However, I maintain the above still holds.
Sure, but all filesystems are supposed to handle at least the
current unix epoch.
> Consider a filesystem that kept timestamps in YYMMDDHHMMSS format. What
> would you have expected such a filesystem to do on Jan 1, 2000?
We don't need to cater for fundamentally broken designs that can't
even handle the current unix epoch correctly. If such filesystems
exist, then they can simple say "original unix epoch support only"
and do whatever crap they are doing right now.