]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: EOpen event now uses modern encoding
authorGreg Farnum <greg@inktank.com>
Fri, 18 Jan 2013 20:56:54 +0000 (12:56 -0800)
committerGreg Farnum <greg@inktank.com>
Fri, 8 Feb 2013 21:17:53 +0000 (13:17 -0800)
Signed-off-by: Greg Farnum <greg@inktank.com>
src/mds/events/EOpen.h
src/mds/journal.cc
src/test/encoding/types.h

index 1919b0738277da14123d264e510fcf6cce20fc2f..3ec677c14f7fc4da82ae30c43cf3ce88e4b7abe5 100644 (file)
@@ -42,21 +42,10 @@ public:
     inos.push_back(ino);
   }
 
-  void encode(bufferlist &bl) const {
-    __u8 struct_v = 2;
-    ::encode(struct_v, bl);
-    ::encode(stamp, bl);
-    ::encode(metablob, bl);
-    ::encode(inos, bl);
-  } 
-  void decode(bufferlist::iterator &bl) {
-    __u8 struct_v;
-    ::decode(struct_v, bl);
-    if (struct_v >= 2)
-      ::decode(stamp, bl);
-    ::decode(metablob, bl);
-    ::decode(inos, bl);
-  }
+  void encode(bufferlist& bl) const;
+  void decode(bufferlist::iterator& bl);
+  void dump(Formatter *f) const;
+  static void generate_test_instances(list<EOpen*>& ls);
 
   void update_segment();
   void replay(MDS *mds);
index 9c4e2e244a484bc2bd224a931c926be7d69f4080..8b2298fac6cb573e3ce15233098d6902360dd2a6 100644 (file)
@@ -1536,6 +1536,43 @@ void EUpdate::replay(MDS *mds)
 // ------------------------
 // EOpen
 
+void EOpen::encode(bufferlist &bl) const {
+  ENCODE_START(3, 3, bl);
+  ::encode(stamp, bl);
+  ::encode(metablob, bl);
+  ::encode(inos, bl);
+  ENCODE_FINISH(bl);
+} 
+
+void EOpen::decode(bufferlist::iterator &bl) {
+  DECODE_START_LEGACY_COMPAT_LEN(3, 3, 3, bl);
+  if (struct_v >= 2)
+    ::decode(stamp, bl);
+  ::decode(metablob, bl);
+  ::decode(inos, bl);
+  DECODE_FINISH(bl);
+}
+
+void EOpen::dump(Formatter *f) const
+{
+  f->open_object_section("metablob");
+  metablob.dump(f);
+  f->close_section(); // metablob
+  f->open_array_section("inos involved");
+  for (vector<inodeno_t>::const_iterator i = inos.begin();
+       i != inos.end(); ++i) {
+    f->dump_int("ino", *i);
+  }
+  f->close_section(); // inos
+}
+
+void EOpen::generate_test_instances(list<EOpen*>& ls)
+{
+  ls.push_back(new EOpen());
+  ls.push_back(new EOpen());
+  ls.back()->add_ino(0);
+}
+
 void EOpen::update_segment()
 {
   // ??
index 5a7f361efc72b9b844a7219af0f093b8dd7e4ecc..3154565cd0b4b9ac1cd35c2e0dd0dd5bb17a22bd 100644 (file)
@@ -139,6 +139,8 @@ TYPE(EMetaBlob::remotebit)
 TYPE(EMetaBlob::nullbit)
 TYPE(EMetaBlob::dirlump)
 TYPE(EMetaBlob)
+#include "mds/events/EOpen.h"
+TYPE(EOpen)
 
 #ifdef WITH_RADOSGW