...and pass it through into MMDSBeacon.
Signed-off-by: John Spray <john.spray@redhat.com>
OPTION(max_mds, OPT_INT, 1)
OPTION(mds_standby_for_name, OPT_STR, "")
OPTION(mds_standby_for_rank, OPT_INT, -1)
+OPTION(mds_standby_for_fscid, OPT_INT, -1)
OPTION(mds_standby_replay, OPT_BOOL, false)
OPTION(mds_enable_op_tracker, OPT_BOOL, true) // enable/disable MDS op tracking
OPTION(mds_op_history_size, OPT_U32, 20) // Max number of completed ops to track
Beacon::Beacon(CephContext *cct_, MonClient *monc_, std::string name_) :
Dispatcher(cct_), lock("Beacon"), monc(monc_), timer(g_ceph_context, lock),
- name(name_), awaiting_seq(-1)
+ name(name_), standby_for_rank(MDSMap::MDS_NO_STANDBY_PREF),
+ standby_for_fscid(FS_CLUSTER_ID_NONE), awaiting_seq(-1)
{
want_state = MDSMap::STATE_NULL;
last_seq = 0;
sender = NULL;
was_laggy = false;
- standby_for_rank = MDSMap::MDS_NO_STANDBY_PREF;
epoch = 0;
}
void Beacon::init(MDSMap const *mdsmap, MDSMap::DaemonState want_state_,
- mds_rank_t standby_rank_, std::string const & standby_name_)
+ mds_rank_t standby_rank_, std::string const & standby_name_,
+ fs_cluster_id_t standby_fscid_)
{
Mutex::Locker l(lock);
assert(mdsmap != NULL);
_notify_mdsmap(mdsmap);
standby_for_rank = standby_rank_;
standby_for_name = standby_name_;
+ standby_for_fscid = standby_fscid_;
// Spawn threads and start messaging
timer.init();
beacon->set_standby_for_rank(standby_for_rank);
beacon->set_standby_for_name(standby_for_name);
+ beacon->set_standby_for_fscid(standby_for_fscid);
beacon->set_health(health);
beacon->set_compat(compat);
// piggyback the sys info on beacon msg
CompatSet compat;
mds_rank_t standby_for_rank;
std::string standby_for_name;
+ fs_cluster_id_t standby_for_fscid;
MDSMap::DaemonState want_state;
// Internal beacon state
Beacon(CephContext *cct_, MonClient *monc_, std::string name);
~Beacon();
- void init(MDSMap const *mdsmap, MDSMap::DaemonState want_state_, mds_rank_t standby_rank_, std::string const &standby_name_);
+ void init(MDSMap const *mdsmap, MDSMap::DaemonState want_state_,
+ mds_rank_t standby_rank_, std::string const &standby_name_,
+ fs_cluster_id_t standby_fscid_);
void shutdown();
bool ms_dispatch(Message *m);
void notify_mdsmap(MDSMap const *mdsmap);
void notify_health(MDSRank const *mds);
- void set_standby_for(mds_rank_t rank_, std::string const &name_);
-
void handle_mds_beacon(MMDSBeacon *m);
void send();
if (wanted_state == MDSMap::STATE_NULL) {
wanted_state = MDSMap::STATE_BOOT;
}
- beacon.init(mdsmap, wanted_state, standby_for_rank, standby_for_name);
+ beacon.init(mdsmap, wanted_state,
+ standby_for_rank, standby_for_name,
+ fs_cluster_id_t(g_conf->mds_standby_for_fscid));
messenger->set_myname(entity_name_t::MDS(MDS_RANK_NONE));
// schedule tick