diff options
author | Sage Weil <sage@inktank.com> | 2013-09-17 06:27:11 -0700 |
---|---|---|
committer | Sage Weil <sage@inktank.com> | 2013-09-17 06:27:35 -0700 |
commit | 5100ae91c056ab116de315f18efa22ea52910975 (patch) | |
tree | 77a8c177b1c74f2c1656c86a3945a410aff340cb /src/mds/Locker.cc | |
parent | 21900f55ff19edc4e1244729344ed8de9e98a8ea (diff) | |
download | ceph-wip-inline.tar.gz |
mds: share inline data with capswip-inline
Diffstat (limited to 'src/mds/Locker.cc')
-rw-r--r-- | src/mds/Locker.cc | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/mds/Locker.cc b/src/mds/Locker.cc index 99bd761e0f7..4f1d322ddac 100644 --- a/src/mds/Locker.cc +++ b/src/mds/Locker.cc @@ -2686,6 +2686,7 @@ void Locker::_update_cap_fields(CInode *in, int dirty, MClientCaps *m, inode_t * utime_t mtime = m->get_mtime(); utime_t ctime = m->get_ctime(); uint64_t size = m->get_size(); + uint64_t inline_version = m->inline_version; if (((dirty & CEPH_CAP_FILE_WR) && mtime > pi->mtime) || ((dirty & CEPH_CAP_FILE_EXCL) && mtime != pi->mtime)) { @@ -2705,6 +2706,12 @@ void Locker::_update_cap_fields(CInode *in, int dirty, MClientCaps *m, inode_t * pi->size = size; pi->rstat.rbytes = size; } + if (in->inode.is_file() && + (dirty & CEPH_CAP_FILE_WR) && + inline_version > pi->inline_version) { + pi->inline_version = inline_version; + pi->inline_data = m->inline_data; + } if ((dirty & CEPH_CAP_FILE_EXCL) && atime != pi->atime) { dout(7) << " atime " << pi->atime << " -> " << atime << " for " << *in << dendl; |