]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: ESubtreeMap more modernization for dencoder
authorGreg Farnum <greg@inktank.com>
Mon, 4 Feb 2013 04:47:06 +0000 (20:47 -0800)
committerGreg Farnum <greg@inktank.com>
Fri, 8 Feb 2013 21:17:54 +0000 (13:17 -0800)
Signed-off-by: Greg Farnum <greg@inktank.com>
src/mds/events/ESubtreeMap.h
src/mds/journal.cc
src/test/encoding/types.h

index 72d9a8c315d910edf4a0e4b95b201549e72e1f75..0267a92598269fe79babc29cff0b3786be4a22eb 100644 (file)
@@ -33,27 +33,10 @@ public:
        << metablob;
   }
 
-  void encode(bufferlist& bl) const {
-    ENCODE_START(5, 5, bl);
-    ::encode(stamp, bl);
-    ::encode(metablob, bl);
-    ::encode(subtrees, bl);
-    ::encode(ambiguous_subtrees, bl);
-    ::encode(expire_pos, bl);
-    ENCODE_FINISH(bl);
-  } 
-  void decode(bufferlist::iterator &bl) {
-    DECODE_START_LEGACY_COMPAT_LEN(5, 5, 5, bl);
-    if (struct_v >= 2)
-      ::decode(stamp, bl);
-    ::decode(metablob, bl);
-    ::decode(subtrees, bl);
-    if (struct_v >= 4)
-      ::decode(ambiguous_subtrees, bl);
-    if (struct_v >= 3)
-      ::decode(expire_pos, bl);
-    DECODE_FINISH(bl);
-  }
+  void encode(bufferlist& bl) const;
+  void decode(bufferlist::iterator& bl);
+  void dump(Formatter *f) const;
+  static void generate_test_instances(list<ESubtreeMap*>& ls);
 
   void replay(MDS *mds);
 };
index 15abf0690ab1bf1b549b3a62ea81a42ea822fef4..7ac8242e4b1cc3a55a3a53c8fe19350c9b77638f 100644 (file)
@@ -2001,6 +2001,65 @@ void ESlaveUpdate::replay(MDS *mds)
 // -----------------------
 // ESubtreeMap
 
+void ESubtreeMap::encode(bufferlist& bl) const
+{
+  ENCODE_START(5, 5, bl);
+  ::encode(stamp, bl);
+  ::encode(metablob, bl);
+  ::encode(subtrees, bl);
+  ::encode(ambiguous_subtrees, bl);
+  ::encode(expire_pos, bl);
+  ENCODE_FINISH(bl);
+}
+void ESubtreeMap::decode(bufferlist::iterator &bl)
+{
+  DECODE_START_LEGACY_COMPAT_LEN(5, 5, 5, bl);
+  if (struct_v >= 2)
+    ::decode(stamp, bl);
+  ::decode(metablob, bl);
+  ::decode(subtrees, bl);
+  if (struct_v >= 4)
+    ::decode(ambiguous_subtrees, bl);
+  if (struct_v >= 3)
+    ::decode(expire_pos, bl);
+  DECODE_FINISH(bl);
+}
+
+void ESubtreeMap::dump(Formatter *f) const
+{
+  f->open_object_section("metablob");
+  metablob.dump(f);
+  f->close_section(); // metablob
+  
+  f->open_array_section("subtrees");
+  for(map<dirfrag_t,vector<dirfrag_t> >::const_iterator i = subtrees.begin();
+      i != subtrees.end(); ++i) {
+    f->open_object_section("tree");
+    f->dump_stream("root dirfrag") << i->first;
+    for (vector<dirfrag_t>::const_iterator j = i->second.begin();
+        j != i->second.end(); ++j) {
+      f->dump_stream("bound dirfrag") << *j;
+    }
+    f->close_section(); // tree
+  }
+  f->close_section(); // subtrees
+
+  f->open_array_section("ambiguous subtrees");
+  for(set<dirfrag_t>::const_iterator i = ambiguous_subtrees.begin();
+      i != ambiguous_subtrees.end(); ++i) {
+    f->dump_stream("dirfrag") << *i;
+  }
+  f->close_section(); // ambiguous subtrees
+
+  f->dump_int("expire position", expire_pos);
+}
+
+void ESubtreeMap::generate_test_instances(list<ESubtreeMap*>& ls)
+{
+  ls.push_back(new ESubtreeMap());
+}
+
 void ESubtreeMap::replay(MDS *mds) 
 {
   if (expire_pos && expire_pos > mds->mdlog->journaler->get_expire_pos())
index 4b8e091a352e78cfd9d5415c9ecdcc5a4cd04156..eefbbf0e3752d4857808cd56f3eefabb69ffb42a 100644 (file)
@@ -154,6 +154,9 @@ TYPE(rename_rollback::drec)
 TYPE(rename_rollback)
 TYPE(ESlaveUpdate)
 
+#include "mds/events/ESubtreeMap.h"
+TYPE(ESubtreeMap)
+
 #ifdef WITH_RADOSGW
 
 #include "rgw/rgw_rados.h"