From ad9bc306f4c970135904c891e70b91c2302dd497 Mon Sep 17 00:00:00 2001 From: Samuel Just Date: Wed, 21 Aug 2019 15:06:43 -0700 Subject: [PATCH] src/osd/: Move session variables out of if for backport That construction isn't allowed in luminous. Signed-off-by: Samuel Just --- src/mds/MDSDaemon.cc | 6 ++++-- src/osd/OSD.cc | 30 +++++++++++++++++++----------- src/osd/Watch.cc | 3 ++- src/test/msgr/test_msgr.cc | 6 ++++-- 4 files changed, 29 insertions(+), 16 deletions(-) diff --git a/src/mds/MDSDaemon.cc b/src/mds/MDSDaemon.cc index a16c8caf86d..dce45a6feeb 100644 --- a/src/mds/MDSDaemon.cc +++ b/src/mds/MDSDaemon.cc @@ -1257,7 +1257,8 @@ bool MDSDaemon::ms_handle_reset(Connection *con) return false; auto priv = con->get_priv(); - if (auto session = static_cast(priv.get()); session) { + auto session = static_cast(priv.get()); + if (session) { if (session->is_closed()) { dout(3) << "ms_handle_reset closing connection for session " << session->info.inst << dendl; con->mark_down(); @@ -1285,7 +1286,8 @@ void MDSDaemon::ms_handle_remote_reset(Connection *con) return; auto priv = con->get_priv(); - if (auto session = static_cast(priv.get()); session) { + auto session = static_cast(priv.get()); + if (session) { if (session->is_closed()) { dout(3) << "ms_handle_remote_reset closing connection for session " << session->info.inst << dendl; con->mark_down(); diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index ea8ed5d30e8..2216d2baf82 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -6114,7 +6114,8 @@ void OSD::_send_boot() cluster_messenger->set_addr_unknowns(cluster_addr); dout(10) << " assuming cluster_addr ip matches client_addr" << dendl; } else { - if (auto session = local_connection->get_priv(); !session) { + auto session = local_connection->get_priv(); + if (!session) { cluster_messenger->ms_deliver_handle_fast_connect(local_connection); } } @@ -6128,7 +6129,8 @@ void OSD::_send_boot() hb_back_server_messenger->set_addr_unknowns(hb_back_addr); dout(10) << " assuming hb_back_addr ip matches cluster_addr" << dendl; } else { - if (auto session = local_connection->get_priv(); !session) { + auto session = local_connection->get_priv(); + if (!session) { hb_back_server_messenger->ms_deliver_handle_fast_connect(local_connection); } } @@ -6142,7 +6144,8 @@ void OSD::_send_boot() hb_front_server_messenger->set_addr_unknowns(hb_front_addr); dout(10) << " assuming hb_front_addr ip matches client_addr" << dendl; } else { - if (auto session = local_connection->get_priv(); !session) { + auto session = local_connection->get_priv(); + if (!session) { hb_front_server_messenger->ms_deliver_handle_fast_connect(local_connection); } } @@ -7254,7 +7257,8 @@ void OSD::ms_fast_dispatch(Message *m) // message that didn't have an explicit spg_t); we need to map // them to an spg_t while preserving delivery order. auto priv = m->get_connection()->get_priv(); - if (auto session = static_cast(priv.get()); session) { + auto session = static_cast(priv.get()); + if (session) { Mutex::Locker l{session->session_dispatch_lock}; op->get(); session->waiting_on_map.push_back(*op); @@ -7272,7 +7276,8 @@ void OSD::ms_fast_preprocess(Message *m) if (m->get_type() == CEPH_MSG_OSD_MAP) { MOSDMap *mm = static_cast(m); auto priv = m->get_connection()->get_priv(); - if (auto s = static_cast(priv.get()); s) { + auto s = static_cast(priv.get()); + if (s) { s->received_map_lock.lock(); s->received_map_epoch = mm->get_last(); s->received_map_lock.unlock(); @@ -7891,8 +7896,8 @@ void OSD::handle_osd_map(MOSDMap *m) } auto priv = m->get_connection()->get_priv(); - if (auto session = static_cast(priv.get()); - session && !(session->entity_name.is_mon() || + auto session = static_cast(priv.get()); + if (session && !(session->entity_name.is_mon() || session->entity_name.is_osd())) { //not enough perms! dout(10) << "got osd map from Session " << session @@ -8680,7 +8685,8 @@ bool OSD::require_same_peer_instance(const Message *m, OSDMapRef& map, ConnectionRef con = m->get_connection(); con->mark_down(); auto priv = con->get_priv(); - if (auto s = static_cast(priv.get()); s) { + auto s = static_cast(priv.get()); + if (s) { if (!is_fast_dispatch) s->session_dispatch_lock.Lock(); clear_session_waiting_on_map(s); @@ -9860,7 +9866,8 @@ void OSD::dequeue_op( logger->tinc(l_osd_op_before_dequeue_op_lat, latency); auto priv = op->get_req()->get_connection()->get_priv(); - if (auto session = static_cast(priv.get()); session) { + auto session = static_cast(priv.get()); + if (session) { maybe_share_map(session, op, pg->get_osdmap()); } @@ -10606,8 +10613,9 @@ void OSD::ShardedOpWQ::_process(uint32_t thread_index, heartbeat_handle_d *hb) // share map with client? if (boost::optional _op = qi->maybe_get_op()) { auto priv = (*_op)->get_req()->get_connection()->get_priv(); - if (auto session = static_cast(priv.get()); session) { - osd->maybe_share_map(session, *_op, sdata->shard_osdmap); + auto session = static_cast(priv.get()); + if (session) { + osd->maybe_share_map(session, *_op, sdata->waiting_for_pg_osdmap); } } unsigned pushes_to_free = qi->get_reserved_pushes(); diff --git a/src/osd/Watch.cc b/src/osd/Watch.cc index 800b3c07b24..92bce429695 100644 --- a/src/osd/Watch.cc +++ b/src/osd/Watch.cc @@ -416,7 +416,8 @@ void Watch::discard_state() unregister_cb(); discarded = true; if (conn) { - if (auto priv = conn->get_priv(); priv) { + auto priv = conn->get_priv(); + if (priv) { auto session = static_cast(priv.get()); session->wstate.removeWatch(self.lock()); } diff --git a/src/test/msgr/test_msgr.cc b/src/test/msgr/test_msgr.cc index c40feb1bb5a..b6c9736740a 100644 --- a/src/test/msgr/test_msgr.cc +++ b/src/test/msgr/test_msgr.cc @@ -154,7 +154,8 @@ class FakeDispatcher : public Dispatcher { Mutex::Locker l(lock); lderr(g_ceph_context) << __func__ << " " << con << dendl; auto priv = con->get_priv(); - if (auto s = static_cast(priv.get()); s) { + auto s = static_cast(priv.get()); + if (s) { s->con.reset(); // break con <-> session ref cycle con->set_priv(nullptr); // break ref <-> session cycle, if any } @@ -164,7 +165,8 @@ class FakeDispatcher : public Dispatcher { Mutex::Locker l(lock); lderr(g_ceph_context) << __func__ << " " << con << dendl; auto priv = con->get_priv(); - if (auto s = static_cast(priv.get()); s) { + auto s = static_cast(priv.get()); + if (s) { s->con.reset(); // break con <-> session ref cycle con->set_priv(nullptr); // break ref <-> session cycle, if any } -- 2.47.3