BtreeLBAManager::update_mapping_ret
BtreeLBAManager::update_mapping(
Transaction& t,
- LBAMapping mapping,
+ LBACursorRef cursor,
extent_len_t prev_len,
paddr_t prev_addr,
LogicalChildNode& nextent)
{
LOG_PREFIX(BtreeLBAManager::update_mapping);
- auto laddr = mapping.get_key();
+ auto laddr = cursor->get_laddr();
auto addr = nextent.get_paddr();
auto len = nextent.get_length();
auto checksum = nextent.get_last_committed_crc();
t, laddr, prev_addr, prev_len, addr, len, checksum);
assert(laddr == nextent.get_laddr());
assert(!addr.is_null());
- assert(mapping.is_viewable());
- assert(!mapping.is_indirect());
- auto &cursor = mapping.get_effective_cursor();
auto res = co_await _update_mapping(
t,
- cursor,
+ *cursor,
[prev_addr, addr, prev_len, len, checksum](
const lba_map_val_t &in) {
assert(!addr.is_null());
using update_mapping_ret = base_iertr::future<extent_ref_count_t>;
virtual update_mapping_ret update_mapping(
Transaction& t,
- LBAMapping mapping,
+ LBACursorRef cursor,
extent_len_t prev_len,
paddr_t prev_addr,
LogicalChildNode& nextent) = 0;
+ update_mapping_ret update_mapping(
+ Transaction& t,
+ LBAMapping mapping,
+ extent_len_t prev_len,
+ paddr_t prev_addr,
+ LogicalChildNode& nextent) {
+ assert(!mapping.is_indirect());
+ return update_mapping(
+ t,
+ mapping.direct_cursor,
+ prev_len,
+ prev_addr,
+ nextent);
+ }
/**
* update_mappings
base_iertr::future<LBAMapping> next();
private:
+ friend class LBAManager;
friend lba::BtreeLBAManager;
friend class TransactionManager;
friend std::ostream &operator<<(std::ostream&, const LBAMapping&);