]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
messages/MRecoveryReserve: pass priority to replica
authorSage Weil <sage@redhat.com>
Sun, 22 Oct 2017 19:01:17 +0000 (14:01 -0500)
committerSage Weil <sage@redhat.com>
Sun, 22 Oct 2017 19:07:58 +0000 (14:07 -0500)
Signed-off-by: Sage Weil <sage@redhat.com>
src/messages/MRecoveryReserve.h
src/osd/PG.cc

index 82bfe868940f51cb3e8e95f411a157dc4d8eed09..f42ff80543fdde2726c406cd33b128e3f8dc36da 100644 (file)
@@ -18,7 +18,7 @@
 #include "msg/Message.h"
 
 class MRecoveryReserve : public Message {
-  static const int HEAD_VERSION = 2;
+  static const int HEAD_VERSION = 3;
   static const int COMPAT_VERSION = 2;
 public:
   spg_t pgid;
@@ -28,17 +28,19 @@ public:
     GRANT = 1,
     RELEASE = 2,
   };
-  int type;
+  uint32_t type;
+  uint32_t priority = 0;
 
   MRecoveryReserve()
     : Message(MSG_OSD_RECOVERY_RESERVE, HEAD_VERSION, COMPAT_VERSION),
       query_epoch(0), type(-1) {}
   MRecoveryReserve(int type,
                   spg_t pgid,
-                  epoch_t query_epoch)
+                  epoch_t query_epoch,
+                  unsigned prio = 0)
     : Message(MSG_OSD_RECOVERY_RESERVE, HEAD_VERSION, COMPAT_VERSION),
       pgid(pgid), query_epoch(query_epoch),
-      type(type) {}
+      type(type), priority(prio) {}
 
   const char *get_type_name() const override {
     return "MRecoveryReserve";
@@ -58,6 +60,7 @@ public:
       break;
     }
     out << " e" << query_epoch << ")";
+    if (type == REQUEST) out << ", prio: " << priority;
     return;
   }
 
@@ -67,6 +70,9 @@ public:
     ::decode(query_epoch, p);
     ::decode(type, p);
     ::decode(pgid.shard, p);
+    if (header.version >= 3) {
+      ::decode(priority, p);
+    }
   }
 
   void encode_payload(uint64_t features) override {
@@ -74,6 +80,7 @@ public:
     ::encode(query_epoch, payload);
     ::encode(type, payload);
     ::encode(pgid.shard, payload);
+    ::encode(priority, payload);
   }
 };
 
index 325290d8ab5eed72deb8c041d8a060b4a6799056..90959d67ba0b17d5796731fd0a7e1ebc0e049f07 100644 (file)
@@ -6872,7 +6872,8 @@ PG::RecoveryState::WaitRemoteRecoveryReserved::react(const RemoteRecoveryReserve
         new MRecoveryReserve(
          MRecoveryReserve::REQUEST,
          spg_t(pg->info.pgid.pgid, remote_recovery_reservation_it->shard),
-         pg->get_osdmap()->get_epoch()),
+         pg->get_osdmap()->get_epoch(),
+         pg->get_recovery_priority()),
        con.get());
     }
     ++remote_recovery_reservation_it;