* [RFC 0/6] vfs: Add timestamp range check support
@ 2016-11-02 15:04 Deepa Dinamani
2016-11-02 15:04 ` [RFC 4/6] ext4: Initialize timestamps limits Deepa Dinamani
2016-11-02 22:48 ` [RFC 0/6] vfs: Add timestamp range check support Dave Chinner
0 siblings, 2 replies; 10+ messages in thread
From: Deepa Dinamani @ 2016-11-02 15:04 UTC (permalink / raw)
To: linux-fsdevel, linux-kernel
Cc: tytso, arnd, y2038, gregkh, linux-afs, Andreas Dilger, viro, tglx,
linux-ext4, akpm
The series is aimed at adding timestamp checking and policy
related to it to vfs.
The series was developed with discussions and guidance from
Arnd Bergmann.
The original idea for the series was the discussion:
https://lkml.org/lkml/2014/5/30/551
Patches 5 and 6 can be merged only after vfs is transitioned
to use 64 bit timestamps as noted in the respective commit
texts.
The series only includes adding range limits to filesystems:
ext4 and afs as examples to keep the series simple.
Every filesystem will be updated to add these limits.
There is an ext4 current_time() api replacement patch that the
series depends on:
https://lkml.org/lkml/2016/6/9/38 .
This needs reposting to the mailing list.
The branch for the tree along with dependency can be found at
https://github.com/deepa-hub/vfs.git refs/heads/vfs_timestamp_policy
Deepa Dinamani (6):
vfs: Add file timestamp range support
vfs: Add checks for filesystem timestamp limits
afs: Add time limits in the super block
ext4: Initialize timestamps limits
vfs: Add timestamp_truncate() api
utimes: Clamp the timestamps before update
fs/afs/super.c | 2 ++
fs/ext4/ext4.h | 4 ++++
fs/ext4/super.c | 7 ++++++-
fs/inode.c | 37 ++++++++++++++++++++++++++++++++++++-
fs/internal.h | 2 ++
fs/libfs.c | 4 ++++
fs/namespace.c | 12 ++++++++++++
fs/super.c | 8 ++++++++
fs/utimes.c | 17 +++++++++++++----
include/linux/fs.h | 4 ++++
include/linux/time64.h | 6 ++++++
include/uapi/linux/fs.h | 6 +++++-
kernel/sysctl.c | 7 +++++++
13 files changed, 109 insertions(+), 7 deletions(-)
--
2.7.4
Cc: linux-afs@lists.infradead.org
Cc: "Theodore Ts'o" <tytso@mit.edu>
Cc: Andreas Dilger <adilger.kernel@dilger.ca>
Cc: linux-ext4@vger.kernel.org
_______________________________________________
Y2038 mailing list
Y2038@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/y2038
^ permalink raw reply [flat|nested] 10+ messages in thread
* [RFC 4/6] ext4: Initialize timestamps limits
2016-11-02 15:04 [RFC 0/6] vfs: Add timestamp range check support Deepa Dinamani
@ 2016-11-02 15:04 ` Deepa Dinamani
2016-11-02 22:48 ` [RFC 0/6] vfs: Add timestamp range check support Dave Chinner
1 sibling, 0 replies; 10+ messages in thread
From: Deepa Dinamani @ 2016-11-02 15:04 UTC (permalink / raw)
To: linux-fsdevel, linux-kernel
Cc: tytso, arnd, y2038, gregkh, Andreas Dilger, viro, tglx,
linux-ext4, akpm
ext4 has different overflow limits for max filesystem
timestamps based on the extra bytes available.
Signed-off-by: Deepa Dinamani <deepa.kernel@gmail.com>
Cc: "Theodore Ts'o" <tytso@mit.edu>
Cc: Andreas Dilger <adilger.kernel@dilger.ca>
Cc: linux-ext4@vger.kernel.org
---
fs/ext4/ext4.h | 4 ++++
fs/ext4/super.c | 7 ++++++-
2 files changed, 10 insertions(+), 1 deletion(-)
diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
index 6789379..fca339a 100644
--- a/fs/ext4/ext4.h
+++ b/fs/ext4/ext4.h
@@ -1635,6 +1635,10 @@ static inline void ext4_clear_state_flags(struct ext4_inode_info *ei)
#define EXT4_GOOD_OLD_INODE_SIZE 128
+#define EXT4_EXTRA_TIMESTAMP_MAX (((s64)1 << 34) - 1 + S32_MIN)
+#define EXT4_NON_EXTRA_TIMESTAMP_MAX Y2038_EXPIRY_TIMESTAMP
+#define EXT4_TIMESTAMP_MIN S32_MIN
+
/*
* Feature set definitions
*/
diff --git a/fs/ext4/super.c b/fs/ext4/super.c
index ab00bff..ebd039d 100644
--- a/fs/ext4/super.c
+++ b/fs/ext4/super.c
@@ -3633,8 +3633,13 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent)
sbi->s_inode_size);
goto failed_mount;
}
- if (sbi->s_inode_size > EXT4_GOOD_OLD_INODE_SIZE)
+ if (sbi->s_inode_size > EXT4_GOOD_OLD_INODE_SIZE) {
sb->s_time_gran = 1 << (EXT4_EPOCH_BITS - 2);
+ sb->s_time_max = EXT4_EXTRA_TIMESTAMP_MAX;
+ } else
+ sb->s_time_max = EXT4_NON_EXTRA_TIMESTAMP_MAX;
+
+ sb->s_time_min = EXT4_TIMESTAMP_MIN;
}
sbi->s_desc_size = le16_to_cpu(es->s_desc_size);
--
2.7.4
_______________________________________________
Y2038 mailing list
Y2038@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/y2038
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [RFC 0/6] vfs: Add timestamp range check support
2016-11-02 15:04 [RFC 0/6] vfs: Add timestamp range check support Deepa Dinamani
2016-11-02 15:04 ` [RFC 4/6] ext4: Initialize timestamps limits Deepa Dinamani
@ 2016-11-02 22:48 ` Dave Chinner
2016-11-03 6:54 ` Darrick J. Wong
2016-11-03 20:43 ` Theodore Ts'o
1 sibling, 2 replies; 10+ messages in thread
From: Dave Chinner @ 2016-11-02 22:48 UTC (permalink / raw)
To: Deepa Dinamani
Cc: linux-fsdevel, linux-kernel, arnd, tglx, gregkh, akpm, tytso,
viro, y2038, linux-afs, Andreas Dilger, linux-ext4
On Wed, Nov 02, 2016 at 08:04:50AM -0700, Deepa Dinamani wrote:
> The series is aimed at adding timestamp checking and policy
> related to it to vfs.
>
> The series was developed with discussions and guidance from
> Arnd Bergmann.
>
> The original idea for the series was the discussion:
> https://lkml.org/lkml/2014/5/30/551
>
> Patches 5 and 6 can be merged only after vfs is transitioned
> to use 64 bit timestamps as noted in the respective commit
> texts.
>
> The series only includes adding range limits to filesystems:
> ext4 and afs as examples to keep the series simple.
> Every filesystem will be updated to add these limits.
We're going to need regression tests for this to ensure that it
works properly and that we don't inadvertantly break it in future.
Can you write some xfstests that exercise this functionality and
validate that the mount behaviour, clamping and range limiting is
working as intended?
Cheers,
Dave.
--
Dave Chinner
david@fromorbit.com
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [RFC 0/6] vfs: Add timestamp range check support
2016-11-02 22:48 ` [RFC 0/6] vfs: Add timestamp range check support Dave Chinner
@ 2016-11-03 6:54 ` Darrick J. Wong
2016-11-03 20:43 ` Theodore Ts'o
1 sibling, 0 replies; 10+ messages in thread
From: Darrick J. Wong @ 2016-11-03 6:54 UTC (permalink / raw)
To: Dave Chinner
Cc: Deepa Dinamani, linux-fsdevel, linux-kernel, arnd, tglx, gregkh,
akpm, tytso, viro, y2038, linux-afs, Andreas Dilger, linux-ext4
On Thu, Nov 03, 2016 at 09:48:27AM +1100, Dave Chinner wrote:
> On Wed, Nov 02, 2016 at 08:04:50AM -0700, Deepa Dinamani wrote:
> > The series is aimed at adding timestamp checking and policy
> > related to it to vfs.
> >
> > The series was developed with discussions and guidance from
> > Arnd Bergmann.
> >
> > The original idea for the series was the discussion:
> > https://lkml.org/lkml/2014/5/30/551
> >
> > Patches 5 and 6 can be merged only after vfs is transitioned
> > to use 64 bit timestamps as noted in the respective commit
> > texts.
> >
> > The series only includes adding range limits to filesystems:
> > ext4 and afs as examples to keep the series simple.
> > Every filesystem will be updated to add these limits.
>
> We're going to need regression tests for this to ensure that it
> works properly and that we don't inadvertantly break it in future.
> Can you write some xfstests that exercise this functionality and
> validate that the mount behaviour, clamping and range limiting is
> working as intended?
Seconded. :)
I guess the only way to tell if a mountpoint can do 64 bit times is to
try it and see what happens? Unless you enable the procfs thing that
prints to dmesg. Evidently turning on the knob won't cause complaints
if there's already a mounted fs that didn't have 64-bit time support.
I'd go look at the testcases to corroborate this, but I don't know
that there are any?
(It was a big help to write a big pile of tests for adding reflink to
XFS. It helped us find some btrfs reflink bugs too.)
--D
>
> Cheers,
>
> Dave.
> --
> Dave Chinner
> david@fromorbit.com
> --
> To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [RFC 0/6] vfs: Add timestamp range check support
2016-11-02 22:48 ` [RFC 0/6] vfs: Add timestamp range check support Dave Chinner
2016-11-03 6:54 ` Darrick J. Wong
@ 2016-11-03 20:43 ` Theodore Ts'o
2016-11-03 23:48 ` Dave Chinner
2016-11-04 0:27 ` Andreas Dilger
1 sibling, 2 replies; 10+ messages in thread
From: Theodore Ts'o @ 2016-11-03 20:43 UTC (permalink / raw)
To: Dave Chinner
Cc: arnd, y2038, gregkh, linux-kernel, linux-afs, Andreas Dilger,
Deepa Dinamani, linux-fsdevel, tglx, linux-ext4, akpm, viro
On Thu, Nov 03, 2016 at 09:48:27AM +1100, Dave Chinner wrote:
>
> We're going to need regression tests for this to ensure that it
> works properly and that we don't inadvertantly break it in future.
> Can you write some xfstests that exercise this functionality and
> validate that the mount behaviour, clamping and range limiting is
> working as intended?
In order to have automated regression tests which are file system
independent, we need a way to query what are the timestamps that a
particular mounted file systme supports. One approach would be to use
fsinfo, which David Howells had been working on, but which has been
bike-shedded to death for the last n years, and I'd hate to block this
patch series behind a proposed new fsinfo(2) system call.
Alternatively, we can just create a specialized ioctl to return that
information which is non-ideal in other dimensions.
The last option, which is admittedly ugly, would be to create an shell
function which knows how to figure out the max_timestamp and
min_timestamp by using the file system name and querying the
superblock using dumpe2fs, xfs_db, etc.
I'd argue for the last option because once we do get a programmtic way
to get the information via a system call such as fsinfo(2), we can
convert xfstests to use it, where as if we add an ioctl to return this
information, we'll have to support the ioctl forever.
Does this make sense? Any objections?
Cheers,
- Ted
_______________________________________________
Y2038 mailing list
Y2038@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/y2038
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [RFC 0/6] vfs: Add timestamp range check support
2016-11-03 20:43 ` Theodore Ts'o
@ 2016-11-03 23:48 ` Dave Chinner
2016-11-04 0:27 ` Andreas Dilger
1 sibling, 0 replies; 10+ messages in thread
From: Dave Chinner @ 2016-11-03 23:48 UTC (permalink / raw)
To: Theodore Ts'o, Deepa Dinamani, linux-fsdevel, linux-kernel,
arnd, tglx, gregkh, akpm, viro, y2038, linux-afs, Andreas Dilger,
linux-ext4
On Thu, Nov 03, 2016 at 04:43:57PM -0400, Theodore Ts'o wrote:
> On Thu, Nov 03, 2016 at 09:48:27AM +1100, Dave Chinner wrote:
> >
> > We're going to need regression tests for this to ensure that it
> > works properly and that we don't inadvertantly break it in future.
> > Can you write some xfstests that exercise this functionality and
> > validate that the mount behaviour, clamping and range limiting is
> > working as intended?
>
> In order to have automated regression tests which are file system
> independent, we need a way to query what are the timestamps that a
> particular mounted file systme supports.
We don't need that - we simply code it directly into the test
infrastructure, like we've done for things like the maximum number
of ACLs a filesystem supports (common/attr::_acl_get_max()).
> The last option, which is admittedly ugly, would be to create an shell
> function which knows how to figure out the max_timestamp and
> min_timestamp by using the file system name and querying the
> superblock using dumpe2fs, xfs_db, etc.
Yup, precisely that. We shouldn't trust the kernel to tell us the
correct thing to enable the test that tells us that thing is working
correctly or not...
> I'd argue for the last option because once we do get a programmtic way
> to get the information via a system call such as fsinfo(2), we can
> convert xfstests to use it, where as if we add an ioctl to return this
> information, we'll have to support the ioctl forever.
We have to support kernels that won't ever have something like
fsinfo, so it has to be done the "ugly way".
Cheers,
Dave.
--
Dave Chinner
david@fromorbit.com
_______________________________________________
Y2038 mailing list
Y2038@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/y2038
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [RFC 0/6] vfs: Add timestamp range check support
2016-11-03 20:43 ` Theodore Ts'o
2016-11-03 23:48 ` Dave Chinner
@ 2016-11-04 0:27 ` Andreas Dilger
2016-11-06 17:44 ` Deepa Dinamani
1 sibling, 1 reply; 10+ messages in thread
From: Andreas Dilger @ 2016-11-04 0:27 UTC (permalink / raw)
To: Theodore Ts'o
Cc: Dave Chinner, Deepa Dinamani, linux-fsdevel, LKML, arnd, tglx,
gregkh, akpm, viro, y2038, linux-afs, Andreas Dilger, linux-ext4
[-- Attachment #1: Type: text/plain, Size: 2231 bytes --]
> On Nov 3, 2016, at 2:43 PM, Theodore Ts'o <tytso@mit.edu> wrote:
>
> On Thu, Nov 03, 2016 at 09:48:27AM +1100, Dave Chinner wrote:
>>
>> We're going to need regression tests for this to ensure that it
>> works properly and that we don't inadvertantly break it in future.
>> Can you write some xfstests that exercise this functionality and
>> validate that the mount behaviour, clamping and range limiting is
>> working as intended?
>
> In order to have automated regression tests which are file system
> independent, we need a way to query what are the timestamps that a
> particular mounted file systme supports. One approach would be to use
> fsinfo, which David Howells had been working on, but which has been
> bike-shedded to death for the last n years, and I'd hate to block this
> patch series behind a proposed new fsinfo(2) system call.
I wish we could just get the fsinfo and statx calls landed, but I agree
it would be a DOS to block any other patches waiting for that to land...
or maybe we _should_ block other patches behind that patch, and force it
to be landed... :-)
> Alternatively, we can just create a specialized ioctl to return that
> information which is non-ideal in other dimensions.
>
> The last option, which is admittedly ugly, would be to create an shell
> function which knows how to figure out the max_timestamp and
> min_timestamp by using the file system name and querying the
> superblock using dumpe2fs, xfs_db, etc.
>
> I'd argue for the last option because once we do get a programmtic way
> to get the information via a system call such as fsinfo(2), we can
> convert xfstests to use it, where as if we add an ioctl to return this
> information, we'll have to support the ioctl forever.
>
> Does this make sense? Any objections?
Realistically, there are only a handful of filesystems being tested by
xfstests, and it is simple enough to hard-code these limits into the
test script for ext4, xfs, btrfs, etc. since the limits will not be
changing very often (and it is noteworthy when they do). If and when
there is an interface to query these values from the kernel, it may
still make sense to keep the hard-coded limits to verify the syscall
against...
Cheers, Andreas
[-- Attachment #2: Message signed with OpenPGP using GPGMail --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [RFC 0/6] vfs: Add timestamp range check support
2016-11-04 0:27 ` Andreas Dilger
@ 2016-11-06 17:44 ` Deepa Dinamani
2016-11-06 20:28 ` Arnd Bergmann
0 siblings, 1 reply; 10+ messages in thread
From: Deepa Dinamani @ 2016-11-06 17:44 UTC (permalink / raw)
To: Andreas Dilger
Cc: Theodore Ts'o, Dave Chinner, linux-fsdevel, LKML,
Arnd Bergmann, Thomas Gleixner, Greg KH, Andrew Morton,
Alexander Viro, y2038 Mailman List, linux-afs, Andreas Dilger,
linux-ext4
I will post xfs tests that validate mount and range checking.
I will keep the policy same as what the RFC suggests for now.
Clamping can be verified once vfs is transitioned to using time64_t.
Thanks,
Deepa
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [RFC 0/6] vfs: Add timestamp range check support
2016-11-06 17:44 ` Deepa Dinamani
@ 2016-11-06 20:28 ` Arnd Bergmann
2016-11-06 21:14 ` Deepa Dinamani
0 siblings, 1 reply; 10+ messages in thread
From: Arnd Bergmann @ 2016-11-06 20:28 UTC (permalink / raw)
To: Deepa Dinamani
Cc: Andreas Dilger, Theodore Ts'o, y2038 Mailman List, Greg KH,
Dave Chinner, LKML, linux-afs, Andreas Dilger, Alexander Viro,
linux-fsdevel, Thomas Gleixner, linux-ext4, Andrew Morton
On Sunday, November 6, 2016 9:44:33 AM CET Deepa Dinamani wrote:
> I will post xfs tests that validate mount and range checking.
> I will keep the policy same as what the RFC suggests for now.
>
> Clamping can be verified once vfs is transitioned to using time64_t.
Won't it already work as expected on 64-bit architectures as they
have a 64-bit time_t?
Arnd
_______________________________________________
Y2038 mailing list
Y2038@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/y2038
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [RFC 0/6] vfs: Add timestamp range check support
2016-11-06 20:28 ` Arnd Bergmann
@ 2016-11-06 21:14 ` Deepa Dinamani
0 siblings, 0 replies; 10+ messages in thread
From: Deepa Dinamani @ 2016-11-06 21:14 UTC (permalink / raw)
To: Arnd Bergmann
Cc: Andreas Dilger, Theodore Ts'o, Dave Chinner, linux-fsdevel,
LKML, Thomas Gleixner, Greg KH, Andrew Morton, Alexander Viro,
y2038 Mailman List, linux-afs, Andreas Dilger, linux-ext4
On Sun, Nov 6, 2016 at 12:28 PM, Arnd Bergmann <arnd@arndb.de> wrote:
> On Sunday, November 6, 2016 9:44:33 AM CET Deepa Dinamani wrote:
>> I will post xfs tests that validate mount and range checking.
>> I will keep the policy same as what the RFC suggests for now.
>>
>> Clamping can be verified once vfs is transitioned to using time64_t.
>
> Won't it already work as expected on 64-bit architectures as they
> have a 64-bit time_t?
Yes, on 64 bit architectures, it should work fine.
32 bit machines will have wrong clamped timestamps though for some filesystems.
I can post a test for clamping that only works on 64 bit machines.
Thanks,
-Deepa
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2016-11-06 21:14 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-11-02 15:04 [RFC 0/6] vfs: Add timestamp range check support Deepa Dinamani
2016-11-02 15:04 ` [RFC 4/6] ext4: Initialize timestamps limits Deepa Dinamani
2016-11-02 22:48 ` [RFC 0/6] vfs: Add timestamp range check support Dave Chinner
2016-11-03 6:54 ` Darrick J. Wong
2016-11-03 20:43 ` Theodore Ts'o
2016-11-03 23:48 ` Dave Chinner
2016-11-04 0:27 ` Andreas Dilger
2016-11-06 17:44 ` Deepa Dinamani
2016-11-06 20:28 ` Arnd Bergmann
2016-11-06 21:14 ` Deepa Dinamani
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).