y2038 changes for vfs

This is a preparation series for changing the VFS infrastructure to use
time64_t in inode timestamps, introducing a couple of simple conversion
helper functions that can be used to make the individual file systems
independent of the type of inode->i_{a,c,m}time and
iattr->ia_{a,c,m}time, following the plan described at
http://kernelnewbies.org/y2038/vfs.

The patches were done by Deepa Dinamani during her Outreachy internship
along with the following set of more than 100 patches that depend on
them but that can get merged through the individual file system
maintainer trees.

Thomas Gleixner reviewed the patches and the approach before, but after
http://www.spinics.net/lists/y2038/msg01514.html, both he and Al Viro
were busy in other areas of the kernel and neither of them picked them
up. I'm sending the series for inclusion directly so we can make
progress on the follow-up series and hopefully convert struct inode
to timespec64 in 4.8 or 4.9.

One small cleanup patch from Tina Ruchandani is included in the branch
as well, this is also related to the y2038 effort and is the last one
of a backlog of older patches that I picked up last year and otherwise
got merged through maintainer trees.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iQIVAwUAV0Sn2mCrR//JCVInAQJorBAAwXkGXZ7zqe2D3WeNkJug3vzK503pgKF/
1XOZlaqdBQjeF5zByaDbMEfXZOOSF6iI+u/pTGcFQYe3sMbslnwoeb+5XgaGXOMP
lkI7GXhzwzn/B561pA/4giVT1IzuSxZ5UervNYFEubQb5QojZvckOlUfIOfY+lTB
kkzeJZRaC/zyS8mAEa5OPY2v3a0W2dTkxP9XxJ5j1iymOJD6cZ4czJEsPq1KW4us
q4huvWKQwVAzkN3G1Lam7zODkHmwJ4yneHJkKwXbvWXHzwt1zfodokAw3gavV3qF
sD3InG2MhUT1KkSwQOdAeZ89L9KXIpGKhEHVi8iRxRCc/x0fAExBvpxv0dSiGNsM
ycLcF1MNPtc93M9pMsxHLkuJ8P09RP1gs4Jo5/AVs+syCuDdpnxEFkqoeVtw3gR3
r6dIiw9UJAMOlhGxZ+JEYjzvzHqykNthYAwA5yfBhpJINRtuAVdFaXu6SD9HzRag
bd5Fbuf39MVuOFzSbSPgowrb1oPecYSasKCeeb44AdwI1i0TIMKX6sB5macTG4z1
C8mSh7eiaHvnA/ED2yBQKg9p0lTR8wpXkIfsYjvJkndHCLnjPntn+X+SKLKJ4GNi
tylXrzA12DszIxH3/14SD6moyaqbcFj8kw+8FdBrt2tk8IIBclqmfII4wVXAEM4y
YPfaaXq+Lus=
=fAtv
-----END PGP SIGNATURE-----
vfs: Add support to document max and min inode times

This is a preparation patch to add range checking for inode
timestamps.

Extend struct super_block to include information about the max
and min inode times each filesystem can hold. These are dependent
on the on-disk format of filesystems.

These range checks will be used to clamp timestamps to filesystem
allowed ranges.

Individual filesystems do not have the same on disk format as
the in memory inodes. Range checking and clamping times assigned
to inodes will help keep in memory and on-disk timestamps to be
in sync.

Another series will initialize these fields to appropriate values for
every filesystem.

The fields are not used by vfs yet.
The exact policy and behavior will be decided in a separate patch.

The original idea for the feature comes from the discussion:
https://lkml.org/lkml/2014/5/30/669

Signed-off-by: Deepa Dinamani <deepa.kernel@gmail.com>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
1 file changed