Re: [f2fs-dev] [RFC 00/32] making inode time stamps y2038 ready

2014-06-12 Thread Arnd Bergmann
On Wednesday 04 June 2014 17:10:24 H. Peter Anvin wrote:
 On 06/04/2014 12:24 PM, Arnd Bergmann wrote:
  
  For other timekeeping stuff in the kernel, I agree that using some
  64-bit representation (nanoseconds, 32/32 unsigned seconds/nanoseconds,
  ...) has advantages, that's exactly the point I was making earlier
  against simply extending the internal time_t/timespec to 64-bit
  seconds for everything.
  
 
 How much of a performance issue is it to make time_t 64 bits, and for
 the bits there are, how hard are they to fix?

Probably very little overhead for most uses, it's more the regression
potential in the less common parts of the kernel I'm worried about.

There is a significant but not overwhelming number of uses of the
main problematic types in the kernel:

arnd@wuerfel:~/arm-soc$ git grep -wl time_t | wc
188 1885566
arnd@wuerfel:~/arm-soc$ git grep -wl timeval | wc
320 320   10353
arnd@wuerfel:~/arm-soc$ git grep -wl timespec | wc
406 406   10886

I believe we have to audit all of them anyway if we want to change
the kernel to less problematic types and introduce new user
interfaces.

IMHO this work is helped if we change the uses to a new type
as we find the problems. This lets us do the work one subsystem
at a time and avoid accidental ABI changes. I don't care much what
type that will be, and having a 96-bit type will certainly work
well in a lot of cases, but I don't see a strong reason to use
that over other types, especially when they can be more efficient.

Arnd

--
HPCC Systems Open Source Big Data Platform from LexisNexis Risk Solutions
Find What Matters Most in Your Big Data with HPCC Systems
Open Source. Fast. Scalable. Simple. Ideal for Dirty Data.
Leverages Graph Analysis for Fast Processing  Easy Data Exploration
http://p.sf.net/sfu/hpccsystems
___
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel


Re: [f2fs-dev] [RFC 00/32] making inode time stamps y2038 ready

2014-06-06 Thread Nicolas Pitre
On Wed, 4 Jun 2014, Arnd Bergmann wrote:

 On Tuesday 03 June 2014, Dave Chinner wrote:
  Just ot be pedantic, inodes don't need 96 bit timestamps - some
  filesystems can *support up to* 96 bit timestamps. If the kernel
  only supports 64 bit timestamps and that's all the kernel can
  represent, then the upper bits of the 96 bit on-disk inode
  timestamps simply remain zero.
 
 I meant the reverse: since we have file systems that can store
 96-bit timestamps when using 64-bit kernels, we need to extend
 32-bit kernels to have the same internal representation so we
 can actually read those file systems correctly.
 
  If you move the filesystem between kernels with different time
  ranges, then the filesystem needs to be able to tell the kernel what
  it's supported range is.  This is where having the VFS limit the
  range of supported timestamps is important: the limit is the
  min(kernel range, filesystem range). This allows the filesystems
  to be indepenent of the kernel time representation, and the kernel
  to be independent of the physical filesystem time encoding
 
 I agree it makes sense to let the kernel know about the limits
 of the file system it accesses, but for the reverse, we're probably
 better off just making the kernel representation large enough (i.e.
 96 bits) so it can work with any known file system.

Depends...  96 bit handling may get prohibitive on 32-bit archs.

The important point here is for the kernel to be able to represent the 
time _range_ used by any known filesystem, not necessarily the time 
_precision_.

For example, a 64 bit representation can be made of 40 bits for seconds 
spanning 34865 years, and 24 bits for fractional seconds providing 
precision down to 60 nanosecs.  That ought to be plenty good on 32 bit 
systems while still being cheap to handle.


Nicolas

--
Learn Graph Databases - Download FREE O'Reilly Book
Graph Databases is the definitive new guide to graph databases and their 
applications. Written by three acclaimed leaders in the field, 
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/NeoTech
___
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel


Re: [f2fs-dev] [RFC 00/32] making inode time stamps y2038 ready

2014-06-06 Thread Arnd Bergmann
On Tuesday 03 June 2014, Dave Chinner wrote:
 On Tue, Jun 03, 2014 at 04:22:19PM +0200, Arnd Bergmann wrote:
  On Monday 02 June 2014 14:57:26 H. Peter Anvin wrote:
   On 06/02/2014 12:55 PM, Arnd Bergmann wrote:
  The possible uses I can see for non-ktime_t types in the kernel are:
  * inodes need 96 bit timestamps to represent the full range of values
that can be stored in a file system, you made a convincing argument
for that. Almost everything else can fit into 64 bit on a 32-bit
kernel, in theory also on a 64-bit kernel if we want that.
 
 Just ot be pedantic, inodes don't need 96 bit timestamps - some
 filesystems can *support up to* 96 bit timestamps. If the kernel
 only supports 64 bit timestamps and that's all the kernel can
 represent, then the upper bits of the 96 bit on-disk inode
 timestamps simply remain zero.

I meant the reverse: since we have file systems that can store
96-bit timestamps when using 64-bit kernels, we need to extend
32-bit kernels to have the same internal representation so we
can actually read those file systems correctly.

 If you move the filesystem between kernels with different time
 ranges, then the filesystem needs to be able to tell the kernel what
 it's supported range is.  This is where having the VFS limit the
 range of supported timestamps is important: the limit is the
 min(kernel range, filesystem range). This allows the filesystems
 to be indepenent of the kernel time representation, and the kernel
 to be independent of the physical filesystem time encoding

I agree it makes sense to let the kernel know about the limits
of the file system it accesses, but for the reverse, we're probably
better off just making the kernel representation large enough (i.e.
96 bits) so it can work with any known file system. We need another
check at the user space boundary to turn that into a value that the
user can understand, but that's another problem.

Arnd

--
Learn Graph Databases - Download FREE O'Reilly Book
Graph Databases is the definitive new guide to graph databases and their 
applications. Written by three acclaimed leaders in the field, 
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/NeoTech
___
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel


Re: [f2fs-dev] [RFC 00/32] making inode time stamps y2038 ready

2014-06-06 Thread H. Peter Anvin
On 06/04/2014 12:24 PM, Arnd Bergmann wrote:
 
 For other timekeeping stuff in the kernel, I agree that using some
 64-bit representation (nanoseconds, 32/32 unsigned seconds/nanoseconds,
 ...) has advantages, that's exactly the point I was making earlier
 against simply extending the internal time_t/timespec to 64-bit
 seconds for everything.
 

How much of a performance issue is it to make time_t 64 bits, and for
the bits there are, how hard are they to fix?

-hpa



--
Learn Graph Databases - Download FREE O'Reilly Book
Graph Databases is the definitive new guide to graph databases and their 
applications. Written by three acclaimed leaders in the field, 
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/NeoTech
___
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel


Re: [f2fs-dev] [RFC 00/32] making inode time stamps y2038 ready

2014-06-06 Thread Arnd Bergmann
On Wednesday 04 June 2014 13:30:32 Nicolas Pitre wrote:
 On Wed, 4 Jun 2014, Arnd Bergmann wrote:
 
  On Tuesday 03 June 2014, Dave Chinner wrote:
   Just ot be pedantic, inodes don't need 96 bit timestamps - some
   filesystems can *support up to* 96 bit timestamps. If the kernel
   only supports 64 bit timestamps and that's all the kernel can
   represent, then the upper bits of the 96 bit on-disk inode
   timestamps simply remain zero.
  
  I meant the reverse: since we have file systems that can store
  96-bit timestamps when using 64-bit kernels, we need to extend
  32-bit kernels to have the same internal representation so we
  can actually read those file systems correctly.
  
   If you move the filesystem between kernels with different time
   ranges, then the filesystem needs to be able to tell the kernel what
   it's supported range is.  This is where having the VFS limit the
   range of supported timestamps is important: the limit is the
   min(kernel range, filesystem range). This allows the filesystems
   to be indepenent of the kernel time representation, and the kernel
   to be independent of the physical filesystem time encoding
  
  I agree it makes sense to let the kernel know about the limits
  of the file system it accesses, but for the reverse, we're probably
  better off just making the kernel representation large enough (i.e.
  96 bits) so it can work with any known file system.
 
 Depends...  96 bit handling may get prohibitive on 32-bit archs.
 
 The important point here is for the kernel to be able to represent the 
 time _range_ used by any known filesystem, not necessarily the time 
 _precision_.
 
 For example, a 64 bit representation can be made of 40 bits for seconds 
 spanning 34865 years, and 24 bits for fractional seconds providing 
 precision down to 60 nanosecs.  That ought to be plenty good on 32 bit 
 systems while still being cheap to handle.

I have checked earlier that we don't do any computation on inode
time stamps in common code, we just pass them around, so there is
very little runtime overhead. There is a small bit of space overhead
(12 byte) per inode, but that structure is already on the order of
500 bytes.

For other timekeeping stuff in the kernel, I agree that using some
64-bit representation (nanoseconds, 32/32 unsigned seconds/nanoseconds,
...) has advantages, that's exactly the point I was making earlier
against simply extending the internal time_t/timespec to 64-bit
seconds for everything.

Arnd

--
Learn Graph Databases - Download FREE O'Reilly Book
Graph Databases is the definitive new guide to graph databases and their 
applications. Written by three acclaimed leaders in the field, 
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/NeoTech
___
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel


Re: [f2fs-dev] [RFC 00/32] making inode time stamps y2038 ready

2014-06-04 Thread Arnd Bergmann
On Monday 02 June 2014 14:57:26 H. Peter Anvin wrote:
 On 06/02/2014 12:55 PM, Arnd Bergmann wrote:
 
  The bit that is really going to hurt is every single ioctl that uses a
  timespec.
 
  Honestly, though, I really don't understand the point with struct
  inode_time.  It seems like the zeroeth-order thing is to change the
  kernel internal version of struct timespec to have a 64-bit time... it
  isn't just about inodes.  We then should be explicit about the external
  uses of time, and use accessors.
  
  I picked these because they are fairly isolated from all other uses,
  in particular since inode times are the only things where we really
  care about times in the distant past or future (decades away as opposed
  to things that happened between boot and shutdown).
  
 
 If nothing else, I would expect to be able to set the system time to
 weird values for testing.  So I'm not so sure I agree with that...

I think John Stultz and Thomas Gleixner have already started looking
at how the timekeeping code can be updated. Once that is done, we should
be able to add a functional 64-bit gettimeofday/settimeofday syscall
pair. While I definitely agree this is one of the most basic things to
have, it's also not an area of the kernel that is easy to change.

  For other kernel-internal uses, we may be better off migrating to
  a completely different representation, such as nanoseconds since
  boot or the architecture specific ktime_t, but this is really something
  to decide for each subsystem.
 
 Having a bunch of different time representations in the kernel seems
 like a real headache...

We already have time_t, ktime_t, timeval, timespec, compat_timespec,
clock_t, cputime_t, cputime64_t, tm, nanoseconds, jiffies, jiffies64,
and lots of driver or file system specific representations. I'm all for
removing a bunch of these from the kernel, but my feeling is that this is
one of the cases where we first have to add new ones in order to remove
those that are already there.
To complicate things further, we also have various times bases
(realtime/utc, realtime/tai, monotonic, monotonic_raw, boottime, ...),
and at least for the timespec values we pass around, it's not always
obvious which one is used, of if that's the right one.

We probably don't want to add a lot of new representations, and it's
possible that we can change most of the internal code we have to
ktime_t and then convert that to whatever user space wants at the
interfaces.

The possible uses I can see for non-ktime_t types in the kernel are:
* inodes need 96 bit timestamps to represent the full range of values
  that can be stored in a file system, you made a convincing argument
  for that. Almost everything else can fit into 64 bit on a 32-bit
  kernel, in theory also on a 64-bit kernel if we want that.
* A number of interfaces pass relative timespecs: nanosleep(), poll(),
  select(), sigtimedwait(), alarm(), futex() and probably more. There is
  nothing wrong with the use of timespec here, and it may be good to
  annotate that by using a new type (e.g. struct timeout) that is defined
  as compatible with the current timespec.
* For new user interfaces, we need a new type such as the
  __kernel_timespec64 I introduced, so it doesn't clash with the normal
  user timespec that may be smaller, depending on the libc.
* A lot of drivers will need new ioctl commands, and for drivers that
  just need time stamps (audio, v4l, sockets, ...) it may be more
  efficient and more correct to use a new timestamp_t (e.g. boot time
  64-bit nanoseconds) than __kernel_timespec64, which is not normally
  monotonic and requires a normalization step. If we end up introducing
  such a type in the user interface, we can also start using it in the
  kernel.

Arnd

--
Learn Graph Databases - Download FREE O'Reilly Book
Graph Databases is the definitive new guide to graph databases and their 
applications. Written by three acclaimed leaders in the field, 
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/NeoTech
___
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel


Re: [f2fs-dev] [RFC 00/32] making inode time stamps y2038 ready

2014-06-04 Thread Arnd Bergmann
On Tuesday 03 June 2014 14:33:10 Joseph S. Myers wrote:
 On Tue, 3 Jun 2014, Arnd Bergmann wrote:
 
  I think John Stultz and Thomas Gleixner have already started looking
  at how the timekeeping code can be updated. Once that is done, we should
  be able to add a functional 64-bit gettimeofday/settimeofday syscall
  pair. While I definitely agree this is one of the most basic things to
  have, it's also not an area of the kernel that is easy to change.
 
 64-bit clock_gettime / clock_settime instead of gettimeofday / 
 settimeofday should avoid the need for the kernel to have a 64-bit version 
 of struct timeval.  (Userspace 64-bit gettimeofday / settimeofday would 
 need to use a combination of the syscalls if the tz pointer is non-NULL.)

Yes, that's what I meant.

Arnd

--
Learn Graph Databases - Download FREE O'Reilly Book
Graph Databases is the definitive new guide to graph databases and their 
applications. Written by three acclaimed leaders in the field, 
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/NeoTech
___
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel


Re: [f2fs-dev] [RFC 00/32] making inode time stamps y2038 ready

2014-06-04 Thread Joseph S. Myers
On Tue, 3 Jun 2014, Arnd Bergmann wrote:

 I think John Stultz and Thomas Gleixner have already started looking
 at how the timekeeping code can be updated. Once that is done, we should
 be able to add a functional 64-bit gettimeofday/settimeofday syscall
 pair. While I definitely agree this is one of the most basic things to
 have, it's also not an area of the kernel that is easy to change.

64-bit clock_gettime / clock_settime instead of gettimeofday / 
settimeofday should avoid the need for the kernel to have a 64-bit version 
of struct timeval.  (Userspace 64-bit gettimeofday / settimeofday would 
need to use a combination of the syscalls if the tz pointer is non-NULL.)

-- 
Joseph S. Myers
jos...@codesourcery.com

--
Learn Graph Databases - Download FREE O'Reilly Book
Graph Databases is the definitive new guide to graph databases and their 
applications. Written by three acclaimed leaders in the field, 
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/NeoTech
___
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel


Re: [f2fs-dev] [RFC 00/32] making inode time stamps y2038 ready

2014-06-02 Thread Richard Cochran
On Sat, May 31, 2014 at 05:23:02PM +0200, Arnd Bergmann wrote:
 
 It's an approximation:

(Approximately never ;)

 with 64-bit timestamps, you can represent close to 300 billion
 years, which is way past the time that our planet can sustain
 life of any form[1].

Did you mean mean 64 bits worth of seconds?

  2^64 / (3600*24*365) = 584,942,417,355

That is more than 300 billion years, and still, it is not quite the
same as never.

In any case, that term is not too helpful in the comparison table,
IMHO. One could think that some sort of clever running count relative
to the last mount time was implied.

Thanks,
Richard

[1] You are forgetting the immortal robotic overlords.

--
Learn Graph Databases - Download FREE O'Reilly Book
Graph Databases is the definitive new guide to graph databases and their 
applications. Written by three acclaimed leaders in the field, 
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/NeoTech
___
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel


Re: [f2fs-dev] [RFC 00/32] making inode time stamps y2038 ready

2014-06-02 Thread H. Peter Anvin
On 06/02/2014 12:55 PM, Arnd Bergmann wrote:

 The bit that is really going to hurt is every single ioctl that uses a
 timespec.

 Honestly, though, I really don't understand the point with struct
 inode_time.  It seems like the zeroeth-order thing is to change the
 kernel internal version of struct timespec to have a 64-bit time... it
 isn't just about inodes.  We then should be explicit about the external
 uses of time, and use accessors.
 
 I picked these because they are fairly isolated from all other uses,
 in particular since inode times are the only things where we really
 care about times in the distant past or future (decades away as opposed
 to things that happened between boot and shutdown).
 

If nothing else, I would expect to be able to set the system time to
weird values for testing.  So I'm not so sure I agree with that...

 For other kernel-internal uses, we may be better off migrating to
 a completely different representation, such as nanoseconds since
 boot or the architecture specific ktime_t, but this is really something
 to decide for each subsystem.

Having a bunch of different time representations in the kernel seems
like a real headache...

-hpa



--
Learn Graph Databases - Download FREE O'Reilly Book
Graph Databases is the definitive new guide to graph databases and their 
applications. Written by three acclaimed leaders in the field, 
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/NeoTech
___
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel


Re: [f2fs-dev] [RFC 00/32] making inode time stamps y2038 ready

2014-06-02 Thread Arnd Bergmann
On Monday 02 June 2014 12:26:22 H. Peter Anvin wrote:
 On 06/02/2014 12:19 PM, Arnd Bergmann wrote:
  On Monday 02 June 2014 13:52:19 Joseph S. Myers wrote:
  On Fri, 30 May 2014, Arnd Bergmann wrote:
 
  a) is this the right approach in general? The previous discussion
 pointed this way, but there may be other opinions.
 
  The syscall changes seem like the sort of thing I'd expect, although 
  patches adding new syscalls or otherwise affecting the kernel/userspace 
  interface (as opposed to those relating to an individual filesystem) 
  should go to linux-api as well as other relevant lists.
  
  Ok. Sorry about missing linux-api, I confused it with linux-arch, which
  may not be as relevant here, except for the one question whether we
  actually want to have the new ABI on all 32-bit architectures or only
  as an opt-in for those that expect to stay around for another 24 years.
  
  Two more questions for you:
  
  - are you (and others) happy with adding this type of stat syscall
(fstatat64/fstat64) as opposed to the more generic xstat that has
been discussed in the past and that never made it through the bike-
shedding discussion?
  
  - once we have enough buy-in from reviewers to merge this initial
series, should we proceed to define rest of the syscall ABI
(minus driver ioctls) so glibc and kernel can do the conversion
on top of that, or should we better try to do things one syscall
family at a time and actually get the kernel to handle them
correctly internally?
  
 
 The bit that is really going to hurt is every single ioctl that uses a
 timespec.
 
 Honestly, though, I really don't understand the point with struct
 inode_time.  It seems like the zeroeth-order thing is to change the
 kernel internal version of struct timespec to have a 64-bit time... it
 isn't just about inodes.  We then should be explicit about the external
 uses of time, and use accessors.

I picked these because they are fairly isolated from all other uses,
in particular since inode times are the only things where we really
care about times in the distant past or future (decades away as opposed
to things that happened between boot and shutdown).

For other kernel-internal uses, we may be better off migrating to
a completely different representation, such as nanoseconds since
boot or the architecture specific ktime_t, but this is really something
to decide for each subsystem.

I just tried building an arm32 kernel with a s64 time_t, and that
failed horribly, I get linker errors for missing 64-bit divides
and lots of warnings for code that expects time_t pointers to
functions taking a 'long' or vice versa. I also think the only
way to maintain ABI compatibility is to separate the internal uses
from the interface, which means auditing all code in the end.

Arnd

--
Learn Graph Databases - Download FREE O'Reilly Book
Graph Databases is the definitive new guide to graph databases and their 
applications. Written by three acclaimed leaders in the field, 
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/NeoTech
___
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel


Re: [f2fs-dev] [RFC 00/32] making inode time stamps y2038 ready

2014-06-02 Thread Joseph S. Myers
On Mon, 2 Jun 2014, Arnd Bergmann wrote:

 Ok. Sorry about missing linux-api, I confused it with linux-arch, which
 may not be as relevant here, except for the one question whether we
 actually want to have the new ABI on all 32-bit architectures or only
 as an opt-in for those that expect to stay around for another 24 years.

For glibc I think it will make the most sense to add the support for 
64-bit time_t across all architectures that currently have 32-bit time_t 
(with the new interfaces having fallback support to implementation in 
terms of the 32-bit kernel interfaces, if the 64-bit syscalls are 
unavailable either at runtime or in the kernel headers against which glibc 
is compiled - this fallback code will of course need to check for overflow 
when passing a time value to the kernel, hopefully with error handling 
consistent with whatever the kernel ends up doing when a filesystem can't 
support a timestamp).  If some architectures don't provide the new 
interfaces in the kernel then that will mean the fallback code in glibc 
can't be removed until glibc support for those architectures is removed 
(as opposed to removing it when glibc no longer supports kernels predating 
the kernel support).

 Two more questions for you:
 
 - are you (and others) happy with adding this type of stat syscall
   (fstatat64/fstat64) as opposed to the more generic xstat that has
   been discussed in the past and that never made it through the bike-
   shedding discussion?

I am.

 - once we have enough buy-in from reviewers to merge this initial
   series, should we proceed to define rest of the syscall ABI
   (minus driver ioctls) so glibc and kernel can do the conversion
   on top of that, or should we better try to do things one syscall
   family at a time and actually get the kernel to handle them
   correctly internally?

I don't have any comments on that ordering question.

-- 
Joseph S. Myers
jos...@codesourcery.com

--
Learn Graph Databases - Download FREE O'Reilly Book
Graph Databases is the definitive new guide to graph databases and their 
applications. Written by three acclaimed leaders in the field, 
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/NeoTech
___
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel


Re: [f2fs-dev] [RFC 00/32] making inode time stamps y2038 ready

2014-06-02 Thread H. Peter Anvin
Typically they are using 64-bit signed seconds.

On May 31, 2014 11:22:37 AM PDT, Richard Cochran richardcoch...@gmail.com 
wrote:
On Sat, May 31, 2014 at 05:23:02PM +0200, Arnd Bergmann wrote:
 
 It's an approximation:

(Approximately never ;)

 with 64-bit timestamps, you can represent close to 300 billion
 years, which is way past the time that our planet can sustain
 life of any form[1].

Did you mean mean 64 bits worth of seconds?

  2^64 / (3600*24*365) = 584,942,417,355

That is more than 300 billion years, and still, it is not quite the
same as never.

In any case, that term is not too helpful in the comparison table,
IMHO. One could think that some sort of clever running count relative
to the last mount time was implied.

Thanks,
Richard

[1] You are forgetting the immortal robotic overlords.

-- 
Sent from my mobile phone.  Please pardon brevity and lack of formatting.

--
Learn Graph Databases - Download FREE O'Reilly Book
Graph Databases is the definitive new guide to graph databases and their 
applications. Written by three acclaimed leaders in the field, 
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/NeoTech
___
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel


Re: [f2fs-dev] [RFC 00/32] making inode time stamps y2038 ready

2014-06-02 Thread Joseph S. Myers
On Fri, 30 May 2014, Arnd Bergmann wrote:

 a) is this the right approach in general? The previous discussion
pointed this way, but there may be other opinions.

The syscall changes seem like the sort of thing I'd expect, although 
patches adding new syscalls or otherwise affecting the kernel/userspace 
interface (as opposed to those relating to an individual filesystem) 
should go to linux-api as well as other relevant lists.

-- 
Joseph S. Myers
jos...@codesourcery.com

--
Learn Graph Databases - Download FREE O'Reilly Book
Graph Databases is the definitive new guide to graph databases and their 
applications. Written by three acclaimed leaders in the field, 
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/NeoTech
___
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel


Re: [f2fs-dev] [RFC 00/32] making inode time stamps y2038 ready

2014-05-31 Thread Vyacheslav Dubeyko
Hi Arnd,

On Fri, 2014-05-30 at 22:01 +0200, Arnd Bergmann wrote:

[snip]
 
 Arnd Bergmann (32):
   fs: introduce new 'struct inode_time'
   uapi: add struct __kernel_timespec{32,64}
   fs: introduce sys_utimens64at
   fs: introduce sys_newfstat64/sys_newfstatat64
   arch: hook up new stat and utimes syscalls
   isofs: fix timestamps beyond 2027
   fs/nfs: convert to struct inode_time
   fs/ceph: convert to 'struct inode_time'
   fs/pstore: convert to struct inode_time
   fs/coda: convert to struct inode_time
   xfs: convert to struct inode_time
   btrfs: convert to struct inode_time
   ext3: convert to struct inode_time
   ext4: convert to struct inode_time
   cifs: convert to struct inode_time
   ntfs: convert to struct inode_time
   ubifs: convert to struct inode_time
   ocfs2: convert to struct inode_time
   fs/fat: convert to struct inode_time
   afs: convert to struct inode_time
   udf: convert to struct inode_time
   fs: convert simple fs to inode_time
   logfs: convert to struct inode_time
   hfs, hfsplus: convert to struct inode_time
   gfs2: convert to struct inode_time
   reiserfs: convert to struct inode_time
   jffs2: convert to struct inode_time
   adfs: convert to struct inode_time
   f2fs: convert to struct inode_time
   fuse: convert to struct inode_time
   scsi: fnic: use current_kernel_time() for timestamp
   fs: use new inode_time definition unconditionally
 

By the way, what about NILFS2? Is NILFS2 ready for suggested approach
without any changes?

Thanks,
Vyacheslav Dubeyko.



--
Time is money. Stop wasting it! Get your web API in 5 minutes.
www.restlet.com/download
http://p.sf.net/sfu/restlet
___
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel