Whamcloud - gitweb
LU-9019 llite: change lli_glimpse_time to ktime 01/30601/2
authorJames Simmons <uja.ornl@yahoo.com>
Tue, 19 Dec 2017 18:20:45 +0000 (13:20 -0500)
committerOleg Drokin <oleg.drokin@intel.com>
Thu, 4 Jan 2018 02:48:34 +0000 (02:48 +0000)
Currently lli_glimpse_time is in jiffies which can vary between
platforms. Migrate to ktime since we need more than second
time resolution that is consistent on any platform. Replace the
last cfs_time_current_sec() with ktime_get_real_seconds().

Change-Id: I352c3adbd07d9dadb7e5dbe180447a1cb18a48d2
Signed-off-by: James Simmons <uja.ornl@yahoo.com>
Reviewed-on: https://review.whamcloud.com/30601
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Dmitry Eremin <dmitry.eremin@intel.com>
Reviewed-by: Mike Pershin <mike.pershin@intel.com>
Reviewed-by: John L. Hammond <john.hammond@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre/llite/llite_internal.h
lustre/llite/llite_lib.c
lustre/llite/statahead.c

index a01a7c0..2d73dcf 100644 (file)
@@ -191,7 +191,7 @@ struct ll_inode_info {
                        struct range_lock_tree          lli_write_tree;
 
                        struct rw_semaphore             lli_glimpse_sem;
-                       cfs_time_t                      lli_glimpse_time;
+                       ktime_t                         lli_glimpse_time;
                        struct list_head                lli_agl_list;
                        __u64                           lli_agl_index;
 
@@ -1249,7 +1249,7 @@ static inline int ll_glimpse_size(struct inode *inode)
 
        down_read(&lli->lli_glimpse_sem);
        rc = cl_glimpse_size(inode);
-       lli->lli_glimpse_time = cfs_time_current();
+       lli->lli_glimpse_time = ktime_get();
        up_read(&lli->lli_glimpse_sem);
        return rc;
 }
index 89d438a..ee4b1a2 100644 (file)
@@ -948,7 +948,7 @@ void ll_lli_init(struct ll_inode_info *lli)
                init_rwsem(&lli->lli_trunc_sem);
                range_lock_tree_init(&lli->lli_write_tree);
                init_rwsem(&lli->lli_glimpse_sem);
-               lli->lli_glimpse_time = 0;
+               lli->lli_glimpse_time = ktime_set(0, 0);
                INIT_LIST_HEAD(&lli->lli_agl_list);
                lli->lli_agl_index = 0;
                lli->lli_async_rc = 0;
@@ -2518,7 +2518,7 @@ struct md_op_data *ll_prep_md_op_data(struct md_op_data *op_data,
        op_data->op_name = name;
        op_data->op_namelen = namelen;
        op_data->op_mode = mode;
-       op_data->op_mod_time = cfs_time_current_sec();
+       op_data->op_mod_time = ktime_get_real_seconds();
        op_data->op_fsuid = from_kuid(&init_user_ns, current_fsuid());
        op_data->op_fsgid = from_kgid(&init_user_ns, current_fsgid());
        op_data->op_cap = cfs_curproc_cap_pack();
index 4022398..40264cd 100644 (file)
@@ -493,10 +493,11 @@ static void ll_sai_put(struct ll_statahead_info *sai)
 static void ll_agl_trigger(struct inode *inode, struct ll_statahead_info *sai)
 {
        struct ll_inode_info *lli = ll_i2info(inode);
-       __u64 index = lli->lli_agl_index;
+       u64 index = lli->lli_agl_index;
+       ktime_t expire;
        int rc;
-       ENTRY;
 
+       ENTRY;
        LASSERT(list_empty(&lli->lli_agl_list));
 
         /* AGL maybe fall behind statahead with one entry */
@@ -539,8 +540,9 @@ static void ll_agl_trigger(struct inode *inode, struct ll_statahead_info *sai)
          *    relative rare. AGL can ignore such case, and it will not muchly
          *    affect the performance.
          */
-        if (lli->lli_glimpse_time != 0 &&
-            cfs_time_before(cfs_time_shift(-1), lli->lli_glimpse_time)) {
+       expire = ktime_sub_ns(ktime_get(), NSEC_PER_SEC);
+       if (ktime_to_ns(lli->lli_glimpse_time) &&
+           ktime_before(expire, lli->lli_glimpse_time)) {
                up_write(&lli->lli_glimpse_sem);
                 lli->lli_agl_index = 0;
                 iput(inode);
@@ -552,7 +554,7 @@ static void ll_agl_trigger(struct inode *inode, struct ll_statahead_info *sai)
 
         cl_agl(inode);
         lli->lli_agl_index = 0;
-        lli->lli_glimpse_time = cfs_time_current();
+       lli->lli_glimpse_time = ktime_get();
        up_write(&lli->lli_glimpse_sem);
 
         CDEBUG(D_READA, "Handled (init) async glimpse: inode= "