if (op->hint & CEPH_OSD_ALLOC_HINT_FLAG_LOG) {
ceph_assert(get_omap_root(omap_type_t::LOG, *onode).is_null());
ceph_assert(get_omap_root(omap_type_t::OMAP, *onode).is_null());
- auto mgr = crimson::os::seastore::log_manager::LogManager(*transaction_manager);
- return mgr.initialize_omap(
- *ctx.transaction,
- onode->get_metadata_hint(device->get_block_size()),
- omap_type_t::LOG
- ).si_then([&onode, &ctx](auto new_root) {
- onode->update_omap_root(*ctx.transaction, new_root);
+ return seastar::do_with(
+ crimson::os::seastore::log_manager::LogManager(*transaction_manager),
+ [&onode, &ctx, this](auto& mgr) {
+ return mgr.initialize_omap(
+ *ctx.transaction,
+ onode->get_metadata_hint(device->get_block_size()),
+ omap_type_t::LOG
+ ).si_then([&onode, &ctx](auto new_root) {
+ onode->update_omap_root(*ctx.transaction, new_root);
+ });
});
}
return tm_iertr::now();