]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/net: use target_addr to store the address to reconnect
authorYingxin Cheng <yingxin.cheng@intel.com>
Tue, 16 Jul 2019 08:29:30 +0000 (16:29 +0800)
committerYingxin Cheng <yingxin.cheng@intel.com>
Wed, 17 Jul 2019 08:37:04 +0000 (16:37 +0800)
With lossless policy, we will use target_addr to reconnect to peer,
which would be more useful when we switch to entity_addrvec_t.

Signed-off-by: Yingxin Cheng <yingxin.cheng@intel.com>
src/crimson/net/ProtocolV1.cc
src/crimson/net/ProtocolV2.cc

index 0c28ff47949275b28f6e5aa5ac06cb7acc059063..586b8bd1839fb9be9ab89193f0da1be5d864a3f3 100644 (file)
@@ -329,6 +329,7 @@ void ProtocolV1::start_connect(const entity_addr_t& _peer_addr,
   conn.set_ephemeral_port(0, SocketConnection::side_t::none);
   ceph_assert(!socket);
   conn.peer_addr = _peer_addr;
+  conn.target_addr = _peer_addr;
   conn.set_peer_type(_peer_type);
   conn.policy = messenger.get_policy(_peer_type);
   messenger.register_conn(
@@ -609,19 +610,19 @@ void ProtocolV1::start_accept(SocketFRef&& sock,
   set_write_state(write_state_t::delay);
 
   ceph_assert(!socket);
-  conn.peer_addr.u = _peer_addr.u;
-  conn.peer_addr.set_port(0);
+  // until we know better
+  conn.target_addr = _peer_addr;
   conn.set_ephemeral_port(_peer_addr.get_port(),
                           SocketConnection::side_t::acceptor);
   socket = std::move(sock);
   messenger.accept_conn(
     seastar::static_pointer_cast<SocketConnection>(conn.shared_from_this()));
-  seastar::with_gate(pending_dispatch, [this, _peer_addr] {
+  seastar::with_gate(pending_dispatch, [this] {
       // encode/send server's handshake header
       bufferlist bl;
       bl.append(buffer::create_static(banner_size, banner));
       ::encode(messenger.get_myaddr(), bl, 0);
-      ::encode(_peer_addr, bl, 0);
+      ::encode(conn.target_addr, bl, 0);
       return socket->write_flush(std::move(bl))
         .then([this] {
           // read client's handshake header and connect request
@@ -632,9 +633,8 @@ void ProtocolV1::start_accept(SocketFRef&& sock,
           entity_addr_t addr;
           ::decode(addr, p);
           ceph_assert(p.end());
-          conn.peer_addr.set_type(addr.get_type());
-          conn.peer_addr.set_port(addr.get_port());
-          conn.peer_addr.set_nonce(addr.get_nonce());
+          conn.peer_addr = addr;
+          conn.target_addr = conn.peer_addr;
           return seastar::repeat([this] {
             return repeat_handle_connect();
           });
index 87e0c1cbda01c843c4eadbacaa5f6aebf5ec0b02..7bc9a2565a82124ca7d8aeca217979ed8dfff2a2 100644 (file)
@@ -147,11 +147,12 @@ void ProtocolV2::start_accept(SocketFRef&& sock,
 {
   ceph_assert(state == state_t::NONE);
   ceph_assert(!socket);
+  // until we know better
   conn.target_addr = _peer_addr;
   conn.set_ephemeral_port(_peer_addr.get_port(),
                           SocketConnection::side_t::acceptor);
   socket = std::move(sock);
-  logger().info("{} ProtocolV2::start_accept(): peer_addr={}", conn, _peer_addr);
+  logger().info("{} ProtocolV2::start_accept(): target_addr={}", conn, _peer_addr);
   messenger.accept_conn(
     seastar::static_pointer_cast<SocketConnection>(conn.shared_from_this()));
   execute_accepting();
@@ -1073,10 +1074,7 @@ seastar::future<bool> ProtocolV2::server_connect()
     }
     // TODO: change peer_addr to entity_addrvec_t
     entity_addr_t paddr = client_ident.addrs().front();
-    conn.peer_addr = conn.target_addr;
-    conn.peer_addr.set_type(paddr.get_type());
-    conn.peer_addr.set_port(paddr.get_port());
-    conn.peer_addr.set_nonce(paddr.get_nonce());
+    conn.peer_addr = paddr;
     logger().debug("{} UPDATE: peer_addr={}", conn, conn.peer_addr);
     conn.target_addr = conn.peer_addr;