From: Sage Weil Date: Sun, 22 Oct 2017 19:01:17 +0000 (-0500) Subject: messages/MRecoveryReserve: pass priority to replica X-Git-Tag: v13.0.1~414^2~8 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=a78dd167708d7caef909be30fd405be86ca1c7e3;p=ceph.git messages/MRecoveryReserve: pass priority to replica Signed-off-by: Sage Weil --- diff --git a/src/messages/MRecoveryReserve.h b/src/messages/MRecoveryReserve.h index 82bfe868940..f42ff80543f 100644 --- a/src/messages/MRecoveryReserve.h +++ b/src/messages/MRecoveryReserve.h @@ -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); } }; diff --git a/src/osd/PG.cc b/src/osd/PG.cc index 325290d8ab5..90959d67ba0 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -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;