From: Patrick Donnelly Date: Tue, 9 Nov 2021 00:37:19 +0000 (-0500) Subject: mds/FSMap: allow upgrade when no MDS is "in" X-Git-Tag: v17.1.0~460^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=9b8e3187ed491e4bcfdecbc82babb0bca835bad6;p=ceph.git mds/FSMap: allow upgrade when no MDS is "in" Fixes: https://tracker.ceph.com/issues/52975 Signed-off-by: Patrick Donnelly --- diff --git a/src/mds/FSMap.cc b/src/mds/FSMap.cc index e258cc139ada4..8c1cdfbc0fc76 100644 --- a/src/mds/FSMap.cc +++ b/src/mds/FSMap.cc @@ -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; } diff --git a/src/mds/FSMap.h b/src/mds/FSMap.h index 197d5141c17d5..099c1337ceb86 100644 --- a/src/mds/FSMap.h +++ b/src/mds/FSMap.h @@ -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); } /**