From 60f73cde4e04be2685eaf7cd04e03c045e1f9977 Mon Sep 17 00:00:00 2001 From: "Yan, Zheng" Date: Tue, 11 Sep 2018 14:55:24 +0800 Subject: [PATCH] client: update ctime when modifying file content Fixes: http://tracker.ceph.com/issues/35945 Signed-off-by: "Yan, Zheng" --- src/client/Client.cc | 8 ++++---- src/mds/Locker.cc | 2 ++ 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/client/Client.cc b/src/client/Client.cc index e8b83e10eb729..90c48599e92f1 100644 --- a/src/client/Client.cc +++ b/src/client/Client.cc @@ -9515,7 +9515,7 @@ success: } // mtime - in->mtime = ceph_clock_now(); + in->mtime = in->ctime = ceph_clock_now(); in->change_attr++; in->mark_caps_dirty(CEPH_CAP_FILE_WR); @@ -13307,7 +13307,7 @@ int Client::_fallocate(Fh *fh, int mode, int64_t offset, int64_t length) in->inline_data = bl; in->inline_version++; } - in->mtime = ceph_clock_now(); + in->mtime = in->ctime = ceph_clock_now(); in->change_attr++; in->mark_caps_dirty(CEPH_CAP_FILE_WR); } else { @@ -13327,7 +13327,7 @@ int Client::_fallocate(Fh *fh, int mode, int64_t offset, int64_t length) offset, length, ceph::real_clock::now(), 0, true, &onfinish); - in->mtime = ceph_clock_now(); + in->mtime = in->ctime = ceph_clock_now(); in->change_attr++; in->mark_caps_dirty(CEPH_CAP_FILE_WR); @@ -13340,7 +13340,7 @@ int Client::_fallocate(Fh *fh, int mode, int64_t offset, int64_t length) uint64_t size = offset + length; if (size > in->size) { in->size = size; - in->mtime = ceph_clock_now(); + in->mtime = in->ctime = ceph_clock_now(); in->change_attr++; in->mark_caps_dirty(CEPH_CAP_FILE_WR); diff --git a/src/mds/Locker.cc b/src/mds/Locker.cc index d70d77453d991..4b11cd37c497d 100644 --- a/src/mds/Locker.cc +++ b/src/mds/Locker.cc @@ -3215,6 +3215,8 @@ void Locker::_update_cap_fields(CInode *in, int dirty, const MClientCaps::const_ dout(7) << " mtime " << pi->mtime << " -> " << mtime << " for " << *in << dendl; pi->mtime = mtime; + if (mtime > pi->rstat.rctime) + pi->rstat.rctime = mtime; } if (in->inode.is_file() && // ONLY if regular file size > pi->size) { -- 2.39.5