]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds/FSMap: allow upgrade when no MDS is "in" 43891/head
authorPatrick Donnelly <pdonnell@redhat.com>
Tue, 9 Nov 2021 00:37:19 +0000 (19:37 -0500)
committerPatrick Donnelly <pdonnell@redhat.com>
Thu, 11 Nov 2021 15:39:00 +0000 (10:39 -0500)
Fixes: https://tracker.ceph.com/issues/52975
Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
(cherry picked from commit 9b8e3187ed491e4bcfdecbc82babb0bca835bad6)

src/mds/FSMap.cc
src/mds/FSMap.h

index e1026a677c442b003067f9dc2d402dc6b9d3d396..b8d3293ad42917b09d702273d86096b741b2b501 100644 (file)
@@ -923,6 +923,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;
@@ -948,11 +953,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 037c8246b3ab2116125b746df3faf26063694fcd..f985da39b64f9f278bf2912c7284b03f455809a5 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);
   }
 
   /**