]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds/FSMap: allow upgrade when no MDS is "in" 43851/head
authorPatrick Donnelly <pdonnell@redhat.com>
Tue, 9 Nov 2021 00:37:19 +0000 (19:37 -0500)
committerPatrick Donnelly <pdonnell@redhat.com>
Tue, 9 Nov 2021 01:06:18 +0000 (20:06 -0500)
Fixes: https://tracker.ceph.com/issues/52975
Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
src/mds/FSMap.cc
src/mds/FSMap.h

index e258cc139ada41a2b684299f83c355f8d1ea5aec..8c1cdfbc0fc761391fc179fe4267a8bd2824cd53 100644 (file)
@@ -933,6 +933,11 @@ void FSMap::promote(
   }
   auto& info = mds_map.mds_info.at(standby_gid);
 
+  if (!filesystem.mds_map.compat.writeable(info.compat)) {
+    ceph_assert(filesystem.is_upgradeable());
+    filesystem.mds_map.compat.merge(info.compat);
+  }
+
   if (mds_map.stopped.erase(assigned_rank)) {
     // The cluster is being expanded with a stopped rank
     info.state = MDSMap::STATE_STARTING;
@@ -958,11 +963,6 @@ void FSMap::promote(
     standby_epochs.erase(standby_gid);
   }
 
-  if (!filesystem.mds_map.compat.writeable(info.compat)) {
-    ceph_assert(filesystem.is_upgradeable());
-    filesystem.mds_map.compat.merge(info.compat);
-  }
-
   // Indicate that Filesystem has been modified
   mds_map.epoch = epoch;
 }
index 197d5141c17d520c3f1449bd7dbd46917f427cb4..099c1337ceb864b1da9e30a71bab8d550e60284a 100644 (file)
@@ -189,7 +189,8 @@ public:
   void print(std::ostream& out) const;
 
   bool is_upgradeable() const {
-    return !mds_map.allows_standby_replay() && mds_map.get_num_in_mds() <= 1;
+    return (mds_map.allows_standby_replay() && mds_map.get_num_in_mds() == 0)
+       || (!mds_map.allows_standby_replay() && mds_map.get_num_in_mds() <= 1);
   }
 
   /**