const auto& info = fsmap.get_info_gid(gid);
dout(1) << "fail_mds_gid " << gid << " mds." << info.name << " role " << info.rank << dendl;
+ if (info.is_frozen()) {
+ dout(1) << "mds is frozen" << dendl;
+ return false;
+ }
+
ceph_assert(mon.osdmon()->is_writeable());
epoch_t blocklist_epoch = 0;
} else if (in > max) {
mds_rank_t target = in - 1;
const auto &info = mds_map.get_info(target);
- if (mds_map.is_active(target)) {
+ if (info.is_frozen()) {
+ dout(1) << "highest rank is frozen" << dendl;
+ return false;
+ } else if (mds_map.is_active(target)) {
dout(1) << "stopping " << target << dendl;
mon.clog->info() << "stopping " << info.human_name();
auto f = [](auto& info) {