From: Casey Bodley Date: Thu, 11 Dec 2025 19:16:45 +0000 (-0500) Subject: neorados: NotifierHandler holds intrusive_ptr X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=72eb48e041820095d20a035627999ec3db781180;p=ceph.git neorados: NotifierHandler holds intrusive_ptr Signed-off-by: Casey Bodley --- diff --git a/src/neorados/RADOS.cc b/src/neorados/RADOS.cc index cea79e2fb012..7c3ca744ad73 100644 --- a/src/neorados/RADOS.cc +++ b/src/neorados/RADOS.cc @@ -1658,7 +1658,7 @@ struct NotifyHandler : std::enable_shared_from_this { asio::io_context& ioc; asio::strand strand; Objecter* objecter; - Objecter::LingerOp* op; + boost::intrusive_ptr op; RADOS::NotifyComp c; bool acked = false; @@ -1668,10 +1668,10 @@ struct NotifyHandler : std::enable_shared_from_this { NotifyHandler(asio::io_context& ioc, Objecter* objecter, - Objecter::LingerOp* op, + boost::intrusive_ptr op, RADOS::NotifyComp c) : ioc(ioc), strand(asio::make_strand(ioc)), - objecter(objecter), op(op), c(std::move(c)) {} + objecter(objecter), op(std::move(op)), c(std::move(c)) {} // Use bind or a lambda to pass this in. void handle_ack(bs::error_code ec, @@ -1702,7 +1702,7 @@ struct NotifyHandler : std::enable_shared_from_this { if (!res && ec) res = ec; if ((acked && finished) || res) { - objecter->linger_cancel(op); + objecter->linger_cancel(op.get()); ceph_assert(c); bc::flat_map, buffer::list> reply_map; bc::flat_set> missed_set;