From: Greg Farnum Date: Tue, 23 Jun 2009 21:03:34 +0000 (-0700) Subject: mon/msg: PThey mostly hold version_t's now. Unused, though. X-Git-Tag: v0.10~165 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=540ad2998085a36ab87e4e73023db2437b00f1e2;p=ceph.git mon/msg: PThey mostly hold version_t's now. Unused, though. --- diff --git a/src/Makefile.am b/src/Makefile.am index 7ddb77e149db..eb8b0483ccf0 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -580,6 +580,7 @@ noinst_HEADERS = \ messages/MRemoveSnaps.h\ messages/MStatfs.h\ messages/MStatfsReply.h\ + messages/PaxosServiceMessage.h\ mon/ClassMonitor.h\ mon/ClientMap.h\ mon/ClientMonitor.h\ diff --git a/src/messages/MClass.h b/src/messages/MClass.h index d9847a599c27..01e87ad59a2d 100644 --- a/src/messages/MClass.h +++ b/src/messages/MClass.h @@ -24,7 +24,7 @@ enum { CLASS_RESPONSE, }; -class MClass : public Message { +class MClass : public PaxosServiceMessage { public: ceph_fsid_t fsid; deque info; @@ -34,11 +34,13 @@ public: __s32 action; - MClass() : Message(MSG_CLASS) {} + MClass() : PaxosServiceMessage(MSG_CLASS, 0) {} #if 0 - MClass(ceph_fsid_t& f, deque& e) : Message(MSG_CLASS), fsid(f), entries(e), last(0), action(0) { } + MClass(ceph_fsid_t& f, deque& e) : + PaxosServiceMessage(MSG_CLASS, 0), + fsid(f), entries(e), last(0), action(0) {} #endif - MClass(ceph_fsid_t& f, version_t l) : Message(MSG_CLASS), fsid(f), last(l) {} + MClass(ceph_fsid_t& f, version_t l) : PaxosServiceMessage(MSG_CLASS, l), fsid(f), last(l) {} const char *get_type_name() { return "class"; } void print(ostream& out) { @@ -68,6 +70,7 @@ public: } void encode_payload() { + paxos_encode(); ::encode(fsid, payload); ::encode(info, payload); ::encode(impl, payload); @@ -77,6 +80,7 @@ public: } void decode_payload() { bufferlist::iterator p = payload.begin(); + paxos_decode(p); ::decode(fsid, p); ::decode(info, p); ::decode(impl, p); diff --git a/src/messages/MClassAck.h b/src/messages/MClassAck.h index e513a7329b73..2d8df36a18d3 100644 --- a/src/messages/MClassAck.h +++ b/src/messages/MClassAck.h @@ -17,13 +17,13 @@ #include "include/ClassLibrary.h" -class MClassAck : public Message { +class MClassAck : public PaxosServiceMessage { public: ceph_fsid_t fsid; version_t last; - MClassAck() : Message(MSG_CLASS_ACK) {} - MClassAck(ceph_fsid_t& f, version_t l) : Message(MSG_CLASS_ACK), fsid(f), last(l) {} + MClassAck() : PaxosServiceMessage(MSG_CLASS_ACK, 0) {} + MClassAck(ceph_fsid_t& f, version_t l) : PaxosServiceMessage(MSG_CLASS_ACK, l), fsid(f), last(l) {} const char *get_type_name() { return "class_ack"; } void print(ostream& out) { @@ -31,11 +31,13 @@ public: } void encode_payload() { + paxos_encode(); ::encode(fsid, payload); ::encode(last, payload); } void decode_payload() { bufferlist::iterator p = payload.begin(); + paxos_decode(p); ::decode(fsid, p); ::decode(last, p); } diff --git a/src/messages/MGetPoolStats.h b/src/messages/MGetPoolStats.h index a1ccf2fc26f8..5365416b1434 100644 --- a/src/messages/MGetPoolStats.h +++ b/src/messages/MGetPoolStats.h @@ -16,15 +16,17 @@ #ifndef __MGETPOOLSTATS_H #define __MGETPOOLSTATS_H -class MGetPoolStats : public Message { +#include "messages/PaxosServiceMessage.h" + +class MGetPoolStats : public PaxosServiceMessage { public: ceph_fsid_t fsid; tid_t tid; vector pools; - MGetPoolStats() : Message(MSG_GETPOOLSTATS) {} - MGetPoolStats(ceph_fsid_t& f, tid_t t, vector& ls) : - Message(MSG_GETPOOLSTATS), + MGetPoolStats() : PaxosServiceMessage(MSG_GETPOOLSTATS, 0) {} + MGetPoolStats(ceph_fsid_t& f, tid_t t, vector& ls, version_t l) : + PaxosServiceMessage(MSG_GETPOOLSTATS, l), fsid(f), tid(t), pools(ls) { } const char *get_type_name() { return "getpoolstats"; } @@ -33,12 +35,14 @@ public: } void encode_payload() { + paxos_encode(); ::encode(fsid, payload); ::encode(tid, payload); ::encode(pools, payload); } void decode_payload() { bufferlist::iterator p = payload.begin(); + paxos_decode(p); ::decode(fsid, p); ::decode(tid, p); ::decode(pools, p); diff --git a/src/messages/MGetPoolStatsReply.h b/src/messages/MGetPoolStatsReply.h index 0126fd15c134..1dbbbebecdcc 100644 --- a/src/messages/MGetPoolStatsReply.h +++ b/src/messages/MGetPoolStatsReply.h @@ -16,15 +16,15 @@ #ifndef __MGETPOOLSTATSREPLY_H #define __MGETPOOLSTATSREPLY_H -class MGetPoolStatsReply : public Message { +class MGetPoolStatsReply : public PaxosServiceMessage { public: ceph_fsid_t fsid; tid_t tid; map pool_stats; - MGetPoolStatsReply() : Message(MSG_GETPOOLSTATSREPLY) {} - MGetPoolStatsReply(ceph_fsid_t& f, tid_t t) : - Message(MSG_GETPOOLSTATSREPLY), + MGetPoolStatsReply() : PaxosServiceMessage(MSG_GETPOOLSTATSREPLY, 0) {} + MGetPoolStatsReply(ceph_fsid_t& f, tid_t t, version_t v) : + PaxosServiceMessage(MSG_GETPOOLSTATSREPLY, v), fsid(f), tid(t) { } const char *get_type_name() { return "getpoolstats"; } @@ -33,12 +33,14 @@ public: } void encode_payload() { + paxos_encode(); ::encode(fsid, payload); ::encode(tid, payload); ::encode(pool_stats, payload); } void decode_payload() { bufferlist::iterator p = payload.begin(); + paxos_decode(p); ::decode(fsid, p); ::decode(tid, p); ::decode(pool_stats, p); diff --git a/src/messages/MLog.h b/src/messages/MLog.h index de94845b9bf8..5ffe7752ed8a 100644 --- a/src/messages/MLog.h +++ b/src/messages/MLog.h @@ -17,15 +17,15 @@ #include "include/LogEntry.h" -class MLog : public Message { +class MLog : public PaxosServiceMessage { public: ceph_fsid_t fsid; deque entries; version_t last; - MLog() : Message(MSG_LOG) {} - MLog(ceph_fsid_t& f, deque& e) : Message(MSG_LOG), fsid(f), entries(e), last(0) { } - MLog(ceph_fsid_t& f, version_t l) : Message(MSG_LOG), fsid(f), last(l) {} + MLog() : PaxosServiceMessage(MSG_LOG, 0) {} + MLog(ceph_fsid_t& f, deque& e) : PaxosServiceMessage(MSG_LOG, 0), fsid(f), entries(e), last(0) { } + MLog(ceph_fsid_t& f, version_t l) : PaxosServiceMessage(MSG_LOG, l), fsid(f), last(l) {} const char *get_type_name() { return "log"; } void print(ostream& out) { @@ -38,12 +38,14 @@ public: } void encode_payload() { + paxos_encode(); ::encode(fsid, payload); ::encode(entries, payload); ::encode(last, payload); } void decode_payload() { bufferlist::iterator p = payload.begin(); + paxos_decode(p); ::decode(fsid, p); ::decode(entries, p); ::decode(last, p); diff --git a/src/messages/MLogAck.h b/src/messages/MLogAck.h index f4d4286e0728..ae188ff6893a 100644 --- a/src/messages/MLogAck.h +++ b/src/messages/MLogAck.h @@ -16,14 +16,15 @@ #define __MLOGACK_H #include "include/LogEntry.h" +#include "messages/PaxosServiceMessage.h" -class MLogAck : public Message { +class MLogAck : public PaxosServiceMessage { public: ceph_fsid_t fsid; version_t last; - MLogAck() : Message(MSG_LOGACK) {} - MLogAck(ceph_fsid_t& f, version_t l) : Message(MSG_LOGACK), fsid(f), last(l) {} + MLogAck() : PaxosServiceMessage(MSG_LOGACK, 0) {} + MLogAck(ceph_fsid_t& f, version_t l) : PaxosServiceMessage(MSG_LOGACK, l), fsid(f), last(l) {} const char *get_type_name() { return "log_ack"; } void print(ostream& out) { @@ -31,11 +32,13 @@ public: } void encode_payload() { + paxos_encode(); ::encode(fsid, payload); ::encode(last, payload); } void decode_payload() { bufferlist::iterator p = payload.begin(); + paxos_decode(p); ::decode(fsid, p); ::decode(last, p); } diff --git a/src/messages/MMDSBeacon.h b/src/messages/MMDSBeacon.h index ebde2fa8080e..ce86c1ed8d87 100644 --- a/src/messages/MMDSBeacon.h +++ b/src/messages/MMDSBeacon.h @@ -15,13 +15,13 @@ #ifndef __MMDSBEACON_H #define __MMDSBEACON_H -#include "msg/Message.h" +#include "messages/PaxosServiceMessage.h" #include "include/types.h" #include "mds/MDSMap.h" -class MMDSBeacon : public Message { +class MMDSBeacon : public PaxosServiceMessage { ceph_fsid_t fsid; string name; epoch_t last_epoch_seen; // include last mdsmap epoch mds has seen to avoid race with monitor decree @@ -31,9 +31,9 @@ class MMDSBeacon : public Message { string standby_for_name; public: - MMDSBeacon() : Message(MSG_MDS_BEACON) {} + MMDSBeacon() : PaxosServiceMessage(MSG_MDS_BEACON, 0) {} MMDSBeacon(ceph_fsid_t &f, string& n, epoch_t les, int st, version_t se) : - Message(MSG_MDS_BEACON), + PaxosServiceMessage(MSG_MDS_BEACON, se), fsid(f), name(n), last_epoch_seen(les), state(st), seq(se), standby_for_rank(-1) { } @@ -55,6 +55,7 @@ class MMDSBeacon : public Message { } void encode_payload() { + paxos_encode(); ::encode(fsid, payload); ::encode(last_epoch_seen, payload); ::encode(state, payload); @@ -65,6 +66,7 @@ class MMDSBeacon : public Message { } void decode_payload() { bufferlist::iterator p = payload.begin(); + paxos_decode(p); ::decode(fsid, p); ::decode(last_epoch_seen, p); ::decode(state, p); diff --git a/src/messages/MMonCommand.h b/src/messages/MMonCommand.h index 4d7634c5906a..2a2fc9660b94 100644 --- a/src/messages/MMonCommand.h +++ b/src/messages/MMonCommand.h @@ -15,19 +15,19 @@ #ifndef __MMONCOMMAND_H #define __MMONCOMMAND_H -#include "msg/Message.h" +#include "messages/PaxosServiceMessage.h" #include using std::vector; -class MMonCommand : public Message { +class MMonCommand : public PaxosServiceMessage { public: ceph_fsid_t fsid; vector cmd; - MMonCommand() : Message(MSG_MON_COMMAND) {} - MMonCommand(ceph_fsid_t &f) : - Message(MSG_MON_COMMAND), + MMonCommand() : PaxosServiceMessage(MSG_MON_COMMAND, 0) {} + MMonCommand(ceph_fsid_t &f, version_t version) : + PaxosServiceMessage(MSG_MON_COMMAND, version), fsid(f) { } const char *get_type_name() { return "mon_command"; } @@ -41,11 +41,13 @@ class MMonCommand : public Message { } void encode_payload() { + paxos_encode(); ::encode(fsid, payload); ::encode(cmd, payload); } void decode_payload() { bufferlist::iterator p = payload.begin(); + paxos_decode(p); ::decode(fsid, p); ::decode(cmd, p); } diff --git a/src/messages/MMonCommandAck.h b/src/messages/MMonCommandAck.h index cf3f95c84f0e..6c0081133c83 100644 --- a/src/messages/MMonCommandAck.h +++ b/src/messages/MMonCommandAck.h @@ -17,15 +17,15 @@ #include "msg/Message.h" -class MMonCommandAck : public Message { +class MMonCommandAck : public PaxosServiceMessage { public: vector cmd; __s32 r; string rs; - MMonCommandAck() : Message(MSG_MON_COMMAND_ACK) {} - MMonCommandAck(vector& c, int _r, string s) : - Message(MSG_MON_COMMAND_ACK), + MMonCommandAck() : PaxosServiceMessage(MSG_MON_COMMAND_ACK, 0) {} + MMonCommandAck(vector& c, int _r, string s, version_t v) : + PaxosServiceMessage(MSG_MON_COMMAND_ACK, v), cmd(c), r(_r), rs(s) { } const char *get_type_name() { return "mon_command"; } @@ -34,12 +34,14 @@ class MMonCommandAck : public Message { } void encode_payload() { + paxos_encode(); ::encode(r, payload); ::encode(rs, payload); ::encode(cmd, payload); } void decode_payload() { bufferlist::iterator p = payload.begin(); + paxos_decode(p); ::decode(r, p); ::decode(rs, p); ::decode(cmd, p); diff --git a/src/messages/MMonObserve.h b/src/messages/MMonObserve.h index 2cff2e68a12b..2a8fca2b4bb7 100644 --- a/src/messages/MMonObserve.h +++ b/src/messages/MMonObserve.h @@ -20,15 +20,15 @@ #include using std::vector; -class MMonObserve : public Message { +class MMonObserve : public PaxosServiceMessage { public: ceph_fsid_t fsid; uint32_t machine_id; version_t ver; - MMonObserve() : Message(MSG_MON_OBSERVE) {} + MMonObserve() : PaxosServiceMessage(MSG_MON_OBSERVE, 0) {} MMonObserve(ceph_fsid_t &f, int mid, version_t v) : - Message(MSG_MON_OBSERVE), + PaxosServiceMessage(MSG_MON_OBSERVE, v), fsid(f), machine_id(mid), ver(v) { } const char *get_type_name() { return "mon_observe"; } @@ -37,12 +37,14 @@ class MMonObserve : public Message { } void encode_payload() { + paxos_encode(); ::encode(fsid, payload); ::encode(machine_id, payload); ::encode(ver, payload); } void decode_payload() { bufferlist::iterator p = payload.begin(); + paxos_decode(p); ::decode(fsid, p); ::decode(machine_id, p); ::decode(ver, p); diff --git a/src/messages/MMonObserveNotify.h b/src/messages/MMonObserveNotify.h index df732b06fce1..1300b85fe879 100644 --- a/src/messages/MMonObserveNotify.h +++ b/src/messages/MMonObserveNotify.h @@ -17,7 +17,7 @@ #include "msg/Message.h" -class MMonObserveNotify : public Message { +class MMonObserveNotify : public PaxosServiceMessage { public: ceph_fsid_t fsid; int32_t machine_id; @@ -25,9 +25,9 @@ class MMonObserveNotify : public Message { version_t ver; bool is_latest; - MMonObserveNotify() : Message(MSG_MON_OBSERVE_NOTIFY) {} + MMonObserveNotify() : PaxosServiceMessage(MSG_MON_OBSERVE_NOTIFY, 0) {} MMonObserveNotify(ceph_fsid_t& f, int id, bufferlist& b, version_t v, bool l) : - Message(MSG_MON_OBSERVE_NOTIFY), fsid(f), machine_id(id), bl(b), ver(v), is_latest(l) {} + PaxosServiceMessage(MSG_MON_OBSERVE_NOTIFY, v), fsid(f), machine_id(id), bl(b), ver(v), is_latest(l) {} const char *get_type_name() { return "mon_observe_notify"; } @@ -39,6 +39,7 @@ class MMonObserveNotify : public Message { } void encode_payload() { + paxos_encode(); ::encode(fsid, payload); ::encode(machine_id, payload); ::encode(bl, payload); @@ -47,6 +48,7 @@ class MMonObserveNotify : public Message { } void decode_payload() { bufferlist::iterator p = payload.begin(); + paxos_decode(p); ::decode(fsid, p); ::decode(machine_id, p); ::decode(bl, p); diff --git a/src/messages/MOSDBoot.h b/src/messages/MOSDBoot.h index 90d30bfe6e73..747a78f53c60 100644 --- a/src/messages/MOSDBoot.h +++ b/src/messages/MOSDBoot.h @@ -20,14 +20,13 @@ #include "include/types.h" #include "osd/osd_types.h" -class MOSDBoot : public Message { +class MOSDBoot : public PaxosServiceMessage { public: OSDSuperblock sb; - MOSDBoot() {} - MOSDBoot(OSDSuperblock& s) : - Message(MSG_OSD_BOOT), - sb(s) { + MOSDBoot() : PaxosServiceMessage(){} + MOSDBoot(OSDSuperblock& s, version_t v) : + PaxosServiceMessage(MSG_OSD_BOOT, v), sb(s) { } const char *get_type_name() { return "osd_boot"; } diff --git a/src/messages/MPoolSnap.h b/src/messages/MPoolSnap.h index 33aa7799671f..7bb571596e85 100644 --- a/src/messages/MPoolSnap.h +++ b/src/messages/MPoolSnap.h @@ -15,8 +15,10 @@ #ifndef __MPOOLSNAP_H #define __MPOOLSNAP_H +#include "messages/PaxosServiceMessage.h" -class MPoolSnap : public Message { + +class MPoolSnap : public PaxosServiceMessage { public: ceph_fsid_t fsid; tid_t tid; @@ -24,9 +26,9 @@ public: string name; bool create; - MPoolSnap() : Message(MSG_POOLSNAP) {} - MPoolSnap( ceph_fsid_t& f, tid_t t, int p, string& n, bool c) : - Message(MSG_POOLSNAP), fsid(f), tid(t), pool(p), name(n), create(c) {} + MPoolSnap() : PaxosServiceMessage(MSG_POOLSNAP, 0) {} + MPoolSnap( ceph_fsid_t& f, tid_t t, int p, string& n, bool c, version_t v) : + PaxosServiceMessage(MSG_POOLSNAP, v), fsid(f), tid(t), pool(p), name(n), create(c) {} const char *get_type_name() { return "poolsnap"; } void print(ostream& out) { @@ -34,6 +36,7 @@ public: } void encode_payload() { + paxos_encode(); ::encode(fsid, payload); ::encode(tid, payload); ::encode(pool, payload); @@ -42,6 +45,7 @@ public: } void decode_payload() { bufferlist::iterator p = payload.begin(); + paxos_decode(p); ::decode(fsid, p); ::decode(tid, p); ::decode(pool, p); diff --git a/src/messages/MPoolSnapReply.h b/src/messages/MPoolSnapReply.h index e4b6360afc76..42422f7b01ca 100644 --- a/src/messages/MPoolSnapReply.h +++ b/src/messages/MPoolSnapReply.h @@ -16,7 +16,7 @@ #define __MPOOLSNAPREPLY_H -class MPoolSnapReply : public Message { +class MPoolSnapReply : public PaxosServiceMessage { public: ceph_fsid_t fsid; tid_t tid; @@ -24,9 +24,9 @@ public: epoch_t epoch; - MPoolSnapReply() : Message(MSG_POOLSNAPREPLY) {} - MPoolSnapReply( ceph_fsid_t& f, tid_t t, int rc, int e) : - Message(MSG_POOLSNAPREPLY), fsid(f), tid(t), replyCode(rc), epoch(e) {} + MPoolSnapReply() : PaxosServiceMessage(MSG_POOLSNAPREPLY, 0) {} + MPoolSnapReply( ceph_fsid_t& f, tid_t t, int rc, int e, version_t v) : + PaxosServiceMessage(MSG_POOLSNAPREPLY, v), fsid(f), tid(t), replyCode(rc), epoch(e) {} const char *get_type_name() { return "poolsnapreply"; } @@ -35,6 +35,7 @@ public: } void encode_payload() { + paxos_encode(); ::encode(fsid, payload); ::encode(tid, payload); ::encode(replyCode, payload); @@ -42,6 +43,7 @@ public: } void decode_payload() { bufferlist::iterator p = payload.begin(); + paxos_decode(p); ::decode(fsid, p); ::decode(tid, p); ::decode(replyCode, p); diff --git a/src/mon/ClassMonitor.cc b/src/mon/ClassMonitor.cc index 2e23d2439890..ee6108394b59 100644 --- a/src/mon/ClassMonitor.cc +++ b/src/mon/ClassMonitor.cc @@ -179,7 +179,7 @@ void ClassMonitor::encode_pending(bufferlist &bl) p->second.encode(bl); } -bool ClassMonitor::preprocess_query(Message *m) +bool ClassMonitor::preprocess_query(PaxosServiceMessage *m) { dout(10) << "preprocess_query " << *m << " from " << m->get_orig_source_inst() << dendl; switch (m->get_type()) { @@ -196,7 +196,7 @@ bool ClassMonitor::preprocess_query(Message *m) } } -bool ClassMonitor::prepare_update(Message *m) +bool ClassMonitor::prepare_update(PaxosServiceMessage *m) { dout(10) << "prepare_update " << *m << " from " << m->get_orig_source_inst() << dendl; switch (m->get_type()) { diff --git a/src/mon/ClassMonitor.h b/src/mon/ClassMonitor.h index c615ed2b09d7..fcb6ce365271 100644 --- a/src/mon/ClassMonitor.h +++ b/src/mon/ClassMonitor.h @@ -42,8 +42,8 @@ private: void committed(); - bool preprocess_query(Message *m); // true if processed. - bool prepare_update(Message *m); + bool preprocess_query(PaxosServiceMessage *m); // true if processed. + bool prepare_update(PaxosServiceMessage *m); bool preprocess_class(MClass *m); bool prepare_class(MClass *m); diff --git a/src/mon/ClientMonitor.cc b/src/mon/ClientMonitor.cc index ad63f74eb3b4..d6c0b58b911d 100644 --- a/src/mon/ClientMonitor.cc +++ b/src/mon/ClientMonitor.cc @@ -157,7 +157,7 @@ bool ClientMonitor::check_mount(MClientMount *m) return false; } -bool ClientMonitor::preprocess_query(Message *m) +bool ClientMonitor::preprocess_query(PaxosServiceMessage *m) { dout(10) << "preprocess_query " << *m << " from " << m->get_orig_source_inst() << dendl; @@ -193,7 +193,7 @@ bool ClientMonitor::preprocess_query(Message *m) } } -bool ClientMonitor::prepare_update(Message *m) +bool ClientMonitor::prepare_update(PaxosServiceMessage *m) { stringstream ss; dout(10) << "prepare_update " << *m << " from " << m->get_orig_source_inst() << dendl; diff --git a/src/mon/ClientMonitor.h b/src/mon/ClientMonitor.h index 412e68a8e92f..dbfa499bda79 100644 --- a/src/mon/ClientMonitor.h +++ b/src/mon/ClientMonitor.h @@ -52,7 +52,7 @@ public: if (r >= 0) cmon->_mounted(client, m); else - cmon->dispatch((Message*)m); + cmon->dispatch((PaxosServiceMessage*)m); } }; @@ -66,11 +66,10 @@ public: if (r >= 0) cmon->_unmounted(m); else - cmon->dispatch((Message*)m); + cmon->dispatch((PaxosServiceMessage*)m); } }; - ClientMap client_map; private: @@ -88,8 +87,8 @@ private: void _mounted(int c, MClientMount *m); void _unmounted(MClientUnmount *m); - bool preprocess_query(Message *m); // true if processed. - bool prepare_update(Message *m); + bool preprocess_query(PaxosServiceMessage *m); // true if processed. + bool prepare_update(PaxosServiceMessage *m); bool preprocess_command(MMonCommand *m); // true if processed. bool prepare_command(MMonCommand *m); diff --git a/src/mon/LogMonitor.cc b/src/mon/LogMonitor.cc index 08a23d012071..6aa1985e9f1b 100644 --- a/src/mon/LogMonitor.cc +++ b/src/mon/LogMonitor.cc @@ -186,7 +186,7 @@ void LogMonitor::encode_pending(bufferlist &bl) p->second.encode(bl); } -bool LogMonitor::preprocess_query(Message *m) +bool LogMonitor::preprocess_query(PaxosServiceMessage *m) { dout(10) << "preprocess_query " << *m << " from " << m->get_orig_source_inst() << dendl; switch (m->get_type()) { @@ -203,7 +203,7 @@ bool LogMonitor::preprocess_query(Message *m) } } -bool LogMonitor::prepare_update(Message *m) +bool LogMonitor::prepare_update(PaxosServiceMessage *m) { dout(10) << "prepare_update " << *m << " from " << m->get_orig_source_inst() << dendl; switch (m->get_type()) { diff --git a/src/mon/LogMonitor.h b/src/mon/LogMonitor.h index b772f215e03d..6c14b882c100 100644 --- a/src/mon/LogMonitor.h +++ b/src/mon/LogMonitor.h @@ -40,8 +40,8 @@ private: void committed(); - bool preprocess_query(Message *m); // true if processed. - bool prepare_update(Message *m); + bool preprocess_query(PaxosServiceMessage *m); // true if processed. + bool prepare_update(PaxosServiceMessage *m); bool preprocess_log(MLog *m); bool prepare_log(MLog *m); diff --git a/src/mon/MDSMonitor.cc b/src/mon/MDSMonitor.cc index a6663d24dc4c..51e81066670f 100644 --- a/src/mon/MDSMonitor.cc +++ b/src/mon/MDSMonitor.cc @@ -125,7 +125,7 @@ void MDSMonitor::encode_pending(bufferlist &bl) } -bool MDSMonitor::preprocess_query(Message *m) +bool MDSMonitor::preprocess_query(PaxosServiceMessage *m) { dout(10) << "preprocess_query " << *m << " from " << m->get_orig_source_inst() << dendl; @@ -249,7 +249,7 @@ bool MDSMonitor::preprocess_beacon(MMDSBeacon *m) } -bool MDSMonitor::prepare_update(Message *m) +bool MDSMonitor::prepare_update(PaxosServiceMessage *m) { dout(7) << "prepare_update " << *m << dendl; diff --git a/src/mon/MDSMonitor.h b/src/mon/MDSMonitor.h index d8e1d65c4ea4..148947596512 100644 --- a/src/mon/MDSMonitor.h +++ b/src/mon/MDSMonitor.h @@ -54,7 +54,7 @@ class MDSMonitor : public PaxosService { if (r >= 0) mm->_updated(m); // success else - mm->dispatch((Message*)m); // try again + mm->dispatch((PaxosServiceMessage*)m); // try again } }; @@ -67,8 +67,8 @@ class MDSMonitor : public PaxosService { void _updated(MMDSBeacon *m); - bool preprocess_query(Message *m); // true if processed. - bool prepare_update(Message *m); + bool preprocess_query(PaxosServiceMessage *m); // true if processed. + bool prepare_update(PaxosServiceMessage *m); bool should_propose(double& delay); void committed(); diff --git a/src/mon/Monitor.cc b/src/mon/Monitor.cc index e6eb6cdb971e..187f212f27c6 100644 --- a/src/mon/Monitor.cc +++ b/src/mon/Monitor.cc @@ -20,9 +20,9 @@ #include "MonitorStore.h" -#include "msg/Message.h" #include "msg/Messenger.h" +#include "messages/PaxosServiceMessage.h" #include "messages/MMonMap.h" #include "messages/MMonGetMap.h" #include "messages/MGenericMessage.h" @@ -304,7 +304,7 @@ void Monitor::reply_command(MMonCommand *m, int rc, const string &rs) void Monitor::reply_command(MMonCommand *m, int rc, const string &rs, bufferlist& rdata) { - MMonCommandAck *reply = new MMonCommandAck(m->cmd, rc, rs); + MMonCommandAck *reply = new MMonCommandAck(m->cmd, rc, rs, VERSION_T); reply->set_data(rdata); messenger->send_message(reply, m->get_orig_source_inst()); delete m; @@ -325,7 +325,7 @@ void Monitor::handle_observe(MMonObserve *m) void Monitor::inject_args(const entity_inst_t& inst, vector& args) { dout(10) << "inject_args " << inst << " " << args << dendl; - MMonCommand *c = new MMonCommand(monmap->fsid); + MMonCommand *c = new MMonCommand(monmap->fsid, VERSION_T); c->cmd = args; messenger->send_message(c, inst); } diff --git a/src/mon/OSDMonitor.cc b/src/mon/OSDMonitor.cc index 6beac3c1a010..5ffb331c57b2 100644 --- a/src/mon/OSDMonitor.cc +++ b/src/mon/OSDMonitor.cc @@ -248,7 +248,7 @@ void OSDMonitor::committed() // ------------- -bool OSDMonitor::preprocess_query(Message *m) +bool OSDMonitor::preprocess_query(PaxosServiceMessage *m) { dout(10) << "preprocess_query " << *m << " from " << m->get_orig_source_inst() << dendl; @@ -286,7 +286,7 @@ bool OSDMonitor::preprocess_query(Message *m) } } -bool OSDMonitor::prepare_update(Message *m) +bool OSDMonitor::prepare_update(PaxosServiceMessage *m) { dout(7) << "prepare_update " << *m << " from " << m->get_orig_source_inst() << dendl; @@ -1317,7 +1317,7 @@ bool OSDMonitor::prepare_pool_snap ( MPoolSnap *m) void OSDMonitor::_pool_snap(MPoolSnap *m, int replyCode, epoch_t epoch) { - MPoolSnapReply *reply = new MPoolSnapReply(m->fsid, m->tid, replyCode, epoch); + MPoolSnapReply *reply = new MPoolSnapReply(m->fsid, m->tid, replyCode, epoch, VERSION_T); mon->messenger->send_message(reply, m->get_orig_source_inst()); delete m; } diff --git a/src/mon/OSDMonitor.h b/src/mon/OSDMonitor.h index d67127350536..cc29e68f9782 100644 --- a/src/mon/OSDMonitor.h +++ b/src/mon/OSDMonitor.h @@ -57,9 +57,9 @@ private: void committed(); - void handle_query(Message *m); - bool preprocess_query(Message *m); // true if processed. - bool prepare_update(Message *m); + void handle_query(PaxosServiceMessage *m); + bool preprocess_query(PaxosServiceMessage *m); // true if processed. + bool prepare_update(PaxosServiceMessage *m); bool should_propose(double &delay); // ... @@ -97,9 +97,10 @@ private: if (r >= 0) cmon->_booted(m, true); else - cmon->dispatch((Message*)m); + cmon->dispatch((PaxosServiceMessage*)m); } }; + struct C_Alive : public Context { OSDMonitor *osdmon; MOSDAlive *m; @@ -117,7 +118,7 @@ private: if (r >= 0) cmon->_reported_failure(m); else - cmon->dispatch((Message*)m); + cmon->dispatch((PaxosServiceMessage*)m); } }; struct C_Snap : public Context { diff --git a/src/mon/PGMonitor.cc b/src/mon/PGMonitor.cc index 9471d1f9c9c6..e439e88c2143 100644 --- a/src/mon/PGMonitor.cc +++ b/src/mon/PGMonitor.cc @@ -159,7 +159,7 @@ void PGMonitor::encode_pending(bufferlist &bl) pending_inc.encode(bl); } -bool PGMonitor::preprocess_query(Message *m) +bool PGMonitor::preprocess_query(PaxosServiceMessage *m) { dout(10) << "preprocess_query " << *m << " from " << m->get_orig_source_inst() << dendl; switch (m->get_type()) { @@ -183,7 +183,7 @@ bool PGMonitor::preprocess_query(Message *m) } } -bool PGMonitor::prepare_update(Message *m) +bool PGMonitor::prepare_update(PaxosServiceMessage *m) { dout(10) << "prepare_update " << *m << " from " << m->get_orig_source_inst() << dendl; switch (m->get_type()) { @@ -241,7 +241,7 @@ bool PGMonitor::preprocess_getpoolstats(MGetPoolStats *m) goto out; } - reply = new MGetPoolStatsReply(m->fsid, m->tid); + reply = new MGetPoolStatsReply(m->fsid, m->tid, VERSION_T); for (vector::iterator p = m->pools.begin(); p != m->pools.end(); diff --git a/src/mon/PGMonitor.h b/src/mon/PGMonitor.h index a9e2d79278c1..ec7959c694ce 100644 --- a/src/mon/PGMonitor.h +++ b/src/mon/PGMonitor.h @@ -50,8 +50,8 @@ private: void committed(); - bool preprocess_query(Message *m); // true if processed. - bool prepare_update(Message *m); + bool preprocess_query(PaxosServiceMessage *m); // true if processed. + bool prepare_update(PaxosServiceMessage *m); bool preprocess_pg_stats(MPGStats *stats); bool prepare_pg_stats(MPGStats *stats); diff --git a/src/mon/Paxos.cc b/src/mon/Paxos.cc index f0188a8056d7..a9afa3c8c615 100644 --- a/src/mon/Paxos.cc +++ b/src/mon/Paxos.cc @@ -762,7 +762,7 @@ void Paxos::election_starting() } -void Paxos::dispatch(Message *m) +void Paxos::dispatch(PaxosServiceMessage *m) { // election in progress? if (mon->is_starting()) { diff --git a/src/mon/Paxos.h b/src/mon/Paxos.h index bb460e462fad..4dfab5f892e6 100644 --- a/src/mon/Paxos.h +++ b/src/mon/Paxos.h @@ -53,7 +53,7 @@ e 12v #include "include/types.h" #include "mon_types.h" #include "include/buffer.h" -#include "msg/Message.h" +#include "messages/PaxosServiceMessage.h" #include "msg/msg_types.h" #include "include/Context.h" @@ -240,7 +240,7 @@ public: return machine_name; } - void dispatch(Message *m); + void dispatch(PaxosServiceMessage *m); void init(); diff --git a/src/mon/PaxosService.cc b/src/mon/PaxosService.cc index 5569914d1e61..5a15fc5a6f87 100644 --- a/src/mon/PaxosService.cc +++ b/src/mon/PaxosService.cc @@ -36,7 +36,7 @@ const char *PaxosService::get_machine_name() } -bool PaxosService::dispatch_impl(Message *m) +bool PaxosService::dispatch(PaxosServiceMessage *m) { dout(10) << "dispatch " << *m << " from " << m->get_orig_source_inst() << dendl; diff --git a/src/mon/PaxosService.h b/src/mon/PaxosService.h index 07764c37634c..68178e561b45 100644 --- a/src/mon/PaxosService.h +++ b/src/mon/PaxosService.h @@ -15,13 +15,13 @@ #ifndef __PAXOSSERVICE_H #define __PAXOSSERVICE_H -#include "msg/Dispatcher.h" +#include "messages/PaxosServiceMessage.h" #include "include/Context.h" class Monitor; class Paxos; -class PaxosService : public Dispatcher { +class PaxosService { public: Monitor *mon; Paxos *paxos; @@ -29,11 +29,11 @@ public: protected: class C_RetryMessage : public Context { PaxosService *svc; - Message *m; + PaxosServiceMessage *m; public: - C_RetryMessage(PaxosService *s, Message *m_) : svc(s), m(m_) {} + C_RetryMessage(PaxosService *s, PaxosServiceMessage *m_) : svc(s), m(m_) {} void finish(int r) { - svc->dispatch(m); + svc->dispatch(m);//FIX_ME } }; class C_Active : public Context { @@ -71,7 +71,6 @@ protected: private: Context *proposal_timer; bool have_pending; - bool dispatch_impl(Message *m); public: PaxosService(Monitor *mn, Paxos *p) : mon(mn), paxos(p), @@ -92,6 +91,7 @@ private: public: // i implement and you use void propose_pending(); // propose current pending as new paxos state + bool dispatch(PaxosServiceMessage *m); // you implement virtual void create_initial(bufferlist& bl) = 0; @@ -100,14 +100,14 @@ public: virtual void encode_pending(bufferlist& bl) = 0; // [leader] finish and encode pending for next paxos state virtual void discard_pending() { } // [leader] discard pending - virtual bool preprocess_query(Message *m) = 0; // true if processed (e.g., read-only) - virtual bool prepare_update(Message *m) = 0; + virtual bool preprocess_query(PaxosServiceMessage *m) = 0; // true if processed (e.g., read-only) + virtual bool prepare_update(PaxosServiceMessage *m) = 0; virtual bool should_propose(double &delay); virtual void committed() = 0; // [leader] called after a proposed value commits virtual void tick() {} - + }; #endif diff --git a/src/msg/Message.cc b/src/msg/Message.cc index 40512fde3ca5..2416e895d6ad 100644 --- a/src/msg/Message.cc +++ b/src/msg/Message.cc @@ -22,6 +22,7 @@ using namespace std; #include "messages/MPoolSnap.h" #include "messages/MPoolSnapReply.h" +#include "messages/PaxosServiceMessage.h" #include "messages/MMonCommand.h" #include "messages/MMonCommandAck.h" #include "messages/MMonPaxos.h" diff --git a/src/msg/Message.h b/src/msg/Message.h index ade923ef06df..36363f55d756 100644 --- a/src/msg/Message.h +++ b/src/msg/Message.h @@ -38,6 +38,8 @@ #define MSG_POOLSNAP 49 #define MSG_POOLSNAPREPLY 48 +#define MSG_PAXOS 40 + // osd internal #define MSG_OSD_PING 70 #define MSG_OSD_BOOT 71 diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index 0d2a4264440f..c792a97adc48 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -408,14 +408,14 @@ void ReplicatedPG::do_pg_op(MOSDOp *op) continue; } else { - for (vector::iterator i = oi.snaps.begin(); i != oi.snaps.end(); ++i) - if (*i == snapid) { - exists = true; - break; - } - dout(10) << *iter << " has " << oi.snaps << " .. exists=" << exists << dendl; - if (!exists) - continue; + for (vector::iterator i = oi.snaps.begin(); i != oi.snaps.end(); ++i) + if (*i == snapid) { + exists = true; + break; + } + dout(10) << *iter << " has " << oi.snaps << " .. exists=" << exists << dendl; + if (!exists) + continue; } } response.entries.push_back(iter->oid); diff --git a/src/osdc/Objecter.cc b/src/osdc/Objecter.cc index 367f1b3b8b23..4c49350428aa 100644 --- a/src/osdc/Objecter.cc +++ b/src/osdc/Objecter.cc @@ -689,7 +689,7 @@ void Objecter::delete_pool_snap(int *reply, int pool, string& snapName, Context void Objecter::pool_snap_submit(SnapOp *op) { dout(10) << "pool_snap_submit " << op->tid << dendl; - MPoolSnap *m = new MPoolSnap(monmap->fsid, op->tid, op->pool, op->name, op->create); + MPoolSnap *m = new MPoolSnap(monmap->fsid, op->tid, op->pool, op->name, op->create, VERSION_T); int mon = monmap->pick_mon(); messenger->send_message(m, monmap->get_inst(mon)); op->last_submit = g_clock.now(); @@ -741,7 +741,7 @@ void Objecter::get_pool_stats(vector& pools, map *re void Objecter::poolstat_submit(PoolStatOp *op) { dout(10) << "poolstat_submit " << op->tid << dendl; - MGetPoolStats *m = new MGetPoolStats(monmap->fsid, op->tid, op->pools); + MGetPoolStats *m = new MGetPoolStats(monmap->fsid, op->tid, op->pools, VERSION_T); int mon = monmap->pick_mon(); messenger->send_message(m, monmap->get_inst(mon)); op->last_submit = g_clock.now();