]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
osd: OSD's public messenger respects public_bind_addrs
authorRadosław Zarzyński <rzarzyns@redhat.com>
Fri, 3 Feb 2023 22:12:28 +0000 (23:12 +0100)
committerRadosław Zarzyński <rzarzyns@redhat.com>
Mon, 20 Feb 2023 12:22:55 +0000 (13:22 +0100)
Fixes: https://tracker.ceph.com/issues/58779
Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
src/ceph_osd.cc

index a81322d00c7eae4d0e5fe552affd012ba8e7bef9..6428a0ed522e040e5f6eadc38585ee29c101b5ea 100644 (file)
@@ -614,12 +614,26 @@ flushjournal_out:
 
   ms_objecter->set_default_policy(Messenger::Policy::lossy_client(CEPH_FEATURE_OSDREPLYMUX));
 
-  entity_addrvec_t public_addrs, cluster_addrs;
+  entity_addrvec_t public_addrs, public_bind_addrs, cluster_addrs;
   r = pick_addresses(g_ceph_context, CEPH_PICK_ADDRESS_PUBLIC, &public_addrs,
                     iface_preferred_numa_node);
   if (r < 0) {
     derr << "Failed to pick public address." << dendl;
     forker.exit(1);
+  } else {
+    dout(10) << "picked public_addrs " << public_addrs << dendl;
+  }
+  r = pick_addresses(g_ceph_context, CEPH_PICK_ADDRESS_PUBLIC_BIND,
+                    &public_bind_addrs, iface_preferred_numa_node);
+  if (r == -ENOENT) {
+    dout(10) << "there is no public_bind_addrs, defaulting to public_addrs"
+            << dendl;
+    public_bind_addrs = public_addrs;
+  } else if (r < 0) {
+    derr << "Failed to pick public bind address." << dendl;
+    forker.exit(1);
+  } else {
+    dout(10) << "picked public_bind_addrs " << public_bind_addrs << dendl;
   }
   r = pick_addresses(g_ceph_context, CEPH_PICK_ADDRESS_CLUSTER, &cluster_addrs,
                     iface_preferred_numa_node);
@@ -628,8 +642,10 @@ flushjournal_out:
     forker.exit(1);
   }
 
-  if (ms_public->bindv(public_addrs) < 0)
+  if (ms_public->bindv(public_bind_addrs, public_addrs) < 0) {
+    derr << "Failed to bind to " << public_bind_addrs << dendl;
     forker.exit(1);
+  }
 
   if (ms_cluster->bindv(cluster_addrs) < 0)
     forker.exit(1);
@@ -642,7 +658,7 @@ flushjournal_out:
     ms_hb_front_server->set_socket_priority(SOCKET_PRIORITY_MIN_DELAY);
   }
 
-  entity_addrvec_t hb_front_addrs = public_addrs;
+  entity_addrvec_t hb_front_addrs = public_bind_addrs;
   for (auto& a : hb_front_addrs.v) {
     a.set_port(0);
   }