summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSage Weil <sage@inktank.com>2013-09-16 22:53:10 -0700
committerSage Weil <sage@inktank.com>2013-09-17 06:27:35 -0700
commit0b68021748f623e28bb40510b948d7ba58c2b125 (patch)
tree6bab44a722954f7df16b839e6a9623ddbb2c463b
parent4064eed797ed5c94d98e17e18692d19fbfd04c6b (diff)
downloadceph-0b68021748f623e28bb40510b948d7ba58c2b125.tar.gz
mds: store inline data in the inode_t
-rw-r--r--src/mds/mdstypes.cc12
-rw-r--r--src/mds/mdstypes.h3
2 files changed, 13 insertions, 2 deletions
diff --git a/src/mds/mdstypes.cc b/src/mds/mdstypes.cc
index 6886786f27e..8634adf4cab 100644
--- a/src/mds/mdstypes.cc
+++ b/src/mds/mdstypes.cc
@@ -204,7 +204,7 @@ ostream& operator<<(ostream& out, const client_writeable_range_t& r)
*/
void inode_t::encode(bufferlist &bl) const
{
- ENCODE_START(7, 6, bl);
+ ENCODE_START(8, 8, bl);
::encode(ino, bl);
::encode(rdev, bl);
@@ -227,6 +227,8 @@ void inode_t::encode(bufferlist &bl) const
::encode(mtime, bl);
::encode(atime, bl);
::encode(time_warp_seq, bl);
+ ::encode(inline_version, bl);
+ ::encode(inline_data, bl);
::encode(client_ranges, bl);
::encode(dirstat, bl);
@@ -244,7 +246,7 @@ void inode_t::encode(bufferlist &bl) const
void inode_t::decode(bufferlist::iterator &p)
{
- DECODE_START_LEGACY_COMPAT_LEN(7, 6, 6, p);
+ DECODE_START_LEGACY_COMPAT_LEN(8, 6, 6, p);
::decode(ino, p);
::decode(rdev, p);
@@ -273,6 +275,12 @@ void inode_t::decode(bufferlist::iterator &p)
::decode(mtime, p);
::decode(atime, p);
::decode(time_warp_seq, p);
+ if (struct_v >= 8) {
+ ::decode(inline_version, p);
+ ::decode(inline_data, p);
+ } else {
+ inline_version = CEPH_INLINE_DISABLED;
+ }
if (struct_v >= 3) {
::decode(client_ranges, p);
} else {
diff --git a/src/mds/mdstypes.h b/src/mds/mdstypes.h
index 902e3104aa8..928167c833a 100644
--- a/src/mds/mdstypes.h
+++ b/src/mds/mdstypes.h
@@ -335,6 +335,8 @@ struct inode_t {
utime_t mtime; // file data modify time.
utime_t atime; // file data access time.
uint32_t time_warp_seq; // count of (potential) mtime/atime timewarps (i.e., utimes())
+ bufferlist inline_data;
+ uint64_t inline_version;
map<client_t,client_writeable_range_t> client_ranges; // client(s) can write to these ranges
@@ -356,6 +358,7 @@ struct inode_t {
size(0), truncate_seq(0), truncate_size(0), truncate_from(0),
truncate_pending(0),
time_warp_seq(0),
+ inline_version(1),
version(0), file_data_version(0), xattr_version(0), backtrace_version(0) {
clear_layout();
memset(&dir_layout, 0, sizeof(dir_layout));