1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2 // vim: ts=8 sw=2 smarttab
4 #ifndef CEPH_MOSDPGRECOVERYDELETE_H
5 #define CEPH_MOSDPGRECOVERYDELETE_H
7 #include "MOSDFastDispatchOp.h"
10 * instruct non-primary to remove some objects during recovery
13 struct MOSDPGRecoveryDelete
: public MOSDFastDispatchOp
{
15 static const int HEAD_VERSION
= 1;
16 static const int COMPAT_VERSION
= 1;
19 spg_t pgid
; ///< target spg_t
20 epoch_t map_epoch
, min_epoch
;
21 list
<pair
<hobject_t
, eversion_t
> > objects
; ///< objects to remove
27 int get_cost() const override
{
31 epoch_t
get_map_epoch() const override
{
34 epoch_t
get_min_epoch() const override
{
37 spg_t
get_spg() const override
{
41 void set_cost(uint64_t c
) {
45 MOSDPGRecoveryDelete()
46 : MOSDFastDispatchOp(MSG_OSD_PG_RECOVERY_DELETE
, HEAD_VERSION
,
47 COMPAT_VERSION
), cost(0) {}
49 MOSDPGRecoveryDelete(pg_shard_t from
, spg_t pgid
, epoch_t map_epoch
,
51 : MOSDFastDispatchOp(MSG_OSD_PG_RECOVERY_DELETE
, HEAD_VERSION
,
60 ~MOSDPGRecoveryDelete() {}
63 const char *get_type_name() const { return "recovery_delete"; }
64 void print(ostream
& out
) const {
65 out
<< "MOSDPGRecoveryDelete(" << pgid
<< " e" << map_epoch
<< ","
66 << min_epoch
<< " " << objects
<< ")";
69 void encode_payload(uint64_t features
) {
70 ::encode(from
, payload
);
71 ::encode(pgid
, payload
);
72 ::encode(map_epoch
, payload
);
73 ::encode(min_epoch
, payload
);
74 ::encode(cost
, payload
);
75 ::encode(objects
, payload
);
77 void decode_payload() {
78 bufferlist::iterator p
= payload
.begin();
81 ::decode(map_epoch
, p
);
82 ::decode(min_epoch
, p
);