class MOSDBoot : public PaxosServiceMessage {
- static const int HEAD_VERSION = 5;
+ static const int HEAD_VERSION = 6;
static const int COMPAT_VERSION = 2;
public:
entity_addr_t cluster_addr;
epoch_t boot_epoch; // last epoch this daemon was added to the map (if any)
map<string,string> metadata; ///< misc metadata about this osd
+ uint64_t osd_features;
MOSDBoot()
: PaxosServiceMessage(MSG_OSD_BOOT, 0, HEAD_VERSION, COMPAT_VERSION),
- boot_epoch(0)
+ boot_epoch(0), osd_features(0)
{ }
MOSDBoot(OSDSuperblock& s, epoch_t be,
const entity_addr_t& hb_back_addr_ref,
const entity_addr_t& hb_front_addr_ref,
- const entity_addr_t& cluster_addr_ref)
+ const entity_addr_t& cluster_addr_ref,
+ uint64_t feat)
: PaxosServiceMessage(MSG_OSD_BOOT, s.current_epoch, HEAD_VERSION, COMPAT_VERSION),
sb(s),
hb_back_addr(hb_back_addr_ref),
hb_front_addr(hb_front_addr_ref),
cluster_addr(cluster_addr_ref),
- boot_epoch(be)
+ boot_epoch(be),
+ osd_features(feat)
{ }
private:
public:
const char *get_type_name() const { return "osd_boot"; }
void print(ostream& out) const {
- out << "osd_boot(osd." << sb.whoami << " booted " << boot_epoch << " v" << version << ")";
+ out << "osd_boot(osd." << sb.whoami << " booted " << boot_epoch
+ << " features " << osd_features
+ << " v" << version << ")";
}
void encode_payload(uint64_t features) {
::encode(boot_epoch, payload);
::encode(hb_front_addr, payload);
::encode(metadata, payload);
+ ::encode(osd_features, payload);
}
void decode_payload() {
bufferlist::iterator p = payload.begin();
::decode(hb_front_addr, p);
if (header.version >= 5)
::decode(metadata, p);
+ if (header.version >= 6)
+ ::decode(osd_features, p);
+ else
+ osd_features = 0;
}
};
dout(10) << " assuming hb_front_addr ip matches client_addr" << dendl;
}
- MOSDBoot *mboot = new MOSDBoot(superblock, boot_epoch, hb_back_addr, hb_front_addr, cluster_addr);
+ MOSDBoot *mboot = new MOSDBoot(superblock, boot_epoch,
+ hb_back_addr, hb_front_addr, cluster_addr,
+ CEPH_FEATURES_ALL);
dout(10) << " client_addr " << client_messenger->get_myaddr()
<< ", cluster_addr " << cluster_addr
<< ", hb_back_addr " << hb_back_addr