[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20190818165817.32634-1-deepa.kernel@gmail.com>
Date: Sun, 18 Aug 2019 09:57:57 -0700
From: Deepa Dinamani <deepa.kernel@...il.com>
To: viro@...iv.linux.org.uk, linux-kernel@...r.kernel.org
Cc: linux-fsdevel@...r.kernel.org, y2038@...ts.linaro.org,
arnd@...db.de, adilger.kernel@...ger.ca, adrian.hunter@...el.com,
aivazian.tigran@...il.com, al@...rsen.net,
anna.schumaker@...app.com, anton@...msg.org,
asmadeus@...ewreck.org, ccross@...roid.com,
ceph-devel@...r.kernel.org, coda@...cmu.edu,
codalist@...a.cs.cmu.edu, darrick.wong@...cle.com,
dedekind1@...il.com, devel@...ts.orangefs.org, dsterba@...e.com,
dushistov@...l.ru, dwmw2@...radead.org, ericvh@...il.com,
gregkh@...uxfoundation.org, hch@...radead.org, hch@....de,
hirofumi@...l.parknet.co.jp, hubcap@...ibond.com,
idryomov@...il.com, jack@...e.com, jaegeuk@...nel.org,
jaharkes@...cmu.edu, jfs-discussion@...ts.sourceforge.net,
jlbec@...lplan.org, keescook@...omium.org,
linux-cifs@...r.kernel.org, linux-ext4@...r.kernel.org,
linux-f2fs-devel@...ts.sourceforge.net,
linux-karma-devel@...ts.sourceforge.net,
linux-mtd@...ts.infradead.org, linux-nfs@...r.kernel.org,
linux-ntfs-dev@...ts.sourceforge.net, linux-xfs@...r.kernel.org,
lucho@...kov.net, luisbg@...nel.org, martin@...ibond.com,
me@...copeland.com, mikulas@...ax.karlin.mff.cuni.cz,
nico@...xnic.net, phillip@...ashfs.org.uk,
reiserfs-devel@...r.kernel.org, richard@....at, sage@...hat.com,
salah.triki@...il.com, sfrench@...ba.org, shaggy@...nel.org,
tj@...nel.org, tony.luck@...el.com,
trond.myklebust@...merspace.com, tytso@....edu,
v9fs-developer@...ts.sourceforge.net, yuchao0@...wei.com,
zyan@...hat.com
Subject: [PATCH v8 00/20] vfs: Add support for timestamp limits
The series is an update and a more complete version of the
previously posted series at
https://lore.kernel.org/linux-fsdevel/20180122020426.2988-1-deepa.kernel@gmail.com/
Thanks to Arnd Bergmann for doing a few preliminary reviews.
They helped me fix a few issues I had overlooked.
The limits (sometimes granularity also) for the filesystems updated here are according to the
following table:
File system Time type Start year Expiration year Granularity
cramfs fixed 0 0
romfs fixed 0 0
pstore ascii seconds (27 digit ascii) S64_MIN S64_MAX 1
coda INT64 S64_MIN S64_MAX 1
omfs 64-bit milliseconds 0 U64_MAX/ 1000 NSEC_PER_MSEC
befs unsigned 48-bit seconds 0 0xffffffffffff alloc_super
bfs unsigned 32-bit seconds 0 U32_MAX alloc_super
efs unsigned 32-bit seconds 0 U32_MAX alloc_super
ext2 signed 32-bit seconds S32_MIN S32_MAX alloc_super
ext3 signed 32-bit seconds S32_MIN S32_MAX alloc_super
ext4 (old) signed 32-bit seconds S32_MIN S32_MAX alloc_super
ext4 (extra) 34-bit seconds, 30-bit ns S32_MIN 0x37fffffff 1
freevxfs u32 secs/usecs 0 U32_MAX alloc_super
jffs2 unsigned 32-bit seconds 0 U32_MAX alloc_super
jfs unsigned 32-bit seconds/ns 0 U32_MAX 1
minix unsigned 32-bit seconds 0 U32_MAX alloc_super
orangefs u64 seconds 0 U64_MAX alloc_super
qnx4 unsigned 32-bit seconds 0 U32_MAX alloc_super
qnx6 unsigned 32-bit seconds 0 U32_MAX alloc_super
reiserfs unsigned 32-bit seconds 0 U32_MAX alloc_super
squashfs unsigned 32-bit seconds 0 U32_MAX alloc_super
ufs1 signed 32-bit seconds S32_MIN S32_MAX NSEC_PER_SEC
ufs2 signed 64-bit seconds/u32 ns S64_MIN S64_MAX 1
xfs signed 32-bit seconds/ns S32_MIN S32_MAX 1
ceph unsigned 32-bit second/ns 0 U32_MAX 1000
sysv unsigned 32-bit seconds 0 U32_MAX alloc_super
affs u32 day, min, ticks 1978 u32_max days NSEC_PER_SEC
nfsv2 unsigned 32-bit seconds/ns 0 U32_MAX 1
nfsv3 unsigned 32-bit seconds/ns 0 U32_MAX 1000
nfsv4 u64 seconds/u32 ns S64_MIN S64_MAX 1000
isofs u8 year since 1900 (fixable) 1900 2155 alloc_super
hpfs unsigned 32-bit seconds 1970 2106 alloc_super
fat 7-bit years, 2s resolution 1980 2107
cifs (smb) 7-bit years 1980 2107
cifs (modern) 64-bit 100ns since 1601 1601 30828
adfs 40-bit cs since 1900 1900 2248
9p (9P2000) unsigned 32-bit seconds 1970 2106
9p (9P2000.L) signed 64-bit seconds, ns 1970 S64_MAX
Granularity column filled in by the alloc_super() in the above table indicates that
the granularity is NSEC_PER_SEC.
Note that anything not mentioned above still has the default limits
S64_MIN..S64_MAX.
The patches in the series are as structured below:
1. Add vfs support to maintain the limits per filesystem.
2. Add a new timestamp_truncate() api for clamping timestamps
according to the filesystem limits.
3. Add a warning for mount syscall to indicate the impending
expiry of timestamps.
4. Modify utimes to clamp the timestamps.
5. Fill in limits for filesystems.
A test for checking file system timestamp limits has been posted
at https://www.spinics.net/lists/fstests/msg12262.html
Changes since v7:
* Dropped fat modifications from timespec_truncate patch
* Leverage timestamp_truncate function in utimes
* Added a fix for pstore ramoops timestamps
* Added ext4 warning for inodes without room for extended timestamps.
* Made mount warning more human readable
Changes since v6:
* No change in mount behavior because of expiry of timestamps.
* Included limits for more filesystems.
Changes since v5:
* Dropped y2038-specific changes
Changes since v4:
* Added documentation for boot param
Changes since v3:
* Remove redundant initializations in libfs.c
* Change early_param to __setup similar to other root mount options.
* Fix documentation warning
Changes since v2:
* Introduce early boot param override for checks.
* Drop afs patch for timestamp limits.
Changes since v1:
* return EROFS on mount errors
* fix mtime copy/paste error in utimes
Deepa Dinamani (20):
vfs: Add file timestamp range support
vfs: Add timestamp_truncate() api
timestamp_truncate: Replace users of timespec64_trunc
mount: Add mount warning for impending timestamp expiry
utimes: Clamp the timestamps before update
fs: Fill in max and min timestamps in superblock
9p: Fill min and max timestamps in sb
adfs: Fill in max and min timestamps in sb
ext4: Initialize timestamps limits
fs: nfs: Initialize filesystem timestamp ranges
fs: cifs: Initialize filesystem timestamp ranges
fs: fat: Initialize filesystem timestamp ranges
fs: affs: Initialize filesystem timestamp ranges
fs: sysv: Initialize filesystem timestamp ranges
fs: ceph: Initialize filesystem timestamp ranges
fs: orangefs: Initialize filesystem timestamp ranges
fs: hpfs: Initialize filesystem timestamp ranges
fs: omfs: Initialize filesystem timestamp ranges
pstore: fs superblock limits
isofs: Initialize filesystem timestamp ranges
fs/9p/vfs_super.c | 6 +++++-
fs/adfs/adfs.h | 13 +++++++++++++
fs/adfs/inode.c | 8 ++------
fs/adfs/super.c | 2 ++
fs/affs/amigaffs.c | 2 +-
fs/affs/amigaffs.h | 3 +++
fs/affs/inode.c | 4 ++--
fs/affs/super.c | 4 ++++
fs/attr.c | 21 ++++++++++++---------
fs/befs/linuxvfs.c | 2 ++
fs/bfs/inode.c | 2 ++
fs/ceph/super.c | 2 ++
fs/cifs/cifsfs.c | 22 ++++++++++++++++++++++
fs/cifs/netmisc.c | 14 +++++++-------
fs/coda/inode.c | 3 +++
fs/configfs/inode.c | 12 ++++++------
fs/cramfs/inode.c | 2 ++
fs/efs/super.c | 2 ++
fs/ext2/super.c | 2 ++
fs/ext4/ext4.h | 10 +++++++++-
fs/ext4/super.c | 17 +++++++++++++++--
fs/f2fs/file.c | 21 ++++++++++++---------
fs/fat/inode.c | 12 ++++++++++++
fs/freevxfs/vxfs_super.c | 2 ++
fs/hpfs/hpfs_fn.h | 6 ++----
fs/hpfs/super.c | 2 ++
fs/inode.c | 33 ++++++++++++++++++++++++++++++++-
fs/isofs/inode.c | 7 +++++++
fs/jffs2/fs.c | 3 +++
fs/jfs/super.c | 2 ++
fs/kernfs/inode.c | 7 +++----
fs/minix/inode.c | 2 ++
fs/namespace.c | 33 ++++++++++++++++++++++++++++++++-
fs/nfs/super.c | 20 +++++++++++++++++++-
fs/ntfs/inode.c | 21 ++++++++++++---------
fs/omfs/inode.c | 4 ++++
fs/orangefs/super.c | 2 ++
fs/pstore/ram.c | 2 ++
fs/qnx4/inode.c | 2 ++
fs/qnx6/inode.c | 2 ++
fs/reiserfs/super.c | 3 +++
fs/romfs/super.c | 2 ++
fs/squashfs/super.c | 2 ++
fs/super.c | 2 ++
fs/sysv/super.c | 5 ++++-
fs/ubifs/file.c | 21 ++++++++++++---------
fs/ufs/super.c | 7 +++++++
fs/utimes.c | 6 ++----
fs/xfs/xfs_super.c | 2 ++
include/linux/fs.h | 5 +++++
include/linux/time64.h | 2 ++
51 files changed, 315 insertions(+), 78 deletions(-)
--
2.17.1
Cc: adilger.kernel@...ger.ca
Cc: adrian.hunter@...el.com
Cc: aivazian.tigran@...il.com
Cc: al@...rsen.net
Cc: anna.schumaker@...app.com
Cc: anton@...msg.org
Cc: asmadeus@...ewreck.org
Cc: ccross@...roid.com
Cc: ceph-devel@...r.kernel.org
Cc: coda@...cmu.edu
Cc: codalist@...a.cs.cmu.edu
Cc: darrick.wong@...cle.com
Cc: dedekind1@...il.com
Cc: devel@...ts.orangefs.org
Cc: dsterba@...e.com
Cc: dushistov@...l.ru
Cc: dwmw2@...radead.org
Cc: ericvh@...il.com
Cc: gregkh@...uxfoundation.org
Cc: hch@...radead.org
Cc: hch@....de
Cc: hirofumi@...l.parknet.co.jp
Cc: hubcap@...ibond.com
Cc: idryomov@...il.com
Cc: jack@...e.com
Cc: jaegeuk@...nel.org
Cc: jaharkes@...cmu.edu
Cc: jfs-discussion@...ts.sourceforge.net
Cc: jlbec@...lplan.org
Cc: keescook@...omium.org
Cc: linux-cifs@...r.kernel.org
Cc: linux-ext4@...r.kernel.org
Cc: linux-f2fs-devel@...ts.sourceforge.net
Cc: linux-karma-devel@...ts.sourceforge.net
Cc: linux-mtd@...ts.infradead.org
Cc: linux-nfs@...r.kernel.org
Cc: linux-ntfs-dev@...ts.sourceforge.net
Cc: linux-xfs@...r.kernel.org
Cc: lucho@...kov.net
Cc: luisbg@...nel.org
Cc: martin@...ibond.com
Cc: me@...copeland.com
Cc: mikulas@...ax.karlin.mff.cuni.cz
Cc: nico@...xnic.net
Cc: phillip@...ashfs.org.uk
Cc: reiserfs-devel@...r.kernel.org
Cc: richard@....at
Cc: sage@...hat.com
Cc: salah.triki@...il.com
Cc: sfrench@...ba.org
Cc: shaggy@...nel.org
Cc: tj@...nel.org
Cc: tony.luck@...el.com
Cc: trond.myklebust@...merspace.com
Cc: tytso@....edu
Cc: v9fs-developer@...ts.sourceforge.net
Cc: yuchao0@...wei.com
Cc: zyan@...hat.com
Powered by blists - more mailing lists