void initialize(Transaction& t, Onode& value) const {
auto& layout = value.get_mutable_layout(t);
layout.size = size;
- layout.omap_root.update(omap_root_t(id, cnt_modify));
+ layout.omap_root.update(omap_root_t(id, cnt_modify, value.get_hint()));
validate(value);
}
void validate(Onode& value) const {
auto& layout = value.get_layout();
ceph_assert(laddr_t(layout.size) == laddr_t{size});
- ceph_assert(layout.omap_root.get().addr == id);
- ceph_assert(layout.omap_root.get().depth == cnt_modify);
+ ceph_assert(layout.omap_root.get(value.get_hint()).addr == id);
+ ceph_assert(layout.omap_root.get(value.get_hint()).depth == cnt_modify);
}
void modify(Transaction& t, Onode& value) {
with_trans_intr( \
c.t, \
[=] (auto &t) { \
- return fun(c, b, v); \
+ return fun(c, L_ADDR_MIN, b, v); \
} \
)
ceph_abort("impossible path"); }
search_position_t merge(NodeExtentMutable&, NodeImpl&, match_stage_t, extent_len_t) override {
ceph_abort("impossible path"); }
- eagain_ifuture<NodeExtentMutable> rebuild_extent(context_t) override {
+ eagain_ifuture<NodeExtentMutable> rebuild_extent(context_t, laddr_t) override {
ceph_abort("impossible path"); }
node_stats_t get_stats() const override {
ceph_abort("impossible path"); }
crimson::ct_error::assert_all{"Invalid error during create_initial()"}
).si_then([c, initial](auto super) {
initial->make_root_new(c, std::move(super));
- return initial->upgrade_root(c).si_then([initial] {
+ return initial->upgrade_root(c, L_ADDR_MIN).si_then([initial] {
return initial;
});
});
return layout;
}
bool is_dirty() const { return dirty; }
+ laddr_t get_hint() const final {return L_ADDR_MIN; }
~TestOnode() final = default;
};
omap_root_t omap_root = with_trans_intr(
*t,
[this](auto &t) {
- return omap_manager->initialize_omap(t);
+ return omap_manager->initialize_omap(t, L_ADDR_MIN);
}).unsafe_get0();
submit_transaction(std::move(t));
return omap_root;