From: Greg Farnum Date: Fri, 21 Mar 2014 22:44:55 +0000 (-0700) Subject: OSD: pass a pointer to last_sent_epoch instead of the whole Session X-Git-Tag: v0.81~57^2~17 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=399e67f884bb81d7b51385f00e02426ff5148d3a;p=ceph.git OSD: pass a pointer to last_sent_epoch instead of the whole Session We don't use any other part of the Session, and this interface will be easier to move out of the OSD class. Signed-off-by: Greg Farnum --- diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 23b94090cfff..acd953511d3f 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -4653,7 +4653,8 @@ void OSD::forget_peer_epoch(int peer, epoch_t as_of) } bool OSD::_should_share_map(entity_name_t name, Connection *con, - epoch_t epoch, OSDMapRef& osdmap, Session *session) + epoch_t epoch, OSDMapRef& osdmap, + const epoch_t *sent_epoch_p) { bool should_send = false; dout(20) << "_should_share_map " @@ -4663,11 +4664,11 @@ bool OSD::_should_share_map(entity_name_t name, Connection *con, // does client have old map? if (name.is_client()) { bool message_sendmap = epoch < osdmap->get_epoch(); - if (message_sendmap && session) { + if (message_sendmap && sent_epoch_p) { dout(20) << "client session last_sent_epoch: " - << session->last_sent_epoch + << *sent_epoch_p << " versus osdmap epoch " << osdmap->get_epoch() << dendl; - if (session->last_sent_epoch < osdmap->get_epoch()) { + if (*sent_epoch_p < osdmap->get_epoch()) { should_send = true; } // else we don't need to send it out again } @@ -4697,7 +4698,7 @@ void OSD::_share_map_incoming( Connection *con, epoch_t epoch, OSDMapRef& osdmap, - Session* session) + epoch_t *sent_epoch_p) { dout(20) << "_share_map_incoming " << name << " " << con->get_peer_addr() @@ -4705,14 +4706,15 @@ void OSD::_share_map_incoming( assert(is_active()); - bool want_shared = _should_share_map(name, con, epoch, osdmap, session); + bool want_shared = _should_share_map(name, con, epoch, + osdmap, sent_epoch_p); if (want_shared){ if (name.is_client()) { dout(10) << name << " has old map " << epoch << " < " << osdmap->get_epoch() << dendl; // we know the Session is valid or we wouldn't be sending - session->last_sent_epoch = osdmap->get_epoch(); + *sent_epoch_p = osdmap->get_epoch(); send_incremental_map(epoch, con, osdmap); } else if (con->get_messenger() == cluster_messenger && osdmap->is_up(name.num()) && @@ -7491,7 +7493,7 @@ struct send_map_on_destruct { con.get(), map_epoch, osdmap, - client_session); + client_session ? &client_session->last_sent_epoch : NULL); if (client_session) { client_session->sent_epoch_lock.Unlock(); client_session->put(); @@ -7656,7 +7658,7 @@ void OSD::handle_replica_op(OpRequestRef op, OSDMapRef osdmap) _share_map_incoming( m->get_source(), m->get_connection().get(), m->map_epoch, osdmap, - peer_session); + NULL); if (peer_session) { peer_session->sent_epoch_lock.Unlock(); peer_session->put(); @@ -7804,8 +7806,7 @@ void OSD::dequeue_op( m->get_connection().get(), op->sent_epoch, osdmap, - session - ); + session ? &session->last_sent_epoch : NULL); if (session) { session->sent_epoch_lock.Unlock(); session->put(); diff --git a/src/osd/OSD.h b/src/osd/OSD.h index aedd5f6f77fb..7d22df6443fb 100644 --- a/src/osd/OSD.h +++ b/src/osd/OSD.h @@ -1343,9 +1343,9 @@ private: friend struct send_map_on_destruct; bool _should_share_map(entity_name_t name, Connection *con, epoch_t epoch, - OSDMapRef& osdmap, Session *session); + OSDMapRef& osdmap, const epoch_t *sent_epoch_p); void _share_map_incoming(entity_name_t name, Connection *con, epoch_t epoch, - OSDMapRef& osdmap, Session *session); + OSDMapRef& osdmap, epoch_t *sent_epoch_p); void _share_map_outgoing(int peer, Connection *con, OSDMapRef map = OSDMapRef());