• Arnd Bergmann's avatar
    coda: stop using 'struct timespec' in user API · 6ced9aa7
    Arnd Bergmann authored
    We exchange file timestamps with user space using psdev device
    read/write operations with a fixed but architecture specific binary
    layout.
    
    On 32-bit systems, this uses a 'timespec' structure that is defined by
    the C library to contain two 32-bit values for seconds and nanoseconds.
    As we get ready for the year 2038 overflow of the 32-bit signed seconds,
    the kernel now uses 64-bit timestamps internally, and user space will do
    the same change by changing the 'timespec' definition in the future.
    
    Unfortunately, this breaks the layout of the coda_vattr structure, so we
    need to redefine that in terms of something that does not change.  I'm
    introducing a new 'struct vtimespec' structure here that keeps the
    existing layout, and the same change has to be done in the coda user
    space copy of linux/coda.h before anyone can use that on a 32-bit
    architecture with 64-bit time_t.
    
    An open question is what should happen to actual times past y2038, as
    they are now truncated to the last valid date when sent to user space,
    and interpreted as pre-1970 times when a timestamp with the MSB set is
    read back into the kernel.  Alternatively, we could change the new
    timespec64_to_coda()/coda_to_timespec64() functions to use a different
    interpretation and extend the available range further to the future by
    disallowing past timestamps.  This would require more changes in the
    user space side though.
    
    Link: http://lkml.kernel.org/r/562b7324149461743e4fbe2fedbf7c242f7e274a.1558117389.git.jaharkes@cs.cmu.edu
    Link: https://patchwork.kernel.org/patch/10474735/Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
    Signed-off-by: default avatarJan Harkes <jaharkes@cs.cmu.edu>
    Acked-by: default avatarJan Harkes <jaharkes@cs.cmu.edu>
    Cc: Colin Ian King <colin.king@canonical.com>
    Cc: Dan Carpenter <dan.carpenter@oracle.com>
    Cc: David Howells <dhowells@redhat.com>
    Cc: Fabian Frederick <fabf@skynet.be>
    Cc: Mikko Rapeli <mikko.rapeli@iki.fi>
    Cc: Sam Protsenko <semen.protsenko@linaro.org>
    Cc: Yann Droneaud <ydroneaud@opteya.com>
    Cc: Zhouyang Jia <jiazhouyang09@gmail.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    6ced9aa7
coda_linux.c 5.64 KB