vfs: Add support for timestamp limits
Get series with b4
b4 am [email protected]Versions newest first · linked by author and title
- v8 Latest20 patches 9 repliesIn review
- v120 patches 41 repliesSuperseded
Changes in v8 from the cover letter
* 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
Patches in v8 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/20 | vfs: Add file timestamp range supportfs/ include/ include/ | +7 | 0 replies | |
| 2/20 | vfs: Add timestamp_truncate() apifs/ include/ | +34 | 0 replies | |
| 3/20 | timestamp_truncate: Replace users of timespec64_truncfs/ fs/ fs/ +3 more | +57 | 1 reply | |
| 4/20 | mount: Add mount warning for impending timestamp expiryfs/ | +32 | 0 replies | |
| 5/20 | utimes: Clamp the timestamps before updatefs/ | +2 | 0 replies | |
| 6/20 | fs: Fill in max and min timestamps in superblockfs/ fs/ fs/ +14 more | +42 | 3 replies | |
| 7/20 | 9p: Fill min and max timestamps in sbfs/ | +5 | 0 replies | |
| 8/20 | adfs: Fill in max and min timestamps in sbfs/ fs/ fs/ | +17 | 2 replies | |
| 9/20 | ext4: Initialize timestamps limitsfs/ fs/ | +24 | 0 replies | |
| 10/20 | fs: nfs: Initialize filesystem timestamp rangesfs/ | +19 | 0 replies | |
| 11/20 | fs: cifs: Initialize filesystem timestamp rangesfs/ fs/ | +29 | 0 replies | |
| 12/20 | fs: fat: Initialize filesystem timestamp rangesfs/ | +12 | 0 replies | |
| 13/20 | fs: affs: Initialize filesystem timestamp rangesfs/ fs/ fs/ +1 more | +10 | 0 replies | |
| 14/20 | fs: sysv: Initialize filesystem timestamp rangesfs/ | +4 | 0 replies | |
| 15/20 | fs: ceph: Initialize filesystem timestamp rangesfs/ | +2 | 0 replies | |
| 16/20 | fs: orangefs: Initialize filesystem timestamp rangesfs/ | +2 | 0 replies | |
| 17/20 | fs: hpfs: Initialize filesystem timestamp rangesfs/ fs/ | +4 | 0 replies | |
| 18/20 | fs: omfs: Initialize filesystem timestamp rangesfs/ | +4 | 0 replies | |
| 19/20 | pstore: fs superblock limitsfs/ | +2 | 2 replies | |
| 20/20 | isofs: Initialize filesystem timestamp rangesfs/ | +7 | 0 replies |
Reviews trailers per patch
6 of 20 patches have a Reviewed-by or Acked-by.
| Patch | Darrick J. Wong | Andreas Dilger | Bob Copeland | Kees Cook | David Sterba | Greg Kroah-Hartman | Anders Larsen | Tigran Aivazian |
|---|---|---|---|---|---|---|---|---|
| 1/20 | ||||||||
| 2/20 | ||||||||
| 3/20 | A-b | |||||||
| 4/20 | ||||||||
| 5/20 | ||||||||
| 6/20 | R-b | A-b | A-b A-b | |||||
| 7/20 | ||||||||
| 8/20 | ||||||||
| 9/20 | R-b | |||||||
| 10/20 | ||||||||
| 11/20 | ||||||||
| 12/20 | ||||||||
| 13/20 | A-b | |||||||
| 14/20 | ||||||||
| 15/20 | ||||||||
| 16/20 | ||||||||
| 17/20 | ||||||||
| 18/20 | A-b | |||||||
| 19/20 | A-b | |||||||
| 20/20 |
Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes. Scroll the table sideways for all 8 reviewers.
Cover letter [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/[email protected]/
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(-)
Signature · 60 lines
2.17.1 Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected]