Re: [PATCH] nfsdcltrack: Use uint64_t instead of time_t

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

 



On Tue, 2021-07-27 at 21:36 -0400, Steve Dickson wrote:
> With recent commits (4f2a5b64,5a53426c) that fixed
> compile errors on x86_64 machines, caused similar
> errors on i686 machines.
> 
> The variable type that was being used was a time_t,
> which changes size between architects, which
> caused the compile error.
> 
> Changing the variable to uint64_t fixed the issue.
> 
> Signed-off-by: Steve Dickson <steved@xxxxxxxxxx>
> ---
>  utils/nfsdcltrack/nfsdcltrack.c | 2 +-
>  utils/nfsdcltrack/sqlite.c      | 2 +-
>  utils/nfsdcltrack/sqlite.h      | 2 +-
>  3 files changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/utils/nfsdcltrack/nfsdcltrack.c b/utils/nfsdcltrack/nfsdcltrack.c
> index 0b37c094..7c1c4bcc 100644
> --- a/utils/nfsdcltrack/nfsdcltrack.c
> +++ b/utils/nfsdcltrack/nfsdcltrack.c
> @@ -508,7 +508,7 @@ cltrack_gracedone(const char *timestr)
>  {
>  	int ret;
>  	char *tail;
> -	time_t gracetime;
> +	uint64_t gracetime;
>  

Hmm.. time_t is a long:

    typedef __kernel_long_t __kernel_time_t;

...but the kernel is converting this value from a time64_t which is s64.
 
Should the above be int64_t instead of being unsigned? The kernel should
never send down a negative value, but if you're trying to match up types
then that might be cleaner.

> 
>  	ret = sqlite_prepare_dbh(storagedir);
> diff --git a/utils/nfsdcltrack/sqlite.c b/utils/nfsdcltrack/sqlite.c
> index cea4a411..cf0c6a45 100644
> --- a/utils/nfsdcltrack/sqlite.c
> +++ b/utils/nfsdcltrack/sqlite.c
> @@ -540,7 +540,7 @@ out_err:
>   * remove any client records that were not reclaimed since grace_start.
>   */
>  int
> -sqlite_remove_unreclaimed(time_t grace_start)
> +sqlite_remove_unreclaimed(uint64_t grace_start)
>  {
>  	int ret;
>  	char *err = NULL;
> diff --git a/utils/nfsdcltrack/sqlite.h b/utils/nfsdcltrack/sqlite.h
> index 06e7c044..ba8cdfa8 100644
> --- a/utils/nfsdcltrack/sqlite.h
> +++ b/utils/nfsdcltrack/sqlite.h
> @@ -26,7 +26,7 @@ int sqlite_insert_client(const unsigned char *clname, const size_t namelen,
>  int sqlite_remove_client(const unsigned char *clname, const size_t namelen);
>  int sqlite_check_client(const unsigned char *clname, const size_t namelen,
>  				const bool has_session);
> -int sqlite_remove_unreclaimed(const time_t grace_start);
> +int sqlite_remove_unreclaimed(const uint64_t grace_start);
>  int sqlite_query_reclaiming(const time_t grace_start);
>  
>  #endif /* _SQLITE_H */

-- 
Jeff Layton <jlayton@xxxxxxxxxx>




[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