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: v16.2.7~38^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F43891%2Fhead;p=ceph.git mds/FSMap: allow upgrade when no MDS is "in" Fixes: https://tracker.ceph.com/issues/52975 Signed-off-by: Patrick Donnelly (cherry picked from commit 9b8e3187ed491e4bcfdecbc82babb0bca835bad6) --- diff --git a/src/mds/FSMap.cc b/src/mds/FSMap.cc index e1026a677c44..b8d3293ad429 100644 --- a/src/mds/FSMap.cc +++ b/src/mds/FSMap.cc @@ -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; } diff --git a/src/mds/FSMap.h b/src/mds/FSMap.h index 037c8246b3ab..f985da39b64f 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); } /**