]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
Linux_5.0: replaced current_kernel_time with ktime_get_coarse_real_ts64
authorCheyenne Wills <cwills@sinenomine.net>
Sat, 19 Jan 2019 00:22:44 +0000 (17:22 -0700)
committerStephan Wiesand <stephan.wiesand@desy.de>
Fri, 25 Jan 2019 17:49:34 +0000 (12:49 -0500)
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.

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>
(cherry picked from commit 21ad6a0c826c150c4227ece50554101641ab4626)

Change-Id: Idb8a2c1b74835601fb1fc699c3ebbcee75c94e3e
Reviewed-on: https://gerrit.openafs.org/13442
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
src/afs/LINUX/osi_file.c
src/cf/linux-test4.m4

index a9693cb6bc7e2843e5eafc8fe3eed760da8e6b5a..8dd7c39ed32e7c6a3c450921c229d7d7f9ef4ba5 100644 (file)
 #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;
@@ -200,7 +206,7 @@ osi_UFSTruncate(struct osi_file *afile, afs_int32 asize)
 #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
index 50b8a0ede4ff852f782c8e1ee60e6f3726633662..cf82056759797f12425f0460c040da49bfb65fe4 100644 (file)
@@ -189,7 +189,12 @@ AC_DEFUN([LINUX_IATTR_64BIT_TIME], [
                        [#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],
                        [])