In Kernel commit
fb7fcc96a86cfaef0f6dcc0665516aa68611e736 the
current_kernel_time/current_kernel_time64 functions where renamed
and the calling was standardized.
According to the Linux Documentation/core-api/timekeeping.rst
ktime_get_coarse_real_ts64 is the direct replacement for
current_kernel_time64. Because of year 2038 issues, there is no
replacement for current_kernel_time.
Updated code that used current_kernel_time to use new name and calling
convention.
Updated autoconf test that sets IATTR_TAKES_64BIT_TIME as well.
Change-Id: I607bdcf6f023425975e5bb747e0e780b3d2a7ce5
Reviewed-on: https://gerrit.openafs.org/13434
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
#include "osi_compat.h"
#ifndef CURRENT_TIME
-# ifdef IATTR_TAKES_64BIT_TIME
-# define CURRENT_TIME (current_kernel_time64())
+# if defined(HAVE_LINUX_KTIME_GET_COARSE_REAL_TS64)
+# define AFS_CURRENT_TIME(x) (ktime_get_coarse_real_ts64((x)))
# else
-# define CURRENT_TIME (current_kernel_time())
+# ifdef IATTR_TAKES_64BIT_TIME
+# define AFS_CURRENT_TIME(x) do {*(x) = current_kernel_time64();} while (0)
+# else
+# define AFS_CURRENT_TIME(x) do {*(x) = current_kernel_time();} while (0)
+# endif
# endif
+#else
+# define AFS_CURRENT_TIME(x) do {*(x) = CURRENT_TIME;} while(0)
#endif
int cache_fh_type = -1;
#endif
newattrs.ia_size = asize;
newattrs.ia_valid = ATTR_SIZE | ATTR_CTIME;
- newattrs.ia_ctime = CURRENT_TIME;
+ AFS_CURRENT_TIME(&newattrs.ia_ctime);
/* avoid notify_change() since it wants to update dentry->d_parent */
#ifdef HAVE_LINUX_SETATTR_PREPARE
[#include <linux/fs.h>
#include <linux/timekeeping.h>],
[struct iattr _attrs;
- _attrs.ia_ctime = current_kernel_time64();],
+ #if defined(HAVE_LINUX_KTIME_GET_COARSE_REAL_TS64)
+ ktime_get_coarse_real_ts64(&_attrs.ia_ctime);
+ #else
+ _attrs.ia_ctime = current_kernel_time64();
+ #endif
+ ],
[IATTR_TAKES_64BIT_TIME],
[define if struct iattr->ia_ctime takes struct timespec64],
[])