}
{
- ENCODE_START(1, 1, bl); // extended, osd-only data
+ ENCODE_START(2, 1, bl); // extended, osd-only data
::encode(new_hb_back_up, bl);
::encode(new_up_thru, bl);
::encode(new_last_clean_interval, bl);
::encode(new_uuid, bl);
::encode(new_xinfo, bl);
::encode(new_hb_front_up, bl);
+ ::encode(features, bl); // NOTE: features arg, not the member
ENCODE_FINISH(bl); // osd-only data
}
int struct_v_size = sizeof(struct_v);
bl.advance(-struct_v_size);
decode_classic(bl);
+ encode_features = 0;
return;
}
{
}
{
- DECODE_START(1, bl); // extended, osd-only data
+ DECODE_START(2, bl); // extended, osd-only data
::decode(new_hb_back_up, bl);
::decode(new_up_thru, bl);
::decode(new_last_clean_interval, bl);
::decode(new_uuid, bl);
::decode(new_xinfo, bl);
::decode(new_hb_front_up, bl);
+ if (struct_v >= 2)
+ ::decode(encode_features, bl);
+ else
+ encode_features = 0;
DECODE_FINISH(bl); // osd-only data
}
public:
class Incremental {
public:
+ /// feature bits we were encoded with. the subsequent OSDMap
+ /// encoding should match.
+ uint64_t encode_features;
uuid_d fsid;
epoch_t epoch; // new epoch; we are a diff from epoch-1 to epoch
utime_t modified;
static void generate_test_instances(list<Incremental*>& o);
Incremental(epoch_t e=0) :
+ encode_features(0),
epoch(e), new_pool_max(-1), new_flags(-1), new_max_osd(-1) {
memset(&fsid, 0, sizeof(fsid));
}