]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
ceph-osd: use new bindv()
authorSage Weil <sage@redhat.com>
Mon, 4 Jun 2018 21:49:25 +0000 (16:49 -0500)
committerSage Weil <sage@redhat.com>
Tue, 3 Jul 2018 18:01:24 +0000 (13:01 -0500)
Rely on the new and improved pick_addresses() to produce an addrvec of
addresses we should bind to.

Signed-off-by: Sage Weil <sage@redhat.com>
src/ceph_osd.cc

index 1a8398b154dbe2e4b6e293b79ed5475e48f26330..3e2b67c0f915db8320436999c6472d7f324299a3 100644 (file)
@@ -470,20 +470,6 @@ flushjournal_out:
     forker.exit(0);
   }
 
-  pick_addresses(g_ceph_context, CEPH_PICK_ADDRESS_PUBLIC
-                                |CEPH_PICK_ADDRESS_CLUSTER);
-
-  entity_addr_t paddr = g_conf->get_val<entity_addr_t>("public_addr");
-  entity_addr_t caddr = g_conf->get_val<entity_addr_t>("cluster_addr");
-
-
-  if (paddr.is_blank_ip() && !caddr.is_blank_ip()) {
-    derr << TEXT_YELLOW
-        << " ** WARNING: specified cluster addr but not public addr; we recommend **\n"
-        << " **          you specify neither or both.                             **"
-        << TEXT_NORMAL << dendl;
-  }
-
   std::string msg_type = g_conf->get_val<std::string>("ms_type");
   std::string public_msg_type =
     g_conf->get_val<std::string>("ms_public_type");
@@ -526,7 +512,6 @@ flushjournal_out:
   ms_hb_front_server->set_cluster_protocol(CEPH_OSD_PROTOCOL);
 
   cout << "starting osd." << whoami
-       << " at " << ms_public->get_myaddr()
        << " osd_data " << data_path
        << " " << ((journal_path.empty()) ?
                  "(no journal)" : journal_path)
@@ -574,10 +559,14 @@ flushjournal_out:
 
   ms_objecter->set_default_policy(Messenger::Policy::lossy_client(CEPH_FEATURE_OSDREPLYMUX));
 
-  if (ms_public->bind(paddr) < 0)
+  entity_addrvec_t public_addrs, cluster_addrs;
+  pick_addresses(g_ceph_context, CEPH_PICK_ADDRESS_PUBLIC, &public_addrs);
+  pick_addresses(g_ceph_context, CEPH_PICK_ADDRESS_CLUSTER, &cluster_addrs);
+
+  if (ms_public->bindv(public_addrs) < 0)
     forker.exit(1);
 
-  if (ms_cluster->bind(caddr) < 0)
+  if (ms_cluster->bindv(cluster_addrs) < 0)
     forker.exit(1);
 
   bool is_delay = g_conf->get_val<bool>("osd_heartbeat_use_min_delay_socket");
@@ -588,23 +577,22 @@ flushjournal_out:
     ms_hb_front_server->set_socket_priority(SOCKET_PRIORITY_MIN_DELAY);
   }
 
-  // hb back should bind to same ip as cluster_addr (if specified)
-  entity_addr_t haddr = caddr;
-  if (haddr.is_ip())
-    haddr.set_port(0);
-
-  if (ms_hb_back_server->bind(haddr) < 0)
+  entity_addrvec_t hb_front_addrs = public_addrs;
+  for (auto& a : hb_front_addrs.v) {
+    a.set_port(0);
+  }
+  if (ms_hb_front_server->bindv(hb_front_addrs) < 0)
     forker.exit(1);
-  if (ms_hb_back_client->client_bind(haddr) < 0)
+  if (ms_hb_front_client->client_bind(hb_front_addrs.front()) < 0)
     forker.exit(1);
 
-  // hb front should bind to same ip as public_addr
-  entity_addr_t hb_front_addr = paddr;
-  if (hb_front_addr.is_ip())
-    hb_front_addr.set_port(0);
-  if (ms_hb_front_server->bind(hb_front_addr) < 0)
+  entity_addrvec_t hb_back_addrs = cluster_addrs;
+  for (auto& a : hb_back_addrs.v) {
+    a.set_port(0);
+  }
+  if (ms_hb_back_server->bindv(hb_back_addrs) < 0)
     forker.exit(1);
-  if (ms_hb_front_client->client_bind(hb_front_addr) < 0)
+  if (ms_hb_back_client->client_bind(hb_back_addrs.front()) < 0)
     forker.exit(1);
 
   // install signal handlers