From: Matan Breizman Date: Thu, 15 Jun 2023 15:12:27 +0000 (+0000) Subject: osd/OSD: maybe_share_map() use scope guard X-Git-Tag: v19.0.0~988^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=a936b581f5a4f03df3e98df84233b84d908f2bb3;p=ceph.git osd/OSD: maybe_share_map() use scope guard Signed-off-by: Matan Breizman --- diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 6db41bd609c..7487653d558 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -7293,27 +7293,29 @@ void OSDService::maybe_share_map( // assume the peer has the newer of the op's sent_epoch and what // we think we sent them. - session->projected_epoch_lock.lock(); - if (peer_epoch_lb > session->projected_epoch) { - dout(10) << __func__ << " con " << con - << " " << con->get_peer_addr() - << " map epoch " << session->projected_epoch - << " -> " << peer_epoch_lb << " (as per caller)" << dendl; - session->projected_epoch = peer_epoch_lb; - } + epoch_t send_from = 0; + { + std::lock_guard l(session->projected_epoch_lock); - if (osdmap->get_epoch() <= session->projected_epoch) { - session->projected_epoch_lock.unlock(); - return; - } + if (peer_epoch_lb > session->projected_epoch) { + dout(10) << __func__ << " con " << con + << " " << con->get_peer_addr() + << " map epoch " << session->projected_epoch + << " -> " << peer_epoch_lb << " (as per caller)" << dendl; + session->projected_epoch = peer_epoch_lb; + } - const epoch_t send_from = session->projected_epoch; + if (osdmap->get_epoch() <= session->projected_epoch) { + return; + } + + send_from = session->projected_epoch; dout(10) << __func__ << " con " << con - << " " << con->get_peer_addr() - << " map epoch " << session->projected_epoch - << " -> " << osdmap->get_epoch() << " (shared)" << dendl; - session->projected_epoch = osdmap->get_epoch(); - session->projected_epoch_lock.unlock(); + << " " << con->get_peer_addr() + << " map epoch " << session->projected_epoch + << " -> " << osdmap->get_epoch() << " (shared)" << dendl; + session->projected_epoch = osdmap->get_epoch(); + } send_incremental_map(send_from, con, osdmap); }