Re: [PATCH] sunrpc: prepare NFS for 2038

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Aug 16, 2013 at 03:46:40AM +1000, Harshula Jayasuriya wrote:
> 1) The kernel sunrpc code needs to handle seconds since epoch
> greater than 2147483647. This means functions that parse time
> as an int need to handle it as time_t.

Anyone expecting not to have to upgrade their nfs server once between
now and 2038 is interesting, but... yes, may as well get it fixed now,
OK.

> 2) The kernel changes must be accompanied by userspace changes
> in nfs-utils.

This all looks backwards-compatible, so I assume that "must" is only if
you want this particular bug fixed.

Applying for 3.12 absent any objections.

--b.

> 
> Signed-off-by: Harshula Jayasuriya <harshula@xxxxxxxxxx>
> ---
>  include/linux/sunrpc/cache.h | 22 ++++++++++++++++++++--
>  1 file changed, 20 insertions(+), 2 deletions(-)
> 
> diff --git a/include/linux/sunrpc/cache.h b/include/linux/sunrpc/cache.h
> index 6ce690d..437ddb6 100644
> --- a/include/linux/sunrpc/cache.h
> +++ b/include/linux/sunrpc/cache.h
> @@ -264,12 +264,30 @@ static inline int get_uint(char **bpp, unsigned int *anint)
>  	return 0;
>  }
>  
> +static inline int get_time(char **bpp, time_t *time)
> +{
> +	char buf[50];
> +	long long ll;
> +	int len = qword_get(bpp, buf, sizeof(buf));
> +
> +	if (len < 0)
> +		return -EINVAL;
> +	if (len == 0)
> +		return -ENOENT;
> +
> +	if (kstrtoll(buf, 0, &ll))
> +		return -EINVAL;
> +
> +	*time = (time_t)ll;
> +	return 0;
> +}
> +
>  static inline time_t get_expiry(char **bpp)
>  {
> -	int rv;
> +	time_t rv;
>  	struct timespec boot;
>  
> -	if (get_int(bpp, &rv))
> +	if (get_time(bpp, &rv))
>  		return 0;
>  	if (rv < 0)
>  		return 0;
> -- 
> 1.8.3.1
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux