Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1588048

Re: [PATCH v4 1/5] vfs: Add file timestamp range support

From "Darrick J. Wong" <darrick.wong@oracle.com>
Newsgroups linux.kernel
Subject Re: [PATCH v4 1/5] vfs: Add file timestamp range support
Date 2017-02-25 04:20 +0100
Message-ID <teB3P-1Dp-3@gated-at.bofh.it> (permalink)
References <tezEJ-t9-5@gated-at.bofh.it> <tezEK-t9-19@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


On Fri, Feb 24, 2017 at 05:40:59PM -0800, Deepa Dinamani wrote:
> Add fields to the superblock to track the min and max
> timestamps supported by filesystems.
> 
> Initially, when a superblock is allocated, initialize
> it to the max and min values the fields can hold.
> Individual filesystems override these to match their
> actual limits.
> 
> Pseudo filesystems are assumed to always support the
> min and max allowable values for the fields.
> 
> Note that the time ranges are saved in type time64_t
> rather than time_t.
> This is required because if we save ranges in time_t
> then we would not be able to save timestamp ranges
> for files that support timestamps beyond y2038.
> 
> Signed-off-by: Deepa Dinamani <deepa.kernel@gmail.com>
> ---
>  fs/super.c             | 2 ++
>  include/linux/fs.h     | 3 +++
>  include/linux/time64.h | 2 ++
>  3 files changed, 7 insertions(+)
> 
> diff --git a/fs/super.c b/fs/super.c
> index b8b6a08..f9c2241 100644
> --- a/fs/super.c
> +++ b/fs/super.c
> @@ -247,6 +247,8 @@ static struct super_block *alloc_super(struct file_system_type *type, int flags,
>  	s->s_maxbytes = MAX_NON_LFS;
>  	s->s_op = &default_op;
>  	s->s_time_gran = 1000000000;
> +	s->s_time_min = TIME64_MIN;
> +	s->s_time_max = TIME64_MAX;

Just out of curiosity, does this enable 64-bit timestamps for everything
by default?  I see that ext4 later sets its own values in fill_super;
what about things like XFS that really only have 32-bit seconds fields?

--D

>  	s->cleancache_poolid = CLEANCACHE_NO_POOL;
>  
>  	s->s_shrink.seeks = DEFAULT_SEEKS;
> diff --git a/include/linux/fs.h b/include/linux/fs.h
> index de8ed0b..ef55dfb 100644
> --- a/include/linux/fs.h
> +++ b/include/linux/fs.h
> @@ -1337,6 +1337,9 @@ struct super_block {
>  	/* Granularity of c/m/atime in ns.
>  	   Cannot be worse than a second */
>  	u32		   s_time_gran;
> +	/* Time limits for c/m/atime in seconds. */
> +	time64_t           s_time_min;
> +	time64_t           s_time_max;
>  
>  	/*
>  	 * The next field is for VFS *only*. No filesystems have any business
> diff --git a/include/linux/time64.h b/include/linux/time64.h
> index 980c71b..25433b18 100644
> --- a/include/linux/time64.h
> +++ b/include/linux/time64.h
> @@ -38,6 +38,8 @@ struct itimerspec64 {
>  
>  /* Located here for timespec[64]_valid_strict */
>  #define TIME64_MAX			((s64)~((u64)1 << 63))
> +#define TIME64_MIN			(-TIME64_MAX - 1)
> +
>  #define KTIME_MAX			((s64)~((u64)1 << 63))
>  #define KTIME_SEC_MAX			(KTIME_MAX / NSEC_PER_SEC)
>  
> -- 
> 2.7.4
> 

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH v4 0/5] vfs: Add timestamp range check support Deepa Dinamani <deepa.kernel@gmail.com> - 2017-02-25 02:50 +0100
  [PATCH v4 1/5] vfs: Add file timestamp range support Deepa Dinamani <deepa.kernel@gmail.com> - 2017-02-25 02:50 +0100
    Re: [PATCH v4 1/5] vfs: Add file timestamp range support "Darrick J. Wong" <darrick.wong@oracle.com> - 2017-02-25 04:20 +0100
      Re: [PATCH v4 1/5] vfs: Add file timestamp range support Deepa Dinamani <deepa.kernel@gmail.com> - 2017-02-25 20:00 +0100

csiph-web