using ceph::encode;
paxos_encode();
- if (!HAVE_FEATURE(features, SERVER_NAUTILUS)) {
- header.version = 7;
- header.compat_version = 1;
- encode(server_addrs.legacy_addr(), payload, features);
- } else {
- encode(server_addrs, payload, features);
- }
+ assert(HAVE_FEATURE(features, SERVER_NAUTILUS));
+ encode(server_addrs, payload, features);
encode(gid, payload);
encode(available, payload);
encode(name, payload);
using ceph::decode;
auto p = payload.cbegin();
paxos_decode(p);
+ assert(header.version >= 8);
decode(server_addrs, p); // entity_addr_t for version < 8
decode(gid, p);
decode(available, p);
decode(name, p);
- if (header.version >= 2) {
- decode(fsid, p);
- }
- if (header.version >= 3) {
- std::set<std::string> module_name_list;
- decode(module_name_list, p);
- // Only need to unpack this field if we won't have the full
- // ModuleInfo structures added in v7
- if (header.version < 7) {
- for (const auto &i : module_name_list) {
- MgrMap::ModuleInfo info;
- info.name = i;
- modules.push_back(std::move(info));
- }
- }
- }
- if (header.version >= 4) {
- decode(command_descs, p);
- }
- if (header.version >= 5) {
- decode(metadata, p);
- }
- if (header.version >= 6) {
- decode(services, p);
- }
- if (header.version >= 7) {
- decode(modules, p);
- }
+ decode(fsid, p);
+ std::set<std::string> module_name_list;
+ decode(module_name_list, p);
+ decode(command_descs, p);
+ decode(metadata, p);
+ decode(services, p);
+ decode(modules, p);
if (header.version >= 9) {
decode(mgr_features, p);
}
paxos_encode();
encode(fsid, payload);
encode(name, payload);
- if (HAVE_FEATURE(features, SERVER_NAUTILUS)) {
- header.version = HEAD_VERSION;
- header.compat_version = COMPAT_VERSION;
- encode(addrs, payload, features);
- } else {
- header.version = 1;
- header.compat_version = 1;
- encode(addrs.legacy_addr(), payload, features);
- }
+ assert(HAVE_FEATURE(features, SERVER_NAUTILUS));
+ header.version = HEAD_VERSION;
+ header.compat_version = COMPAT_VERSION;
+ encode(addrs, payload, features);
}
void decode_payload() override {
using ceph::decode;
paxos_decode(p);
decode(fsid, p);
decode(name, p);
- if (header.version == 1) {
- entity_addr_t addr;
- decode(addr, p);
- addrs = entity_addrvec_t(addr);
- } else {
- decode(addrs, p);
- }
+ assert(header.version > 1);
+ decode(addrs, p);
}
};
header.compat_version = COMPAT_VERSION;
using ceph::encode;
paxos_encode();
- if (!HAVE_FEATURE(features, SERVER_NAUTILUS)) {
- header.version = 6;
- header.compat_version = 6;
- encode(sb, payload);
- hb_back_addrs.legacy_addr().encode(payload, features);
- cluster_addrs.legacy_addr().encode(payload, features);
- encode(boot_epoch, payload);
- hb_front_addrs.legacy_addr().encode(payload, features);
- encode(metadata, payload);
- encode(osd_features, payload);
- return;
- }
+ assert(HAVE_FEATURE(features, SERVER_NAUTILUS));
encode(sb, payload);
encode(hb_back_addrs, payload, features);
encode(cluster_addrs, payload, features);
auto p = payload.cbegin();
using ceph::decode;
paxos_decode(p);
- if (header.version < 7) {
- entity_addr_t a;
- decode(sb, p);
- decode(a, p);
- hb_back_addrs = entity_addrvec_t(a);
- decode(a, p);
- cluster_addrs = entity_addrvec_t(a);
- decode(boot_epoch, p);
- decode(a, p);
- hb_front_addrs = entity_addrvec_t(a);
- decode(metadata, p);
- decode(osd_features, p);
- return;
- }
+ assert(header.version >= 7);
decode(sb, p);
decode(hb_back_addrs, p);
decode(cluster_addrs, p);
auto p = payload.cbegin();
paxos_decode(p);
decode(fsid, p);
- if (header.version < 4) {
- entity_inst_t i;
- decode(i, p);
- target_osd = i.name.num();
- target_addrs.v.push_back(i.addr);
- } else {
- decode(target_osd, p);
- decode(target_addrs, p);
- }
+ assert(header.version >= 4);
+ decode(target_osd, p);
+ decode(target_addrs, p);
decode(epoch, p);
decode(flags, p);
decode(failed_for, p);
void encode_payload(uint64_t features) override {
using ceph::encode;
paxos_encode();
- if (!HAVE_FEATURE(features, SERVER_NAUTILUS)) {
- header.version = 3;
- header.compat_version = 3;
- encode(fsid, payload);
- encode(entity_inst_t(entity_name_t::OSD(target_osd),
- target_addrs.legacy_addr()), payload, features);
- encode(epoch, payload);
- encode(flags, payload);
- encode(failed_for, payload);
- return;
- }
+ assert(HAVE_FEATURE(features, SERVER_NAUTILUS));
header.version = HEAD_VERSION;
header.compat_version = COMPAT_VERSION;
encode(fsid, payload);
using ceph::decode;
auto p = payload.cbegin();
paxos_decode(p);
- if (header.version <= 2) {
- decode(fsid, p);
- entity_inst_t i;
- decode(i, p);
- target_osd = i.name.num();
- target_addrs = entity_addrvec_t(i.addr);
- decode(epoch, p);
- decode(request_ack, p);
- return;
- }
+ assert(header.version >= 3);
decode(fsid, p);
decode(target_osd, p);
decode(target_addrs, p);
void encode_payload(uint64_t features) override {
using ceph::encode;
paxos_encode();
- if (!HAVE_FEATURE(features, SERVER_NAUTILUS)) {
- header.version = 2;
- header.compat_version = 2;
- encode(fsid, payload);
- encode(entity_inst_t(entity_name_t::OSD(target_osd),
- target_addrs.legacy_addr()),
- payload, features);
- encode(epoch, payload);
- encode(request_ack, payload);
- return;
- }
+ assert(HAVE_FEATURE(features, SERVER_NAUTILUS));
header.version = HEAD_VERSION;
header.compat_version = COMPAT_VERSION;
encode(fsid, payload);
class MOSDPGInfo final : public Message {
private:
static constexpr int HEAD_VERSION = 6;
- static constexpr int COMPAT_VERSION = 5;
+ static constexpr int COMPAT_VERSION = 6;
epoch_t epoch = 0;
using ceph::encode;
header.version = HEAD_VERSION;
encode(epoch, payload);
- if (!HAVE_FEATURE(features, SERVER_OCTOPUS)) {
- // pretend to be vector<pair<pg_notify_t,PastIntervals>>
- header.version = 5;
- encode((uint32_t)pg_list.size(), payload);
- for (auto& i : pg_list) {
- encode(i, payload); // this embeds a dup (ignored) PastIntervals
- encode(i.past_intervals, payload);
- }
- return;
- }
+ assert(HAVE_FEATURE(features, SERVER_OCTOPUS));
encode(pg_list, payload);
}
void decode_payload() override {
using ceph::decode;
auto p = payload.cbegin();
decode(epoch, p);
- if (header.version == 5) {
- // decode legacy vector<pair<pg_notify_t,PastIntervals>>
- uint32_t num;
- decode(num, p);
- pg_list.resize(num);
- for (unsigned i = 0; i < num; ++i) {
- decode(pg_list[i], p);
- decode(pg_list[i].past_intervals, p);
- }
- return;
- }
decode(pg_list, p);
}
private:
class MOSDPGLog final : public MOSDPeeringOp {
private:
static constexpr int HEAD_VERSION = 6;
- static constexpr int COMPAT_VERSION = 5;
+ static constexpr int COMPAT_VERSION = 6;
epoch_t epoch = 0;
/// query_epoch is the epoch of the query being responded to, or
encode(info, payload);
encode(log, payload);
encode(missing, payload, features);
- if (!HAVE_FEATURE(features, SERVER_NAUTILUS)) {
- // pre-nautilus OSDs do not set last_peering_reset properly
- encode(epoch, payload);
- } else {
- encode(query_epoch, payload);
- }
+ assert(HAVE_FEATURE(features, SERVER_NAUTILUS));
+ encode(query_epoch, payload);
encode(past_intervals, payload);
encode(to, payload);
encode(from, payload);
decode(past_intervals, p);
decode(to, p);
decode(from, p);
- if (header.version >= 6) {
- decode(lease, p);
- }
+ assert(header.version >= 6);
+ decode(lease, p);
}
private:
template<class T, typename... Args>
class MOSDPGNotify final : public Message {
private:
static constexpr int HEAD_VERSION = 7;
- static constexpr int COMPAT_VERSION = 6;
+ static constexpr int COMPAT_VERSION = 7;
epoch_t epoch = 0;
/// query_epoch is the epoch of the query being responded to, or
using ceph::encode;
header.version = HEAD_VERSION;
encode(epoch, payload);
- if (!HAVE_FEATURE(features, SERVER_OCTOPUS)) {
- // pretend to be vector<pair<pg_notify_t,PastIntervals>>
- header.version = 6;
- encode((uint32_t)pg_list.size(), payload);
- for (auto& i : pg_list) {
- encode(i, payload); // this embeds a dup (ignored) PastIntervals
- encode(i.past_intervals, payload);
- }
- return;
- }
+ assert(HAVE_FEATURE(features, SERVER_OCTOPUS));
encode(pg_list, payload);
}
auto p = payload.cbegin();
using ceph::decode;
decode(epoch, p);
- if (header.version == 6) {
- // decode legacy vector<pair<pg_notify_t,PastIntervals>>
- uint32_t num;
- decode(num, p);
- pg_list.resize(num);
- for (unsigned i = 0; i < num; ++i) {
- decode(pg_list[i], p);
- decode(pg_list[i].past_intervals, p);
- }
- return;
- }
decode(pg_list, p);
}
void print(std::ostream& out) const override {
using ceph::encode;
encode(op, payload);
encode(map_epoch, payload);
- if (!HAVE_FEATURE(features, SERVER_NAUTILUS)) {
- // pre-nautilus OSDs do not set last_peering_reset properly
- encode(map_epoch, payload);
- } else {
- encode(query_epoch, payload);
- }
+ assert(HAVE_FEATURE(features, SERVER_NAUTILUS));
+ encode(query_epoch, payload);
encode(pgid.pgid, payload);
encode(begin, payload);
encode(end, payload);