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

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

 





On 7/28/21 7:15 AM, Jeff Layton wrote:
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.
The patch I took to fix the printfs on  64-bits platforms
used the PRIu64 inttype interface so I was just keeping
things constant by using a uint64_t.

The answer to your question is yes... int64 is all that
is needed... but I don't in really matters...

steved.


  	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 */





[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