Skip to content

Commit

Permalink
mds/FSMap: remove support for encoding jewel FSMap
Browse files Browse the repository at this point in the history
Signed-off-by: Sage Weil <[email protected]>
  • Loading branch information
liewegas committed Apr 2, 2019
1 parent ce7e0b1 commit 1678753
Showing 1 changed file with 21 additions and 59 deletions.
80 changes: 21 additions & 59 deletions src/mds/FSMap.cc
Original file line number Diff line number Diff line change
Expand Up @@ -283,17 +283,10 @@ Filesystem::ref FSMap::create_filesystem(std::string_view name,
fs->mds_map.created = ceph_clock_now();
fs->mds_map.modified = ceph_clock_now();
fs->mds_map.enabled = true;
if (features & CEPH_FEATURE_SERVER_JEWEL) {
fs->fscid = next_filesystem_id++;
// ANONYMOUS is only for upgrades from legacy mdsmaps, we should
// have initialized next_filesystem_id such that it's never used here.
ceph_assert(fs->fscid != FS_CLUSTER_ID_ANONYMOUS);
} else {
// Use anon fscid because this will get thrown away when encoding
// as legacy MDSMap for legacy mons.
ceph_assert(filesystems.empty());
fs->fscid = FS_CLUSTER_ID_ANONYMOUS;
}
fs->fscid = next_filesystem_id++;
// ANONYMOUS is only for upgrades from legacy mdsmaps, we should
// have initialized next_filesystem_id such that it's never used here.
ceph_assert(fs->fscid != FS_CLUSTER_ID_ANONYMOUS);
filesystems[fs->fscid] = fs;

// Created first filesystem? Set it as the one
Expand Down Expand Up @@ -418,54 +411,23 @@ void FSMap::get_health_checks(health_check_map_t *checks) const

void FSMap::encode(bufferlist& bl, uint64_t features) const
{
if (features & CEPH_FEATURE_SERVER_JEWEL) {
ENCODE_START(7, 6, bl);
encode(epoch, bl);
encode(next_filesystem_id, bl);
encode(legacy_client_fscid, bl);
encode(compat, bl);
encode(enable_multiple, bl);
{
std::vector<Filesystem::ref> v;
v.reserve(filesystems.size());
for (auto& p : filesystems) v.emplace_back(p.second);
encode(v, bl, features);
}
encode(mds_roles, bl);
encode(standby_daemons, bl, features);
encode(standby_epochs, bl);
encode(ever_enabled_multiple, bl);
ENCODE_FINISH(bl);
} else {
if (filesystems.empty()) {
MDSMap disabled_map;
disabled_map.epoch = epoch;
disabled_map.encode(bl, features);
} else {
// MDSMonitor should never have created multiple filesystems
// until the quorum features indicated Jewel
ceph_assert(filesystems.size() == 1);
auto fs = filesystems.begin()->second;

// Take the MDSMap for the enabled filesystem, and populated its
// mds_info with the standbys to get a pre-jewel-style mon MDSMap.
MDSMap full_mdsmap = fs->mds_map;
full_mdsmap.epoch = epoch;
for (const auto &p : standby_daemons) {
full_mdsmap.mds_info[p.first] = p.second;
}

// Old MDSMaps don't set rank on standby replay daemons
for (auto &i : full_mdsmap.mds_info) {
auto &info = i.second;
if (info.state == MDSMap::STATE_STANDBY_REPLAY) {
info.rank = MDS_RANK_NONE;
}
}

full_mdsmap.encode(bl, features);
}
}
ENCODE_START(7, 6, bl);
encode(epoch, bl);
encode(next_filesystem_id, bl);
encode(legacy_client_fscid, bl);
encode(compat, bl);
encode(enable_multiple, bl);
{
std::vector<Filesystem::ref> v;
v.reserve(filesystems.size());
for (auto& p : filesystems) v.emplace_back(p.second);
encode(v, bl, features);
}
encode(mds_roles, bl);
encode(standby_daemons, bl, features);
encode(standby_epochs, bl);
encode(ever_enabled_multiple, bl);
ENCODE_FINISH(bl);
}

void FSMap::decode(bufferlist::const_iterator& p)
Expand Down

0 comments on commit 1678753

Please sign in to comment.