Whamcloud - gitweb
LU-4423 libcfs: use 64-bit inode timestamps internally 36/23136/2
authorArnd Bergmann <arnd@arndb.de>
Thu, 13 Oct 2016 17:03:03 +0000 (13:03 -0400)
committerOleg Drokin <oleg.drokin@intel.com>
Sun, 1 Jan 2017 01:58:23 +0000 (01:58 +0000)
Lustre has 64-bit timestamps in its network data structures, but
on 32 bit systems, it converts them directly into time_t, which is
32 bit wide.

This changes the code to use 64-bit time stamps for files. The Linux
VFS code still uses time_t though, and will be changed in a separate
patch series.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Change-Id: I6d3e986fa4eac2fe76a6d66a55f2cdbfe8fdae55
Signed-off-by: Oleg Drokin <green@linuxhacker.ru>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: James Simmons <uja.ornl@yahoo.com>
Reviewed-on: https://review.whamcloud.com/23136
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Jinshan Xiong <jinshan.xiong@intel.com>
Reviewed-by: Dmitry Eremin <dmitry.eremin@intel.com>
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre/include/cl_object.h
lustre/llite/vvp_internal.h
lustre/llite/vvp_io.c
lustre/llite/vvp_object.c
lustre/osc/osc_io.c

index 526b5d2..de0470f 100644 (file)
@@ -144,11 +144,11 @@ struct cl_attr {
          */
         loff_t cat_kms;
         /** Modification time. Measured in seconds since epoch. */
-        time_t cat_mtime;
+        time64_t cat_mtime;
         /** Access time. Measured in seconds since epoch. */
-        time_t cat_atime;
+        time64_t cat_atime;
         /** Change time. Measured in seconds since epoch. */
-        time_t cat_ctime;
+        time64_t cat_ctime;
         /**
          * Blocks allocated to this cl_object on the server file system.
          *
index 4a41108..c9240df 100644 (file)
@@ -76,7 +76,7 @@ struct vvp_io {
                         * Inode modification time that is checked across DLM
                         * lock request.
                         */
-                       time_t                   ft_mtime;
+                       time64_t                 ft_mtime;
                        struct vm_area_struct   *ft_vma;
                        /**
                         *  locked page returned from vvp_io
index a7e5f48..50ca3f1 100644 (file)
@@ -287,7 +287,7 @@ static int vvp_io_fault_iter_init(const struct lu_env *env,
        struct inode  *inode = vvp_object_inode(ios->cis_obj);
 
        LASSERT(inode == file_inode(vio->vui_fd->fd_file));
-       vio->u.fault.ft_mtime = LTIME_S(inode->i_mtime);
+       vio->u.fault.ft_mtime = inode->i_mtime.tv_sec;
 
        return 0;
 }
index 56513eb..eeb1771 100644 (file)
@@ -94,9 +94,9 @@ static int vvp_attr_get(const struct lu_env *env, struct cl_object *obj,
         */
 
        attr->cat_size = i_size_read(inode);
-       attr->cat_mtime = LTIME_S(inode->i_mtime);
-       attr->cat_atime = LTIME_S(inode->i_atime);
-       attr->cat_ctime = LTIME_S(inode->i_ctime);
+       attr->cat_mtime = inode->i_mtime.tv_sec;
+       attr->cat_atime = inode->i_atime.tv_sec;
+       attr->cat_ctime = inode->i_ctime.tv_sec;
        attr->cat_blocks = inode->i_blocks;
        attr->cat_uid = from_kuid(&init_user_ns, inode->i_uid);
        attr->cat_gid = from_kgid(&init_user_ns, inode->i_gid);
@@ -114,11 +114,11 @@ static int vvp_attr_update(const struct lu_env *env, struct cl_object *obj,
        if (valid & CAT_GID)
                inode->i_gid = make_kgid(&init_user_ns, attr->cat_gid);
        if (valid & CAT_ATIME)
-               LTIME_S(inode->i_atime) = attr->cat_atime;
+               inode->i_atime.tv_sec = attr->cat_atime;
        if (valid & CAT_MTIME)
-               LTIME_S(inode->i_mtime) = attr->cat_mtime;
+               inode->i_mtime.tv_sec = attr->cat_mtime;
        if (valid & CAT_CTIME)
-               LTIME_S(inode->i_ctime) = attr->cat_ctime;
+               inode->i_ctime.tv_sec = attr->cat_ctime;
        if (0 && valid & CAT_SIZE)
                i_size_write(inode, attr->cat_size);
        /* not currently necessary */
index 4570c7e..bae03f3 100644 (file)
@@ -733,7 +733,7 @@ static int osc_io_read_start(const struct lu_env *env,
 
        if (!slice->cis_io->ci_noatime) {
                cl_object_attr_lock(obj);
-               attr->cat_atime = LTIME_S(CURRENT_TIME);
+               attr->cat_atime = ktime_get_real_seconds();
                rc = cl_object_attr_update(env, obj, attr, CAT_ATIME);
                cl_object_attr_unlock(obj);
        }
@@ -751,7 +751,7 @@ static int osc_io_write_start(const struct lu_env *env,
 
        OBD_FAIL_TIMEOUT(OBD_FAIL_OSC_DELAY_SETTIME, 1);
        cl_object_attr_lock(obj);
-       attr->cat_mtime = attr->cat_ctime = LTIME_S(CURRENT_TIME);
+       attr->cat_mtime = attr->cat_ctime = ktime_get_real_seconds();
        rc = cl_object_attr_update(env, obj, attr, CAT_MTIME | CAT_CTIME);
        cl_object_attr_unlock(obj);