std::ostream &print_detail(std::ostream &out) const final;
ceph::bufferlist get_delta() final {
- // TODO
- return ceph::bufferlist();
+ assert(!delta_buffer.empty());
+ ceph::buffer::ptr bptr(delta_buffer.get_bytes());
+ delta_buffer.copy_out(bptr.c_str(), bptr.length());
+ ceph::bufferlist bl;
+ bl.push_back(bptr);
+ return bl;
}
void apply_delta_and_adjust_crc(
paddr_t base, const ceph::bufferlist &_bl) final {
- ceph_assert(0 == "TODO");
+ assert(_bl.length());
+ ceph::bufferlist bl = _bl;
+ bl.rebuild();
+ delta_buffer_t buffer;
+ buffer.copy_in(bl.front().c_str(), bl.front().length());
+ buffer.replay(*this);
+ set_last_committed_crc(get_crc32c());
+ resolve_relative_addrs(base);
}
bool at_max_capacity() const final {
}
ceph::bufferlist get_delta() final {
- // TODO
- return ceph::bufferlist();
+ assert(!delta_buffer.empty());
+ ceph::buffer::ptr bptr(delta_buffer.get_bytes());
+ delta_buffer.copy_out(bptr.c_str(), bptr.length());
+ ceph::bufferlist bl;
+ bl.push_back(bptr);
+ return bl;
}
void apply_delta_and_adjust_crc(
paddr_t base, const ceph::bufferlist &_bl) final {
- ceph_assert(0 == "TODO");
+ assert(_bl.length());
+ ceph::bufferlist bl = _bl;
+ bl.rebuild();
+ delta_buffer_t buffer;
+ buffer.copy_in(bl.front().c_str(), bl.front().length());
+ buffer.replay(*this);
+ set_last_committed_crc(get_crc32c());
+ resolve_relative_addrs(base);
}
extent_types_t get_type() const final {