objaddr_t offset,
extent_len_t length) {
auto ret = with_trans_intr(t, [&](auto &t) {
- return tm->get_pins(t, laddr_t::from_byte_offset(offset), length);
+ auto &layout = onode->get_layout();
+ auto odata = layout.object_data.get();
+ auto obase = odata.get_reserved_data_base();
+ return tm->get_pins(t, (obase + offset).checked_to_laddr(), length);
}).unsafe_get();
return ret;
}
std::list<LBAMappingRef> get_mappings(objaddr_t offset, extent_len_t length) {
auto t = create_mutate_transaction();
auto ret = with_trans_intr(*t, [&](auto &t) {
- return tm->get_pins(t, laddr_t::from_byte_offset(offset), length);
+ auto &layout = onode->get_layout();
+ auto odata = layout.object_data.get();
+ auto obase = odata.get_reserved_data_base();
+ return tm->get_pins(t, (obase + offset).checked_to_laddr(), length);
}).unsafe_get();
return ret;
}
ObjectDataBlockRef get_extent(
Transaction &t,
- laddr_t addr,
+ loffset_t addr,
extent_len_t len) {
+ auto &layout = onode->get_layout();
+ auto odata = layout.object_data.get();
+ auto obase = odata.get_reserved_data_base();
auto ext = with_trans_intr(t, [&](auto& trans) {
- return tm->read_extent<ObjectDataBlock>(trans, addr, len);
- }).unsafe_get();
- EXPECT_EQ(addr, ext->get_laddr());
+ return tm->read_extent<ObjectDataBlock>(
+ trans, (obase + addr).checked_to_laddr(), len);
+ }).unsafe_get();
+ EXPECT_EQ((obase + addr).checked_to_laddr(), ext->get_laddr());
return ext;
}
auto pins = get_mappings(*t, base, len);
assert(pins.size() == 1);
auto pin1 = remap_pin(*t, std::move(pins.front()), 4096, 8192);
- auto ext = get_extent(*t, laddr_t::from_byte_offset(base + 4096), 4096 * 2);
+ auto ext = get_extent(*t, base + 4096, 4096 * 2);
ASSERT_TRUE(ext->is_exist_clean());
write(*t, base + 4096, 4096, 'y');
ASSERT_TRUE(ext->is_exist_mutation_pending());