]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: old_inode_t now uses modern encoding
authorGreg Farnum <greg@inktank.com>
Thu, 31 Jan 2013 19:24:35 +0000 (11:24 -0800)
committerGreg Farnum <greg@inktank.com>
Tue, 5 Feb 2013 21:29:05 +0000 (13:29 -0800)
Signed-off-by: Sage Weil <sage@inktank.com>
Signed-off-by: Greg Farnum <greg@inktank.com>
src/mds/mdstypes.cc
src/mds/mdstypes.h
src/test/encoding/types.h

index 18c682757ce4c8f54b84065f4ff6c7a2dcde6b3a..1cb34f6a1a4d527a175653ce22218d63365439c7 100644 (file)
@@ -392,3 +392,49 @@ void inode_t::generate_test_instances(list<inode_t*>& ls)
   ls.back()->ino = 1;
   // i am lazy.
 }
+
+
+/*
+ * old_inode_t
+ */
+void old_inode_t::encode(bufferlist& bl) const
+{
+  ENCODE_START(2, 2, bl);
+  ::encode(first, bl);
+  ::encode(inode, bl);
+  ::encode(xattrs, bl);
+  ENCODE_FINISH(bl);
+}
+
+void old_inode_t::decode(bufferlist::iterator& bl)
+{
+  DECODE_START_LEGACY_COMPAT_LEN(2, 2, 2, bl);
+  ::decode(first, bl);
+  ::decode(inode, bl);
+  ::decode(xattrs, bl);
+  DECODE_FINISH(bl);
+}
+
+void old_inode_t::dump(Formatter *f) const
+{
+  f->dump_unsigned("first", first);
+  inode.dump(f);
+  f->open_object_section("xattrs");
+  for (map<string,bufferptr>::const_iterator p = xattrs.begin(); p != xattrs.end(); ++p) {
+    string v(p->second.c_str(), p->second.length());
+    f->dump_string(p->first.c_str(), v);
+  }
+  f->close_section();
+}
+
+void old_inode_t::generate_test_instances(list<old_inode_t*>& ls)
+{
+  ls.push_back(new old_inode_t);
+  ls.push_back(new old_inode_t);
+  ls.back()->first = 2;
+  list<inode_t*> ils;
+  inode_t::generate_test_instances(ils);
+  ls.back()->inode = *ils.back();
+  ls.back()->xattrs["user.foo"] = buffer::copy("asdf", 4);
+  ls.back()->xattrs["user.unprintable"] = buffer::copy("\000\001\002", 3);
+}
index b26e312f6d02527ecaad0e85b7969abb92a08964..d0e704023340a19dde47519f38ad73831ca564d6 100644 (file)
@@ -434,25 +434,18 @@ struct inode_t {
 WRITE_CLASS_ENCODER(inode_t)
 
 
+/*
+ * old_inode_t
+ */
 struct old_inode_t {
   snapid_t first;
   inode_t inode;
   map<string,bufferptr> xattrs;
 
-  void encode(bufferlist& bl) const {
-    __u8 struct_v = 1;
-    ::encode(struct_v, bl);
-    ::encode(first, bl);
-    ::encode(inode, bl);
-    ::encode(xattrs, bl);
-  }
-  void decode(bufferlist::iterator& bl) {
-    __u8 struct_v;
-    ::decode(struct_v, bl);
-    ::decode(first, bl);
-    ::decode(inode, bl);
-    ::decode(xattrs, bl);
-  }
+  void encode(bufferlist &bl) const;
+  void decode(bufferlist::iterator& bl);
+  void dump(Formatter *f) const;
+  static void generate_test_instances(list<old_inode_t*>& ls);
 };
 WRITE_CLASS_ENCODER(old_inode_t)
 
index ea6765f7f3fc594dddd3d3cf2b1b71154f705a3c..47179f30f21b57a640d959e749b3f33fb4d301fa 100644 (file)
@@ -102,6 +102,8 @@ TYPE(frag_info_t)
 TYPE(nest_info_t)
 TYPE(client_writeable_range_t)
 TYPE(inode_t)
+TYPE(old_inode_t)
+
 
 #ifdef WITH_RADOSGW