]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: add mds_standby_for_fscid config
authorJohn Spray <john.spray@redhat.com>
Tue, 22 Mar 2016 11:21:30 +0000 (11:21 +0000)
committerJohn Spray <john.spray@redhat.com>
Tue, 22 Mar 2016 12:08:49 +0000 (12:08 +0000)
...and pass it through into MMDSBeacon.

Signed-off-by: John Spray <john.spray@redhat.com>
src/common/config_opts.h
src/mds/Beacon.cc
src/mds/Beacon.h
src/mds/MDSDaemon.cc

index 3862b669f54dbf0566a4ba293db97ee93aad2a86..71efcba8787a579a6ad7f1cd0f1d87adb19ba7b5 100644 (file)
@@ -521,6 +521,7 @@ OPTION(mds_skip_ino, OPT_INT, 0)
 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
index 81de9e4c4c68b2528d5aa07e9077cfbf1881642c..16f20badc749af2a72531e4618ad74a091348ef0 100644 (file)
 
 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;
 }
 
@@ -52,7 +52,8 @@ Beacon::~Beacon()
 
 
 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);
@@ -61,6 +62,7 @@ void Beacon::init(MDSMap const *mdsmap, MDSMap::DaemonState want_state_,
   _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();
@@ -207,6 +209,7 @@ void Beacon::_send()
 
   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
index 29efb4ad586684e2516819c37e14b06718483df8..e8368cfe4715f6c708a7873d1d8bc7868cf768a2 100644 (file)
@@ -50,6 +50,7 @@ class Beacon : public Dispatcher
   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
@@ -85,7 +86,9 @@ public:
   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); 
@@ -96,8 +99,6 @@ public:
   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();
 
index 293d7c81f735f8ec72910afe01788a2d5b01eade..daa0cb0c18612025f820d81f7ef60ef6bba43bb9 100644 (file)
@@ -559,7 +559,9 @@ int MDSDaemon::init(MDSMap::DaemonState wanted_state)
   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