LOG_PREFIX(TransactionManager::clone_pin);
SUBDEBUGT(seastore_tm, "{} clone to hint {} ... pos={}, updateref={}",
t, mapping, hint, pos, updateref);
- return seastar::do_with(
+ pos = co_await pos.refresh();
+ mapping = co_await mapping.refresh();
+ auto ret = co_await lba_manager->clone_mapping(
+ t,
std::move(pos),
std::move(mapping),
- [offset, len, FNAME, this, &t, hint, updateref](auto &pos, auto &mapping) {
- return pos.refresh(
- ).si_then([&pos, &mapping](auto m) {
- pos = std::move(m);
- return mapping.refresh();
- }).si_then([offset, len, FNAME, this, &pos,
- &t, hint, updateref](auto mapping) {
- return lba_manager->clone_mapping(
- t,
- std::move(pos),
- std::move(mapping),
- hint,
- offset,
- len,
- updateref
- ).si_then([FNAME, &t](auto ret) {
- SUBDEBUGT(seastore_tm, "cloned as {}", t, ret.cloned_mapping);
- return ret;
- });
- });
- });
+ hint,
+ offset,
+ len,
+ updateref
+ );
+ SUBDEBUGT(seastore_tm, "cloned as {}", t, ret.cloned_mapping);
+ co_return ret;
}
struct clone_range_ret_t {