]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
client: update ctime when modifying file content 24323/head
authorYan, Zheng <zyan@redhat.com>
Tue, 11 Sep 2018 06:55:24 +0000 (14:55 +0800)
committerNathan Cutler <ncutler@suse.com>
Fri, 28 Sep 2018 08:03:27 +0000 (10:03 +0200)
Fixes: http://tracker.ceph.com/issues/35945
Signed-off-by: "Yan, Zheng" <zyan@redhat.com>
(cherry picked from commit 60f73cde4e04be2685eaf7cd04e03c045e1f9977)

Conflicts:
src/client/Client.cc
- slightly different arguments to filer->zero() function call

src/client/Client.cc
src/mds/Locker.cc

index aacc68f1fd338d0d2f3d9b48a77c11679012206b..b634dab84c53c8cb4888a5f9c52cc267a2f5d370 100644 (file)
@@ -9364,7 +9364,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);
 
@@ -13045,7 +13045,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 {
@@ -13071,7 +13071,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);
 
@@ -13087,7 +13087,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);
 
index 251dad5ff37d8c64ccc06b932210dca39f255e06..5a1f8b01acd417146d8d28b9050cbc43062a5d02 100644 (file)
@@ -3178,6 +3178,8 @@ void Locker::_update_cap_fields(CInode *in, int dirty, MClientCaps *m, CInode::m
       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) {