ceph-dencoder: SnapSet

Signed-off-by: Sage Weil <sage.weil@dreamhost.com>
This commit is contained in:
Sage Weil 2012-02-05 22:18:51 -08:00 committed by Sage Weil
parent c5a5842009
commit 8791cb98fe
4 changed files with 40 additions and 2 deletions

View 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;

View 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

View 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)

View 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)