From: Greg Farnum Date: Thu, 31 Jan 2013 21:53:10 +0000 (-0800) Subject: mds: EImportFinish event uses modern encoding X-Git-Tag: v0.58~100^2~36 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=a25683f30718120209cabfc683a0ce9928a5de99;p=ceph.git mds: EImportFinish event uses modern encoding Signed-off-by: Greg Farnum --- diff --git a/src/mds/events/EImportFinish.h b/src/mds/events/EImportFinish.h index 85f0eb16cab..7ed25e15bef 100644 --- a/src/mds/events/EImportFinish.h +++ b/src/mds/events/EImportFinish.h @@ -30,9 +30,9 @@ class EImportFinish : public LogEvent { EImportFinish(CDir *dir, bool s) : LogEvent(EVENT_IMPORTFINISH), base(dir->dirfrag()), success(s) { } - EImportFinish() : LogEvent(EVENT_IMPORTFINISH) { } + EImportFinish() : LogEvent(EVENT_IMPORTFINISH), base(), success(false) { } - void print(ostream& out) { + void print(ostream& out) const { out << "EImportFinish " << base; if (success) out << " success"; @@ -40,21 +40,10 @@ class EImportFinish : public LogEvent { out << " failed"; } - void encode(bufferlist& bl) const { - __u8 struct_v = 2; - ::encode(struct_v, bl); - ::encode(stamp, bl); - ::encode(base, bl); - ::encode(success, bl); - } - void decode(bufferlist::iterator &bl) { - __u8 struct_v; - ::decode(struct_v, bl); - if (struct_v >= 2) - ::decode(stamp, bl); - ::decode(base, bl); - ::decode(success, bl); - } + void encode(bufferlist& bl) const; + void decode(bufferlist::iterator &bl); + void dump(Formatter *f) const; + static void generate_test_instances(list& ls); void replay(MDS *mds); diff --git a/src/mds/journal.cc b/src/mds/journal.cc index 23142599f05..2e517f4cf70 100644 --- a/src/mds/journal.cc +++ b/src/mds/journal.cc @@ -1529,6 +1529,36 @@ void EImportFinish::replay(MDS *mds) } } +void EImportFinish::encode(bufferlist& bl) const +{ + ENCODE_START(3, 3, bl); + ::encode(stamp, bl); + ::encode(base, bl); + ::encode(success, bl); + ENCODE_FINISH(bl); +} + +void EImportFinish::decode(bufferlist::iterator &bl) +{ + DECODE_START_LEGACY_COMPAT_LEN(3, 3, 3, bl); + if (struct_v >= 2) + ::decode(stamp, bl); + ::decode(base, bl); + ::decode(success, bl); + DECODE_FINISH(bl); +} + +void EImportFinish::dump(Formatter *f) const +{ + f->dump_stream("base dirfrag") << base; + f->dump_string("success", success ? "true" : "false"); +} +void EImportFinish::generate_test_instances(list& ls) +{ + ls.push_back(new EImportFinish); + ls.push_back(new EImportFinish); + ls.back()->success = true; +} // ------------------------ diff --git a/src/test/encoding/types.h b/src/test/encoding/types.h index a7fe3f6d257..dc90de4d2d3 100644 --- a/src/test/encoding/types.h +++ b/src/test/encoding/types.h @@ -129,6 +129,8 @@ TYPE(ECommitted) TYPE(EExport) #include "mds/events/EFragment.h" TYPE(EFragment) +#include "mds/events/EImportFinish.h" +TYPE(EImportFinish) #ifdef WITH_RADOSGW