#ifndef CEPH_FSMAP_H
#define CEPH_FSMAP_H
+#include <map>
+#include <set>
+#include <string>
+#include <boost/utility/string_view.hpp>
+
#include <errno.h>
#include "include/types.h"
#include "msg/Message.h"
#include "mds/MDSMap.h"
-#include <set>
-#include <map>
-#include <string>
-
#include "common/config.h"
#include "include/CompatSet.h"
class CephContext;
class health_check_map_t;
-#define MDS_FEATURE_INCOMPAT_BASE CompatSet::Feature(1, "base v0.20")
-#define MDS_FEATURE_INCOMPAT_CLIENTRANGES CompatSet::Feature(2, "client writeable ranges")
-#define MDS_FEATURE_INCOMPAT_FILELAYOUT CompatSet::Feature(3, "default file layouts on dirs")
-#define MDS_FEATURE_INCOMPAT_DIRINODE CompatSet::Feature(4, "dir inode in separate object")
-#define MDS_FEATURE_INCOMPAT_ENCODING CompatSet::Feature(5, "mds uses versioned encoding")
-#define MDS_FEATURE_INCOMPAT_OMAPDIRFRAG CompatSet::Feature(6, "dirfrag is stored in omap")
-#define MDS_FEATURE_INCOMPAT_INLINE CompatSet::Feature(7, "mds uses inline data")
-#define MDS_FEATURE_INCOMPAT_NOANCHOR CompatSet::Feature(8, "no anchor table")
-
#define MDS_FS_NAME_DEFAULT "cephfs"
/**
standby_daemons(rhs.standby_daemons),
standby_epochs(rhs.standby_epochs)
{
+ filesystems.clear();
for (const auto &i : rhs.filesystems) {
const auto &fs = i.second;
filesystems[fs->fscid] = std::make_shared<Filesystem>(*fs);
standby_daemons = rhs.standby_daemons;
standby_epochs = rhs.standby_epochs;
+ filesystems.clear();
for (const auto &i : rhs.filesystems) {
const auto &fs = i.second;
filesystems[fs->fscid] = std::make_shared<Filesystem>(*fs);
/**
* Resolve daemon name to GID
*/
- mds_gid_t find_mds_gid_by_name(const std::string& s) const
+ mds_gid_t find_mds_gid_by_name(boost::string_view s) const
{
const auto info = get_mds_info();
for (const auto &p : info) {
/**
* Resolve daemon name to status
*/
- const MDSMap::mds_info_t* find_by_name(const std::string& name) const
+ const MDSMap::mds_info_t* find_by_name(boost::string_view name) const
{
std::map<mds_gid_t, MDSMap::mds_info_t> result;
for (const auto &i : standby_daemons) {
* Caller must already have validated all arguments vs. the existing
* FSMap and OSDMap contents.
*/
- void create_filesystem(const std::string &name,
+ void create_filesystem(boost::string_view name,
int64_t metadata_pool, int64_t data_pool,
uint64_t features);
bool filesystem_exists(fs_cluster_id_t fscid) const {return filesystems.count(fscid) > 0;}
std::shared_ptr<const Filesystem> get_filesystem(fs_cluster_id_t fscid) const {return std::const_pointer_cast<const Filesystem>(filesystems.at(fscid));}
std::shared_ptr<const Filesystem> get_filesystem(void) const {return std::const_pointer_cast<const Filesystem>(filesystems.begin()->second);}
- std::shared_ptr<const Filesystem> get_filesystem(const std::string &name) const
+ std::shared_ptr<const Filesystem> get_filesystem(boost::string_view name) const
{
for (const auto &i : filesystems) {
if (i.second->mds_map.fs_name == name) {
}
int parse_filesystem(
- std::string const &ns_str,
+ boost::string_view ns_str,
std::shared_ptr<const Filesystem> *result
) const;
int parse_role(
- const std::string &role_str,
+ boost::string_view role_str,
mds_role_t *role,
std::ostream &ss) const;
return false;
}
- mds_gid_t find_standby_for(mds_role_t mds, const std::string& name) const;
+ mds_gid_t find_standby_for(mds_role_t mds, boost::string_view name) const;
mds_gid_t find_unused_for(mds_role_t mds, bool force_standby_active) const;
- mds_gid_t find_replacement_for(mds_role_t mds, const std::string& name,
+ mds_gid_t find_replacement_for(mds_role_t mds, boost::string_view name,
bool force_standby_active) const;
void get_health(list<pair<health_status_t,std::string> >& summary,