From: Sage Weil Date: Fri, 3 Aug 2018 18:41:30 +0000 (-0500) Subject: osd: add peer_socket_addr to Session X-Git-Tag: v14.0.1~601^2~12 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=7ebdbb767264bf5f6758f689ef8da18e2ca4213f;p=ceph.git osd: add peer_socket_addr to Session Signed-off-by: Sage Weil --- diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 5d7b2c3412a3..c8078787df26 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -5159,9 +5159,8 @@ void OSD::ms_handle_fast_connect(Connection *con) auto priv = con->get_priv(); auto s = static_cast(priv.get()); if (!s) { - s = new Session{cct}; + s = new Session{cct, con}; con->set_priv(RefCountedPtr{s, false}); - s->con = con; dout(10) << " new session (outgoing) " << s << " con=" << s->con << " addr=" << s->con->get_peer_addr() << dendl; // we don't connect to clients @@ -5178,9 +5177,8 @@ void OSD::ms_handle_fast_accept(Connection *con) auto priv = con->get_priv(); auto s = static_cast(priv.get()); if (!s) { - s = new Session{cct}; + s = new Session{cct, con}; con->set_priv(RefCountedPtr{s, false}); - s->con = con; dout(10) << "new session (incoming)" << s << " con=" << con << " addr=" << con->get_peer_addr() << " must have raced with connect" << dendl; @@ -6625,9 +6623,8 @@ bool OSD::ms_verify_authorizer( auto priv = con->get_priv(); auto s = static_cast(priv.get()); if (!s) { - s = new Session{cct}; + s = new Session{cct, con}; con->set_priv(RefCountedPtr{s, false}); - s->con = con; dout(10) << " new session " << s << " con=" << s->con << " addr=" << con->get_peer_addr() << dendl; } diff --git a/src/osd/Session.h b/src/osd/Session.h index 76b892c9dabc..2ced42908045 100644 --- a/src/osd/Session.h +++ b/src/osd/Session.h @@ -132,6 +132,7 @@ struct Session : public RefCountedObject { OSDCap caps; int64_t auid; ConnectionRef con; + entity_addr_t socket_addr; WatchConState wstate; Mutex session_dispatch_lock; @@ -149,15 +150,20 @@ struct Session : public RefCountedObject { std::atomic backoff_seq = {0}; - explicit Session(CephContext *cct) : + explicit Session(CephContext *cct, Connection *con_) : RefCountedObject(cct), - auid(-1), con(0), + auid(-1), con(con_), + socket_addr(con_->get_peer_socket_addr()), wstate(cct), session_dispatch_lock("Session::session_dispatch_lock"), last_sent_epoch(0), received_map_epoch(0), backoff_lock("Session::backoff_lock") {} + entity_addr_t& get_peer_socket_addr() { + return socket_addr; + } + void ack_backoff( CephContext *cct, spg_t pgid,