]>
git.proxmox.com Git - ceph.git/blob - ceph/src/messages/MOSDPGCreate2.h
1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2 // vim: ts=8 sw=2 smarttab
6 #include "msg/Message.h"
7 #include "osd/osd_types.h"
10 * PGCreate2 - instruct an OSD to create some pgs
13 class MOSDPGCreate2 final
: public Message
{
15 static constexpr int HEAD_VERSION
= 2;
16 static constexpr int COMPAT_VERSION
= 1;
19 std::map
<spg_t
,std::pair
<epoch_t
,utime_t
>> pgs
;
20 std::map
<spg_t
,std::pair
<pg_history_t
,PastIntervals
>> pg_extra
;
23 : Message
{MSG_OSD_PG_CREATE2
, HEAD_VERSION
, COMPAT_VERSION
} {}
24 MOSDPGCreate2(epoch_t e
)
25 : Message
{MSG_OSD_PG_CREATE2
, HEAD_VERSION
, COMPAT_VERSION
},
28 ~MOSDPGCreate2() final
{}
31 std::string_view
get_type_name() const override
{
34 void print(std::ostream
& out
) const override
{
35 out
<< "pg_create2(e" << epoch
<< " " << pgs
<< ")";
38 void encode_payload(uint64_t features
) override
{
40 encode(epoch
, payload
);
42 encode(pg_extra
, payload
);
44 void decode_payload() override
{
45 auto p
= payload
.cbegin();
49 if (header
.version
>= 2) {
54 template<class T
, typename
... Args
>
55 friend boost::intrusive_ptr
<T
> ceph::make_message(Args
&&... args
);