From 7ebdbb767264bf5f6758f689ef8da18e2ca4213f Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Fri, 3 Aug 2018 13:41:30 -0500 Subject: [PATCH] osd: add peer_socket_addr to Session Signed-off-by: Sage Weil --- src/osd/OSD.cc | 9 +++------ src/osd/Session.h | 10 ++++++++-- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 5d7b2c3412a3a..c8078787df266 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 76b892c9dabcb..2ced429080452 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, -- 2.39.5