{
ENCODE_START(3, 2, bl);
::encode(seq, bl);
- ::encode(head_exists, bl);
+ ::encode(true, bl); // head_exists
::encode(snaps, bl);
::encode(clones, bl);
::encode(clone_overlap, bl);
{
DECODE_START_LEGACY_COMPAT_LEN(3, 2, 2, bl);
::decode(seq, bl);
- ::decode(head_exists, bl);
+ bl.advance(1); // skip legacy head_exists (always true)
::decode(snaps, bl);
::decode(clones, bl);
::decode(clone_overlap, bl);
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");
{
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);
seq = ss.seq;
set<snapid_t> _snaps;
set<snapid_t> _clones;
- head_exists = false;
for (vector<librados::clone_info_t>::const_iterator p = ss.clones.begin();
p != ss.clones.end();
++p) {
- if (p->cloneid == librados::SNAP_HEAD) {
- head_exists = true;
- } else {
+ if (p->cloneid != librados::SNAP_HEAD) {
_clones.insert(p->cloneid);
_snaps.insert(p->snaps.begin(), p->snaps.end());
clone_size[p->cloneid] = p->size;
*/
struct SnapSet {
snapid_t seq;
- bool head_exists;
vector<snapid_t> snaps; // descending
vector<snapid_t> clones; // ascending
map<snapid_t, interval_set<uint64_t> > clone_overlap; // overlap w/ next newest
map<snapid_t, uint64_t> clone_size;
map<snapid_t, vector<snapid_t>> clone_snaps; // descending
- SnapSet() : seq(0), head_exists(true) {}
+ SnapSet() : seq(0) {}
explicit SnapSet(bufferlist& bl) {
bufferlist::iterator p = bl.begin();
decode(p);