1    	// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2    	// vim: ts=8 sw=2 smarttab
3    	
4    	#pragma once
5    	
6    	#include "msg/Message.h"
7    	
8    	/*
9    	 * instruct an OSD to scrub some or all pg(s)
10   	 */
11   	
12   	class MOSDScrub2 : public Message {
13   	public:
14   	  static constexpr int HEAD_VERSION = 1;
15   	  static constexpr int COMPAT_VERSION = 1;
16   	
17   	  uuid_d fsid;
(1) Event member_decl: Class member declaration for "epoch".
Also see events: [uninit_member]
18   	  epoch_t epoch;
19   	  vector<spg_t> scrub_pgs;
20   	  bool repair = false;
21   	  bool deep = false;
22   	
(2) Event uninit_member: Non-static class member "epoch" is not initialized in this constructor nor in any functions that it calls.
Also see events: [member_decl]
23   	  MOSDScrub2() : Message{MSG_OSD_SCRUB2, HEAD_VERSION, COMPAT_VERSION} {}
24   	  MOSDScrub2(const uuid_d& f, epoch_t e, vector<spg_t>& pgs, bool r, bool d) :
25   	    Message{MSG_OSD_SCRUB2, HEAD_VERSION, COMPAT_VERSION},
26   	    fsid(f), epoch(e), scrub_pgs(pgs), repair(r), deep(d) {}
27   	private:
28   	  ~MOSDScrub2() override {}
29   	
30   	public:
31   	  std::string_view get_type_name() const override { return "scrub2"; }
32   	  void print(ostream& out) const override {
33   	    out << "scrub2(" << scrub_pgs;
34   	    if (repair)
35   	      out << " repair";
36   	    if (deep)
37   	      out << " deep";
38   	    out << ")";
39   	  }
40   	
41   	  void encode_payload(uint64_t features) override {
42   	    using ceph::encode;
43   	    encode(fsid, payload);
44   	    encode(epoch, payload);
45   	    encode(scrub_pgs, payload);
46   	    encode(repair, payload);
47   	    encode(deep, payload);
48   	  }
49   	  void decode_payload() override {
50   	    auto p = payload.cbegin();
51   	    decode(fsid, p);
52   	    decode(epoch, p);
53   	    decode(scrub_pgs, p);
54   	    decode(repair, p);
55   	    decode(deep, p);
56   	  }
57   	private:
58   	  template<class T, typename... Args>
59   	  friend boost::intrusive_ptr<T> ceph::make_message(Args&&... args);
60   	};
61