1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2 // vim: ts=8 sw=2 smarttab
6 class MOSDPGReadyToMerge
: public PaxosServiceMessage
{
9 eversion_t source_version
, target_version
;
10 epoch_t last_epoch_started
= 0;
11 epoch_t last_epoch_clean
= 0;
15 : PaxosServiceMessage
{MSG_OSD_PG_READY_TO_MERGE
, 0}
17 MOSDPGReadyToMerge(pg_t p
, eversion_t sv
, eversion_t tv
,
18 epoch_t les
, epoch_t lec
, bool r
, epoch_t v
)
19 : PaxosServiceMessage
{MSG_OSD_PG_READY_TO_MERGE
, v
},
23 last_epoch_started(les
),
24 last_epoch_clean(lec
),
27 void encode_payload(uint64_t features
) override
{
30 encode(pgid
, payload
);
31 encode(source_version
, payload
);
32 encode(target_version
, payload
);
33 encode(last_epoch_started
, payload
);
34 encode(last_epoch_clean
, payload
);
35 encode(ready
, payload
);
37 void decode_payload() override
{
38 bufferlist::const_iterator p
= payload
.begin();
41 decode(source_version
, p
);
42 decode(target_version
, p
);
43 decode(last_epoch_started
, p
);
44 decode(last_epoch_clean
, p
);
47 std::string_view
get_type_name() const override
{ return "osd_pg_ready_to_merge"; }
48 void print(ostream
&out
) const {
49 out
<< get_type_name()
51 << " sv " << source_version
52 << " tv " << target_version
53 << " les/c " << last_epoch_started
<< "/" << last_epoch_clean
54 << (ready
? " ready" : " NOT READY")
55 << " v" << version
<< ")";
58 template<class T
, typename
... Args
>
59 friend boost::intrusive_ptr
<T
> ceph::make_message(Args
&&... args
);