ceph_le32 oi_size{0};
ceph_le32 ss_size{0};
omap_root_le_t omap_root;
+ omap_root_le_t log_root;
omap_root_le_t xattr_root;
object_data_le_t object_data;
char oi[MAX_OI_LENGTH] = {0};
char ss[MAX_SS_LENGTH] = {0};
+
+ onode_layout_t() : omap_root(omap_type_t::OMAP), log_root(omap_type_t::LOG),
+ xattr_root(omap_type_t::XATTR) {}
} __attribute__((packed));
class Transaction;
virtual void update_onode_size(Transaction&, uint32_t) = 0;
virtual void update_omap_root(Transaction&, omap_root_t&) = 0;
+ virtual void update_log_root(Transaction&, omap_root_t&) = 0;
virtual void update_xattr_root(Transaction&, omap_root_t&) = 0;
virtual void update_object_data(Transaction&, object_data_t&) = 0;
virtual void update_object_info(Transaction&, ceph::bufferlist&) = 0;
DEBUG("update omap root");
bliter.copy(sizeof(mlayout.omap_root), (char *)&mlayout.omap_root);
break;
+ case delta_op_t::UPDATE_LOG_ROOT:
+ DEBUG("update log root");
+ bliter.copy(sizeof(mlayout.log_root), (char *)&mlayout.log_root);
+ break;
case delta_op_t::UPDATE_XATTR_ROOT:
DEBUG("update xattr root");
bliter.copy(sizeof(mlayout.xattr_root), (char *)&mlayout.xattr_root);
(const char *)&layout.omap_root,
sizeof(layout.omap_root));
break;
+ case delta_op_t::UPDATE_LOG_ROOT:
+ DEBUG("update log root");
+ encoded.append(
+ (const char *)&layout.log_root,
+ sizeof(layout.log_root));
+ break;
case delta_op_t::UPDATE_XATTR_ROOT:
DEBUG("update xattr root");
encoded.append(
enum class delta_op_t : uint8_t {
UPDATE_ONODE_SIZE,
UPDATE_OMAP_ROOT,
+ UPDATE_LOG_ROOT,
UPDATE_XATTR_ROOT,
UPDATE_OBJECT_DATA,
UPDATE_OBJECT_INFO,
});
}
+ void update_log_root(Transaction &t, omap_root_t &lroot) final {
+ with_mutable_layout(
+ t,
+ [&lroot](NodeExtentMutable &payload_mut, Recorder *recorder) {
+ auto &mlayout = *reinterpret_cast<onode_layout_t*>(
+ payload_mut.get_write());
+ mlayout.log_root.update(lroot);
+ if (recorder) {
+ recorder->encode_update(
+ payload_mut, Recorder::delta_op_t::UPDATE_LOG_ROOT);
+ }
+ });
+ }
+
void update_xattr_root(Transaction &t, omap_root_t &xroot) final {
with_mutable_layout(
t,