]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
ceph-dencoder: SnapSet
authorSage Weil <sage.weil@dreamhost.com>
Mon, 6 Feb 2012 06:18:51 +0000 (22:18 -0800)
committerSage Weil <sage@newdream.net>
Mon, 6 Feb 2012 21:34:33 +0000 (13:34 -0800)
Signed-off-by: Sage Weil <sage.weil@dreamhost.com>
src/common/snap_types.h
src/osd/osd_types.cc
src/osd/osd_types.h
src/test/encoding/types.h

index e8e5281e484084d28f4ae08f446fc872664c482a..76d5c535097f55245ef68ef72e65c30cdc0624c7 100644 (file)
@@ -42,7 +42,7 @@ struct SnapContext {
   vector<snapid_t> snaps;  // existent snaps, in descending order
 
   SnapContext() {}
-  SnapContext(snapid_t s, vector<snapid_t>& v) : seq(s), snaps(v) {}    
+  SnapContext(snapid_t s, const vector<snapid_t>& v) : seq(s), snaps(v) {}    
 
   bool is_valid() const;
 
index 1b7c4fa91533a761b698de1b06c85bb6a325b9c7..c26d4057cd18a5e195608cd4793ab2b376030b0b 100644 (file)
@@ -1560,6 +1560,42 @@ void SnapSet::decode(bufferlist::iterator& bl)
   ::decode(clone_size, bl);
 }
 
+void SnapSet::dump(Formatter *f) const
+{
+  SnapContext sc(seq, snaps);
+  f->open_object_section("snap_context");
+  sc.dump(f);
+  f->close_section();
+  f->dump_int("head_exists", head_exists);
+  f->open_array_section("clones");
+  for (vector<snapid_t>::const_iterator p = clones.begin(); p != clones.end(); ++p) {
+    f->open_object_section("clone");
+    f->dump_unsigned("snap", *p);
+    f->dump_unsigned("size", clone_size.find(*p)->second);
+    f->dump_stream("overlap") << clone_overlap.find(*p)->second;
+    f->close_section();
+  }
+  f->close_section();
+}
+
+void SnapSet::generate_test_instances(list<SnapSet*>& o)
+{
+  o.push_back(new SnapSet);
+  o.push_back(new SnapSet);
+  o.back()->head_exists = true;
+  o.back()->seq = 123;
+  o.back()->snaps.push_back(123);
+  o.back()->snaps.push_back(12);
+  o.push_back(new SnapSet);
+  o.back()->head_exists = true;
+  o.back()->seq = 123;
+  o.back()->snaps.push_back(123);
+  o.back()->snaps.push_back(12);
+  o.back()->clones.push_back(12);
+  o.back()->clone_size[12] = 12345;
+  o.back()->clone_overlap[12];
+}
+
 ostream& operator<<(ostream& out, const SnapSet& cs)
 {
   return out << cs.seq << "=" << cs.snaps << ":"
@@ -1567,7 +1603,6 @@ ostream& operator<<(ostream& out, const SnapSet& cs)
             << (cs.head_exists ? "+head":"");
 }
 
-
 // -- watch_info_t --
 
 void watch_info_t::encode(bufferlist& bl) const
index 46ff1d0a55d2b2a39e02c78806da0311074a313f..2061e6b471b24f47ac95fb12b3980cfd4cac14f2 100644 (file)
@@ -1448,6 +1448,8 @@ struct SnapSet {
     
   void encode(bufferlist& bl) const;
   void decode(bufferlist::iterator& bl);
+  void dump(Formatter *f) const;
+  static void generate_test_instances(list<SnapSet*>& o);  
 };
 WRITE_CLASS_ENCODER(SnapSet)
 
index 90d72776d13e487161ac2dafbba4070b28a0ec20..01e6efdc462bc3c112e3d78abea71794a0e9f5a7 100644 (file)
@@ -39,6 +39,7 @@ TYPE(pg_missing_t)
 TYPE(pg_ls_response_t)
 TYPE(watch_info_t)
 TYPE(object_info_t)
+TYPE(SnapSet)
 
 #include "os/ObjectStore.h"
 TYPE(ObjectStore::Transaction)