]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
Make mon addrs consistent with mon info 60751/head
authorshenjiatong <yshxxsjt715@163.com>
Sat, 2 Nov 2024 08:10:38 +0000 (16:10 +0800)
committerIlya Dryomov <idryomov@gmail.com>
Fri, 15 Nov 2024 08:50:18 +0000 (09:50 +0100)
For legacy librbd clients, sanitize_mons will panic if addrs are not
consistent with mon_info_t.

Signed-off-by: shenjiatong <yshxxsjt715@163.com>
fixes: https://tracker.ceph.com/issues/68743
(cherry picked from commit 14b09519739f3b2dc715647fd0f04dd22c17aeb3)

src/mon/MonMap.cc

index 6eb37df171a9086afea3e9ebbaf19dcc47f38dc8..28681a5e411224bd73edc5351dc395980f7799a7 100644 (file)
@@ -196,7 +196,12 @@ void MonMap::encode(ceph::buffer::list& blist, uint64_t con_features) const
   if (!HAVE_FEATURE(con_features, MONENC) ||
       !HAVE_FEATURE(con_features, SERVER_NAUTILUS)) {
     for (auto& [name, info] : mon_info) {
-      legacy_mon_addr[name] = info.public_addrs.legacy_addr();
+      // see note in mon_info_t::encode()
+      auto addr = info.public_addrs.legacy_addr();
+      if (addr == entity_addr_t()) {
+        addr = info.public_addrs.as_legacy_addr();
+      }
+      legacy_mon_addr[name] = addr;
     }
   }