]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
ceph-dencoder: add pg_create_t (formerly MOSDPGCreate::create_rec)
authorSage Weil <sage@newdream.net>
Fri, 10 Feb 2012 05:15:53 +0000 (21:15 -0800)
committerSage Weil <sage@newdream.net>
Fri, 10 Feb 2012 05:15:53 +0000 (21:15 -0800)
Signed-off-by: Sage Weil <sage@newdream.net>
src/messages/MOSDPGCreate.h
src/osd/OSD.cc
src/osd/osd_types.cc
src/osd/osd_types.h
src/test/encoding/types.h

index d9537363df8c16d296b48e370c7a22d61ef2f6a5..38410b99e1df873584b18136da92fa9e9e9fd720 100644 (file)
@@ -17,6 +17,7 @@
 #define CEPH_MOSDPGCREATE_H
 
 #include "msg/Message.h"
+#include "osd/osd_types.h"
 
 /*
  * PGCreate - instruct an OSD to create a pg, if it doesn't already exist
 
 struct MOSDPGCreate : public Message {
   version_t          epoch;
-  struct create_rec {
-    epoch_t created;   // epoch pg created
-    pg_t parent;       // split from parent (if != pg_t())
-    __s32 split_bits;
-
-    void encode(bufferlist &bl) const {
-      ::encode(created, bl);
-      ::encode(parent, bl);
-      ::encode(split_bits, bl);
-    }
-    void decode(bufferlist::iterator &bl) {
-      ::decode(created, bl);
-      ::decode(parent, bl);
-      ::decode(split_bits, bl);
-    }
-  };
-  WRITE_CLASS_ENCODER(create_rec)
-
-  map<pg_t,create_rec> mkpg;
+  map<pg_t,pg_create_t> mkpg;
 
   MOSDPGCreate() : Message(MSG_OSD_PG_CREATE) {}
   MOSDPGCreate(epoch_t e) :
@@ -66,7 +49,7 @@ public:
 
   void print(ostream& out) const {
     out << "osd pg create(";
-    for (map<pg_t,create_rec>::const_iterator i = mkpg.begin();
+    for (map<pg_t,pg_create_t>::const_iterator i = mkpg.begin();
          i != mkpg.end();
          ++i) {
       out << "pg" << i->first << "," << i->second.created << "; ";
@@ -75,6 +58,4 @@ public:
   }
 };
 
-WRITE_CLASS_ENCODER(MOSDPGCreate::create_rec)
-
 #endif
index 314645c18d128e929acacc99f371990f3f5d4721..513456642144621112235cc468e1bb3582429be5 100644 (file)
@@ -4230,7 +4230,7 @@ void OSD::handle_pg_create(OpRequest *op)
 
   int num_created = 0;
 
-  for (map<pg_t,MOSDPGCreate::create_rec>::iterator p = m->mkpg.begin();
+  for (map<pg_t,pg_create_t>::iterator p = m->mkpg.begin();
        p != m->mkpg.end();
        p++) {
     pg_t pgid = p->first;
index 854b6c4bbc3b35860c55cceaaa57a204385e3bbb..2ac4b83df610c52846ad3ff41099e2d11d680a00 100644 (file)
@@ -1531,6 +1531,36 @@ void pg_missing_t::got(const std::map<hobject_t, pg_missing_t::item>::iterator &
   missing.erase(m);
 }
 
+// -- pg_create_t --
+
+void pg_create_t::encode(bufferlist &bl) const
+{
+  ::encode(created, bl);
+  ::encode(parent, bl);
+  ::encode(split_bits, bl);
+}
+
+void pg_create_t::decode(bufferlist::iterator &bl)
+{
+  ::decode(created, bl);
+  ::decode(parent, bl);
+  ::decode(split_bits, bl);
+}
+
+void pg_create_t::dump(Formatter *f) const
+{
+  f->dump_unsigned("created", created);
+  f->dump_stream("parent") << parent;
+  f->dump_int("split_bits", split_bits);
+}
+
+void pg_create_t::generate_test_instances(list<pg_create_t*>& o)
+{
+  o.push_back(new pg_create_t);
+  o.push_back(new pg_create_t(1, 2));
+  o.back()->parent = pg_t(1, 2, 3);
+}
+
 // -- OSDSuperblock --
 
 void OSDSuperblock::encode(bufferlist &bl) const
index 65bcb55c1563b4e90b532479b7320f183265e966..454b9f6ae23dd222aca47894ed472470b18bd83f 100644 (file)
@@ -1309,6 +1309,23 @@ struct pg_ls_response_t {
 WRITE_CLASS_ENCODER(pg_ls_response_t)
 
 
+/**
+ * pg creation info
+ */
+struct pg_create_t {
+  epoch_t created;   // epoch pg created
+  pg_t parent;       // split from parent (if != pg_t())
+  __s32 split_bits;
+
+  pg_create_t(unsigned c=0, int s=0) : created(c), split_bits(s) {}
+
+  void encode(bufferlist &bl) const;
+  void decode(bufferlist::iterator &bl);
+  void dump(Formatter *f) const;
+  static void generate_test_instances(list<pg_create_t*>& o);
+};
+WRITE_CLASS_ENCODER(pg_create_t)
+
 // -----------------------------------------
 
 struct osd_peer_stat_t {
index 5f1163d6e33a0e58e4f0c72ff1d3ece0a839b03a..f02afdd61cb7dc3c9741b00f9d4e9cea8a3e9e77 100644 (file)
@@ -44,6 +44,7 @@ TYPE(pg_log_t)
 TYPE(pg_missing_t::item)
 TYPE(pg_missing_t)
 TYPE(pg_ls_response_t)
+TYPE(pg_create_t)
 TYPE(watch_info_t)
 TYPE(object_info_t)
 TYPE(SnapSet)