From a1ed7418addc646f45d8bdddd6b15979f6d7c358 Mon Sep 17 00:00:00 2001 From: Greg Farnum Date: Fri, 18 Jan 2013 12:56:54 -0800 Subject: [PATCH] mds: EOpen event now uses modern encoding Signed-off-by: Greg Farnum --- src/mds/events/EOpen.h | 19 ++++--------------- src/mds/journal.cc | 37 +++++++++++++++++++++++++++++++++++++ src/test/encoding/types.h | 2 ++ 3 files changed, 43 insertions(+), 15 deletions(-) diff --git a/src/mds/events/EOpen.h b/src/mds/events/EOpen.h index 1919b0738277d..3ec677c14f7fc 100644 --- a/src/mds/events/EOpen.h +++ b/src/mds/events/EOpen.h @@ -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& ls); void update_segment(); void replay(MDS *mds); diff --git a/src/mds/journal.cc b/src/mds/journal.cc index 9c4e2e244a484..8b2298fac6cb5 100644 --- a/src/mds/journal.cc +++ b/src/mds/journal.cc @@ -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::const_iterator i = inos.begin(); + i != inos.end(); ++i) { + f->dump_int("ino", *i); + } + f->close_section(); // inos +} + +void EOpen::generate_test_instances(list& ls) +{ + ls.push_back(new EOpen()); + ls.push_back(new EOpen()); + ls.back()->add_ino(0); +} + void EOpen::update_segment() { // ?? diff --git a/src/test/encoding/types.h b/src/test/encoding/types.h index 5a7f361efc72b..3154565cd0b4b 100644 --- a/src/test/encoding/types.h +++ b/src/test/encoding/types.h @@ -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 -- 2.39.5