beacon->set_standby_for_rank(standby_for_rank);
beacon->set_standby_for_name(standby_for_name);
+ // include _my_ feature set
+ beacon->set_compat(mdsmap_compat);
+
monc->send_mon_message(beacon);
// schedule next sender
__s32 standby_for_rank;
string standby_for_name;
+ CompatSet compat;
+
public:
MMDSBeacon() : PaxosServiceMessage(MSG_MDS_BEACON, 0) {}
MMDSBeacon(const ceph_fsid_t &f, uint64_t g, string& n, epoch_t les, int st, version_t se) :
int get_standby_for_rank() { return standby_for_rank; }
const string& get_standby_for_name() { return standby_for_name; }
+ CompatSet& get_compat() { return compat; }
+ void set_compat(CompatSet& c) { compat = c; }
+
void set_standby_for_rank(int r) { standby_for_rank = r; }
void set_standby_for_name(string& n) { standby_for_name = n; }
}
void encode_payload() {
+ header.version = 2;
paxos_encode();
::encode(fsid, payload);
::encode(global_id, payload);
::encode(name, payload);
::encode(standby_for_rank, payload);
::encode(standby_for_name, payload);
+ ::encode(compat, payload);
}
void decode_payload() {
bufferlist::iterator p = payload.begin();
::decode(name, p);
::decode(standby_for_rank, p);
::decode(standby_for_name, p);
+ if (header.version >= 2)
+ ::decode(compat, p);
}
};