Also removes now unused LBAMapping::remove_indirect_mapping_only.
Signed-off-by: Samuel Just <sjust@redhat.com>
};
}
- ref_ret remove_indirect_mapping_only(
- Transaction &t,
- LBAMapping mapping) final {
- assert(mapping.is_viewable());
- assert(mapping.is_indirect());
- return seastar::do_with(
- std::move(mapping),
- [&t, this](auto &mapping) {
- return update_refcount(t, mapping.indirect_cursor.get(), -1
- ).si_then([](auto res) {
- return ref_iertr::make_ready_future<
- ref_update_result_t>(ref_update_result_t{
- std::move(res), std::nullopt});
- });
- });
- }
-
ref_ret remove_mapping(
Transaction &t,
LBAMapping mapping) final {
Transaction &t,
LBAMapping mapping) = 0;
- /*
- * remove_indirect_mapping_only
- *
- * Remove the indirect mapping without touch the corresponding
- * direct one.
- *
- * @return returns the information about the removed
- * indirect mapping.
- */
- virtual ref_ret remove_indirect_mapping_only(
- Transaction &t,
- LBAMapping mapping) = 0;
-
/**
* Update ref count on mapping
*/
Transaction &t,
LBAMapping mapping)
{
- return lba_manager->remove_indirect_mapping_only(
- t, std::move(mapping)
- ).si_then([](auto result) {
- return std::move(result.result.mapping);
- });
+ assert(mapping.is_indirect());
+ auto ret_cursor = co_await lba_manager->update_mapping_refcount(
+ t, std::move(mapping.indirect_cursor), -1
+ );
+ co_return co_await resolve_cursor_to_mapping(
+ t,
+ ret_cursor);
}
TransactionManager::ref_iertr::future<