]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: add peer_socket_addr to Session
authorSage Weil <sage@redhat.com>
Fri, 3 Aug 2018 18:41:30 +0000 (13:41 -0500)
committerSage Weil <sage@redhat.com>
Sun, 12 Aug 2018 22:01:05 +0000 (17:01 -0500)
Signed-off-by: Sage Weil <sage@redhat.com>
src/osd/OSD.cc
src/osd/Session.h

index 5d7b2c3412a3abea72bf8f86c46eb1cff37ee9ba..c8078787df266bb3b1c574858d5b06f717af467f 100644 (file)
@@ -5159,9 +5159,8 @@ void OSD::ms_handle_fast_connect(Connection *con)
     auto priv = con->get_priv();
     auto s = static_cast<Session*>(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<Session*>(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<Session*>(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;
     }
index 76b892c9dabcb6d59205e8e9cc23b11e5862a2b5..2ced4290804524b2126cfa822ef26a3a4f8b946a 100644 (file)
@@ -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<uint64_t> 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,