]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/messages/MOSDRepScrub.h
update sources to ceph Nautilus 14.2.1
[ceph.git] / ceph / src / messages / MOSDRepScrub.h
index f4f26ee1f2d45860ebd97a9d5211e145add12f90..40867bedc662bf7a8c36cbdb4415baa6d3e9827e 100644 (file)
  * instruct an OSD initiate a replica scrub on a specific PG
  */
 
-struct MOSDRepScrub : public MOSDFastDispatchOp {
+class MOSDRepScrub : public MessageInstance<MOSDRepScrub, MOSDFastDispatchOp> {
+public:
+  friend factory;
 
-  static const int HEAD_VERSION = 9;
-  static const int COMPAT_VERSION = 6;
+  static constexpr int HEAD_VERSION = 9;
+  static constexpr int COMPAT_VERSION = 6;
 
   spg_t pgid;             // PG to scrub
   eversion_t scrub_from; // only scrub log entries after scrub_from
@@ -50,14 +52,14 @@ struct MOSDRepScrub : public MOSDFastDispatchOp {
   }
 
   MOSDRepScrub()
-    : MOSDFastDispatchOp(MSG_OSD_REP_SCRUB, HEAD_VERSION, COMPAT_VERSION),
+    : MessageInstance(MSG_OSD_REP_SCRUB, HEAD_VERSION, COMPAT_VERSION),
       chunky(false),
       deep(false) { }
 
   MOSDRepScrub(spg_t pgid, eversion_t scrub_to, epoch_t map_epoch, epoch_t min_epoch,
                hobject_t start, hobject_t end, bool deep,
               bool preemption, int prio, bool highprio)
-    : MOSDFastDispatchOp(MSG_OSD_REP_SCRUB, HEAD_VERSION, COMPAT_VERSION),
+    : MessageInstance(MSG_OSD_REP_SCRUB, HEAD_VERSION, COMPAT_VERSION),
       pgid(pgid),
       scrub_to(scrub_to),
       map_epoch(map_epoch),
@@ -75,7 +77,7 @@ private:
   ~MOSDRepScrub() override {}
 
 public:
-  const char *get_type_name() const override { return "replica scrub"; }
+  std::string_view get_type_name() const override { return "replica scrub"; }
   void print(ostream& out) const override {
     out << "replica_scrub(pg: "        << pgid
        << ",from:" << scrub_from
@@ -92,47 +94,48 @@ public:
   }
 
   void encode_payload(uint64_t features) override {
-    ::encode(pgid.pgid, payload);
-    ::encode(scrub_from, payload);
-    ::encode(scrub_to, payload);
-    ::encode(map_epoch, payload);
-    ::encode(chunky, payload);
-    ::encode(start, payload);
-    ::encode(end, payload);
-    ::encode(deep, payload);
-    ::encode(pgid.shard, payload);
-    ::encode((uint32_t)-1, payload); // seed
-    ::encode(min_epoch, payload);
-    ::encode(allow_preemption, payload);
-    ::encode(priority, payload);
-    ::encode(high_priority, payload);
+    using ceph::encode;
+    encode(pgid.pgid, payload);
+    encode(scrub_from, payload);
+    encode(scrub_to, payload);
+    encode(map_epoch, payload);
+    encode(chunky, payload);
+    encode(start, payload);
+    encode(end, payload);
+    encode(deep, payload);
+    encode(pgid.shard, payload);
+    encode((uint32_t)-1, payload); // seed
+    encode(min_epoch, payload);
+    encode(allow_preemption, payload);
+    encode(priority, payload);
+    encode(high_priority, payload);
   }
   void decode_payload() override {
-    bufferlist::iterator p = payload.begin();
-    ::decode(pgid.pgid, p);
-    ::decode(scrub_from, p);
-    ::decode(scrub_to, p);
-    ::decode(map_epoch, p);
-    ::decode(chunky, p);
-    ::decode(start, p);
-    ::decode(end, p);
-    ::decode(deep, p);
-    ::decode(pgid.shard, p);
+    auto p = payload.cbegin();
+    decode(pgid.pgid, p);
+    decode(scrub_from, p);
+    decode(scrub_to, p);
+    decode(map_epoch, p);
+    decode(chunky, p);
+    decode(start, p);
+    decode(end, p);
+    decode(deep, p);
+    decode(pgid.shard, p);
     {
       uint32_t seed;
-      ::decode(seed, p);
+      decode(seed, p);
     }
     if (header.version >= 7) {
-      ::decode(min_epoch, p);
+      decode(min_epoch, p);
     } else {
       min_epoch = map_epoch;
     }
     if (header.version >= 8) {
-      ::decode(allow_preemption, p);
+      decode(allow_preemption, p);
     }
     if (header.version >= 9) {
-      ::decode(priority, p);
-      ::decode(high_priority, p);
+      decode(priority, p);
+      decode(high_priority, p);
     }
   }
 };