summaryrefslogtreecommitdiff
path: root/src/mds/Locker.cc
diff options
context:
space:
mode:
authorSage Weil <sage@inktank.com>2013-09-17 06:27:11 -0700
committerSage Weil <sage@inktank.com>2013-09-17 06:27:35 -0700
commit5100ae91c056ab116de315f18efa22ea52910975 (patch)
tree77a8c177b1c74f2c1656c86a3945a410aff340cb /src/mds/Locker.cc
parent21900f55ff19edc4e1244729344ed8de9e98a8ea (diff)
downloadceph-wip-inline.tar.gz
mds: share inline data with capswip-inline
Diffstat (limited to 'src/mds/Locker.cc')
-rw-r--r--src/mds/Locker.cc7
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;