]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
message: add MRecoveryReserve
authorMike Ryan <mike.ryan@inktank.com>
Tue, 2 Oct 2012 22:19:04 +0000 (15:19 -0700)
committerMike Ryan <mike.ryan@inktank.com>
Thu, 1 Nov 2012 08:05:01 +0000 (01:05 -0700)
This message will be used to reserve and release recovery slots on
replica PGs.

Signed-off-by: Mike Ryan <mike.ryan@inktank.com>
src/Makefile.am
src/messages/MRecoveryReserve.h [new file with mode: 0644]
src/msg/Message.cc
src/msg/Message.h

index 36a4d971f98c5656e1cf3ae69d51edeecd151de9..e24df4bdcfd737345b1c8fba8df856aed1ba3320 100644 (file)
@@ -1720,6 +1720,7 @@ noinst_HEADERS = \
         messages/MOSDPGRemove.h\
        messages/MOSDPGScan.h\
         messages/MBackfillReserve.h\
+        messages/MRecoveryReserve.h\
         messages/MOSDPGTemp.h\
         messages/MOSDPGTrim.h\
         messages/MOSDPing.h\
diff --git a/src/messages/MRecoveryReserve.h b/src/messages/MRecoveryReserve.h
new file mode 100644 (file)
index 0000000..e87d8af
--- /dev/null
@@ -0,0 +1,78 @@
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
+// vim: ts=8 sw=2 smarttab
+/*
+ * Ceph - scalable distributed file system
+ *
+ * Copyright (C) 2004-2006 Sage Weil <sage@newdream.net>
+ *
+ * This is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software
+ * Foundation.  See file COPYING.
+ *
+ */
+
+#ifndef CEPH_MRECOVERY_H
+#define CEPH_MRECOVERY_H
+
+#include "msg/Message.h"
+
+class MRecoveryReserve : public Message {
+  static const int HEAD_VERSION = 1;
+  static const int COMPAT_VERSION = 1;
+public:
+  pg_t pgid;
+  epoch_t query_epoch;
+  enum {
+    REQUEST = 0,
+    GRANT = 1,
+    RELEASE = 2,
+  };
+  int type;
+
+  MRecoveryReserve()
+    : Message(MSG_OSD_RECOVERY_RESERVE, HEAD_VERSION, COMPAT_VERSION),
+      query_epoch(0), type(-1) {}
+  MRecoveryReserve(int type,
+                  pg_t pgid,
+                  epoch_t query_epoch)
+    : Message(MSG_OSD_RECOVERY_RESERVE, HEAD_VERSION, COMPAT_VERSION),
+      pgid(pgid), query_epoch(query_epoch),
+      type(type) {}
+
+  const char *get_type_name() const {
+    return "MRecoveryReserve";
+  }
+
+  void print(ostream& out) const {
+    out << "MRecoveryReserve ";
+    switch (type) {
+    case REQUEST:
+      out << "REQUEST ";
+      break;
+    case GRANT:
+      out << "GRANT ";
+      break;
+    case RELEASE:
+      out << "RELEASE ";
+      break;
+    }
+    out << " pgid: " << pgid << ", query_epoch: " << query_epoch;
+    return;
+  }
+
+  void decode_payload() {
+    bufferlist::iterator p = payload.begin();
+    ::decode(pgid, p);
+    ::decode(query_epoch, p);
+    ::decode(type, p);
+  }
+
+  void encode_payload(uint64_t features) {
+    ::encode(pgid, payload);
+    ::encode(query_epoch, payload);
+    ::encode(type, payload);
+  }
+};
+
+#endif
index 070fbac7c9882b70e2540a26326e6ae7146d3eb5..ce1f060c09364d4b0a7a7e7435896caafa5a50cc 100644 (file)
@@ -48,6 +48,7 @@ using namespace std;
 #include "messages/MCommand.h"
 #include "messages/MCommandReply.h"
 #include "messages/MBackfillReserve.h"
+#include "messages/MRecoveryReserve.h"
 
 #include "messages/MRoute.h"
 #include "messages/MForward.h"
@@ -330,6 +331,9 @@ Message *decode_message(CephContext *cct, ceph_msg_header& header, ceph_msg_foot
   case MSG_OSD_BACKFILL_RESERVE:
     m = new MBackfillReserve;
     break;
+  case MSG_OSD_RECOVERY_RESERVE:
+    m = new MRecoveryReserve;
+    break;
 
   case MSG_ROUTE:
     m = new MRoute;
index 560ca0ca06d828b1c47dc38af913bf5890acee2d..11c2cacf73c0b2c231c9d2ee4347c46353b7382b 100644 (file)
@@ -94,6 +94,7 @@
 #define MSG_COMMAND_REPLY      98
 
 #define MSG_OSD_BACKFILL_RESERVE 99
+#define MSG_OSD_RECOVERY_RESERVE 150
 
 // *** MDS ***
 
 #define MSG_MDS_SLAVE_REQUEST      101
 #define MSG_MDS_TABLE_REQUEST      102
 
+                                // 150 already in use (MSG_OSD_RECOVERY_RESERVE)
+
 #define MSG_MDS_RESOLVE            0x200
 #define MSG_MDS_RESOLVEACK         0x201
 #define MSG_MDS_CACHEREJOIN        0x202