void pg_interval_t::encode(bufferlist& bl) const
{
- ENCODE_START(3, 2, bl);
+ ENCODE_START(4, 2, bl);
::encode(first, bl);
::encode(last, bl);
::encode(up, bl);
::encode(acting, bl);
::encode(maybe_went_rw, bl);
::encode(primary, bl);
+ ::encode(up_primary, bl);
ENCODE_FINISH(bl);
}
void pg_interval_t::decode(bufferlist::iterator& bl)
{
- DECODE_START_LEGACY_COMPAT_LEN(3, 2, 2, bl);
+ DECODE_START_LEGACY_COMPAT_LEN(4, 2, 2, bl);
::decode(first, bl);
::decode(last, bl);
::decode(up, bl);
if (acting.size())
primary = acting[0];
}
+ if (struct_v >= 4) {
+ ::decode(up_primary, bl);
+ } else {
+ if (up.size())
+ up_primary = up[0];
+ }
DECODE_FINISH(bl);
}
for (vector<int>::const_iterator p = acting.begin(); p != acting.end(); ++p)
f->dump_int("osd", *p);
f->dump_int("primary", primary);
+ f->dump_int("up_primary", up_primary);
f->close_section();
}
i.acting = old_acting;
i.up = old_up;
i.primary = old_acting_primary;
+ i.up_primary = old_up_primary;
if (!i.acting.empty() && i.primary != -1 &&
i.acting.size() >=
epoch_t first, last;
bool maybe_went_rw;
int primary;
+ int up_primary;
- pg_interval_t() : first(0), last(0), maybe_went_rw(false), primary(-1) {}
+ pg_interval_t()
+ : first(0), last(0),
+ maybe_went_rw(false),
+ primary(-1),
+ up_primary(-1)
+ {}
void encode(bufferlist& bl) const;
void decode(bufferlist::iterator& bl);