mirror of
https://github.com/ceph/ceph
synced 2025-03-29 23:09:47 +00:00
messages: drop compatibility for pre-octopus versions
no need to be compatible with pre-octopus versions when it comes to in-cluster communications. * MMgrBeacon: octopus encodes MMgrBeacon with version 8 * MMonJoin: octopus encodes MMonJoin with version 2 * MOSDBoot: octopus encodes MOSDBoot with version 7 * MOSDFailure: octopus encodes MOSDFailure with version 4 * MOSDMarkMeDown: octopus encodes MOSDMarkMeDown with version 3 * MOSDPGLog: octopus encodes MOSDPGLog with version 6 * MOSDPGScan: octopus encodes MOSDPGScan with version 2 * MOSDPGInfo: octopus encodes MOSDPGInfo with version 6 * MOSDPGNotify: octopus encodes MOSDPGNotify with version 7 Signed-off-by: Kefu Chai <kchai@redhat.com>
This commit is contained in:
parent
8e407f3ad8
commit
4a13e91261
@ -126,13 +126,8 @@ public:
|
||||
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);
|
||||
@ -158,38 +153,18 @@ public:
|
||||
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);
|
||||
}
|
||||
|
@ -46,15 +46,10 @@ public:
|
||||
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;
|
||||
@ -62,13 +57,8 @@ public:
|
||||
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);
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -68,18 +68,7 @@ public:
|
||||
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);
|
||||
@ -92,20 +81,7 @@ public:
|
||||
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);
|
||||
|
@ -75,15 +75,9 @@ public:
|
||||
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);
|
||||
@ -92,17 +86,7 @@ public:
|
||||
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);
|
||||
|
@ -48,16 +48,7 @@ public:
|
||||
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);
|
||||
@ -68,17 +59,7 @@ public:
|
||||
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);
|
||||
|
@ -22,7 +22,7 @@
|
||||
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;
|
||||
|
||||
@ -67,33 +67,13 @@ public:
|
||||
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:
|
||||
|
@ -22,7 +22,7 @@
|
||||
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
|
||||
@ -101,12 +101,8 @@ public:
|
||||
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);
|
||||
@ -123,9 +119,8 @@ public:
|
||||
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>
|
||||
|
@ -26,7 +26,7 @@
|
||||
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
|
||||
@ -61,16 +61,7 @@ public:
|
||||
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);
|
||||
}
|
||||
|
||||
@ -78,17 +69,6 @@ public:
|
||||
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 {
|
||||
|
@ -75,12 +75,8 @@ public:
|
||||
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);
|
||||
|
Loading…
Reference in New Issue
Block a user