ceph: use current_kernel_time() to get request time stamp
ceph uses ktime_get_real_ts() to get request time stamp. In most other cases, current_kernel_time() is used to get time stamp for filesystem operations (called by current_time()). There is granularity difference between ktime_get_real_ts() and current_kernel_time(). The later one can be up to one jiffy behind the former one. This can causes inode's ctime to go back. Signed-off-by: "Yan, Zheng" <zyan@redhat.com> Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
This commit is contained in:
parent
03f219041f
commit
56199016e8
|
@ -1687,7 +1687,6 @@ struct ceph_mds_request *
|
|||
ceph_mdsc_create_request(struct ceph_mds_client *mdsc, int op, int mode)
|
||||
{
|
||||
struct ceph_mds_request *req = kzalloc(sizeof(*req), GFP_NOFS);
|
||||
struct timespec ts;
|
||||
|
||||
if (!req)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
@ -1706,8 +1705,7 @@ ceph_mdsc_create_request(struct ceph_mds_client *mdsc, int op, int mode)
|
|||
init_completion(&req->r_safe_completion);
|
||||
INIT_LIST_HEAD(&req->r_unsafe_item);
|
||||
|
||||
ktime_get_real_ts(&ts);
|
||||
req->r_stamp = timespec_trunc(ts, mdsc->fsc->sb->s_time_gran);
|
||||
req->r_stamp = timespec_trunc(current_kernel_time(), mdsc->fsc->sb->s_time_gran);
|
||||
|
||||
req->r_op = op;
|
||||
req->r_direct_mode = mode;
|
||||
|
|
Loading…
Reference in New Issue