]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
crimson/os/seastore: use do_with to avoid stack-use-after-return
authormyoungwon oh <ohmyoungwon@gmail.com>
Thu, 19 Feb 2026 05:01:22 +0000 (14:01 +0900)
committermyoungwon oh <ohmyoungwon@gmail.com>
Thu, 19 Feb 2026 07:32:40 +0000 (16:32 +0900)
Signed-off-by: Myoungwon Oh <ohmyoungwon@gmail.com>
src/crimson/os/seastore/seastore.cc

index 8a9ac3e8f9734ddcb98ccab8c193fdc3b2a3c952..20b04c64a2513f6ee78ea57e94acdba9864b809c 100644 (file)
@@ -1786,13 +1786,16 @@ SeaStore::Shard::_do_transaction_step(
        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();