::encode(size, bl);
::encode(attrs, bl);
::encode(extent_map, bl);
- ::encode(overlay_map, bl);
- ::encode(overlay_refs, bl);
- ::encode(last_overlay_key, bl);
::encode(omap_head, bl);
::encode(expected_object_size, bl);
::encode(expected_write_size, bl);
::decode(size, p);
::decode(attrs, p);
::decode(extent_map, p);
- ::decode(overlay_map, p);
- ::decode(overlay_refs, p);
- ::decode(last_overlay_key, p);
::decode(omap_head, p);
::decode(expected_object_size, p);
::decode(expected_write_size, p);
f->close_section();
}
f->close_section();
- f->open_object_section("overlays");
- for (map<uint64_t,bluestore_overlay_t>::const_iterator p = overlay_map.begin();
- p != overlay_map.end(); ++p) {
- f->open_object_section("overlay");
- f->dump_unsigned("offset", p->first);
- p->second.dump(f);
- f->close_section();
- }
- f->close_section();
- f->open_array_section("overlay_refs");
- for (map<uint64_t,uint16_t>::const_iterator p = overlay_refs.begin();
- p != overlay_refs.end(); ++p) {
- f->open_object_section("overlay");
- f->dump_unsigned("offset", p->first);
- f->dump_unsigned("refs", p->second);
- f->close_section();
- }
- f->close_section();
- f->dump_unsigned("last_overlay_key", last_overlay_key);
f->dump_unsigned("omap_head", omap_head);
f->dump_unsigned("expected_object_size", expected_object_size);
f->dump_unsigned("expected_write_size", expected_write_size);
::encode(op, bl);
::encode(extents, bl);
::encode(data, bl);
- ::encode(nid, bl);
- ::encode(overlays, bl);
- ::encode(removed_overlays, bl);
ENCODE_FINISH(bl);
}
::decode(op, p);
::decode(extents, p);
::decode(data, p);
- ::decode(nid, p);
- ::decode(overlays, p);
- ::decode(removed_overlays, p);
DECODE_FINISH(p);
}
f->dump_object("extent", e);
}
f->close_section();
- f->dump_unsigned("nid", nid);
- f->open_array_section("overlays");
- for (auto& o : overlays) {
- f->dump_object("overlay", o);
- }
- f->close_section();
- f->open_array_section("removed_overlays");
- for (auto key : removed_overlays) {
- f->dump_unsigned("key", key);
- }
- f->close_section();
}
void bluestore_wal_op_t::generate_test_instances(list<bluestore_wal_op_t*>& o)
uint64_t size; ///< object size
map<string, bufferptr> attrs; ///< attrs
map<uint64_t,bluestore_lextent_t> extent_map; ///< extent refs
- map<uint64_t,bluestore_overlay_t> overlay_map; ///< overlay data (stored in db)
- map<uint64_t,uint16_t> overlay_refs; ///< overlay keys ref counts (if >1)
- uint32_t last_overlay_key; ///< key for next overlay
uint64_t omap_head; ///< id for omap root node
uint32_t expected_object_size;
bluestore_onode_t()
: nid(0),
size(0),
- last_overlay_key(0),
omap_head(0),
expected_object_size(0),
expected_write_size(0),
void punch_hole(uint64_t offset, uint64_t length,
vector<bluestore_lextent_t> *deref);
- bool put_overlay_ref(uint64_t key) {
- map<uint64_t,uint16_t>::iterator q = overlay_refs.find(key);
- if (q == overlay_refs.end())
- return true;
- assert(q->second >= 2);
- if (--q->second == 1) {
- overlay_refs.erase(q);
- }
- return false;
- }
- void get_overlay_ref(uint64_t key) {
- map<uint64_t,uint16_t>::iterator q = overlay_refs.find(key);
- if (q == overlay_refs.end())
- overlay_refs[key] = 2;
- else
- ++q->second;
- }
-
void encode(bufferlist& bl) const;
void decode(bufferlist::iterator& p);
void dump(Formatter *f) const;
vector<bluestore_pextent_t> extents;
bufferlist data;
- uint64_t nid;
- vector<bluestore_overlay_t> overlays;
- vector<uint64_t> removed_overlays;
-
void encode(bufferlist& bl) const;
void decode(bufferlist::iterator& p);
void dump(Formatter *f) const;