::encode(flags, bl);
::encode(max_osd, bl);
- ::encode(osd_state, bl);
+ {
+ uint32_t n = osd_state.size();
+ ::encode(n, bl);
+ for (auto s : osd_state) {
+ ::encode((uint8_t)s, bl);
+ }
+ }
::encode(osd_weight, bl);
::encode(osd_addrs->client_addr, bl, 0);
::encode(flags, bl);
::encode(max_osd, bl);
- ::encode(osd_state, bl);
+ {
+ uint32_t n = osd_state.size();
+ ::encode(n, bl);
+ for (auto s : osd_state) {
+ ::encode((uint8_t)s, bl);
+ }
+ }
::encode(osd_weight, bl);
::encode(osd_addrs->client_addr, bl, features);
ENCODE_START(8, 7, bl);
{
- uint8_t v = 4;
+ uint8_t v = 5;
if (!HAVE_FEATURE(features, SERVER_LUMINOUS)) {
v = 3;
}
}
::encode(max_osd, bl);
- ::encode(osd_state, bl);
+ if (v >= 5) {
+ ::encode(osd_state, bl);
+ } else {
+ uint32_t n = osd_state.size();
+ ::encode(n, bl);
+ for (auto s : osd_state) {
+ ::encode((uint8_t)s, bl);
+ }
+ }
::encode(osd_weight, bl);
::encode(osd_addrs->client_addr, bl, features);
::decode(flags, p);
::decode(max_osd, p);
- ::decode(osd_state, p);
+ {
+ vector<uint8_t> os;
+ ::decode(os, p);
+ osd_state.resize(os.size());
+ for (unsigned i = 0; i < os.size(); ++i) {
+ osd_state[i] = os[i];
+ }
+ }
::decode(osd_weight, p);
::decode(osd_addrs->client_addr, p);
if (v <= 5) {
* Since we made it past that hurdle, we can use our normal paths.
*/
{
- DECODE_START(4, bl); // client-usable data
+ DECODE_START(5, bl); // client-usable data
// base
::decode(fsid, bl);
::decode(epoch, bl);
::decode(flags, bl);
::decode(max_osd, bl);
- ::decode(osd_state, bl);
+ if (struct_v >= 5) {
+ ::decode(osd_state, bl);
+ } else {
+ vector<uint8_t> os;
+ ::decode(os, bl);
+ osd_state.resize(os.size());
+ for (unsigned i = 0; i < os.size(); ++i) {
+ osd_state[i] = os[i];
+ }
+ }
::decode(osd_weight, bl);
::decode(osd_addrs->client_addr, bl);