]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
MDSMon: Add mon_force_standby_active config option.
authorGreg Farnum <gregory.farnum@dreamhost.com>
Thu, 24 Mar 2011 23:52:06 +0000 (16:52 -0700)
committerGreg Farnum <gregory.farnum@dreamhost.com>
Thu, 24 Mar 2011 23:52:06 +0000 (16:52 -0700)
If this is set to true (which it defaults to), then the mon
will force MDSes configured as mds_standby_replay to become active.
For #893.

Signed-off-by: Greg Farnum <gregory.farnum@dreamhost.com>
src/common/config.cc
src/common/config.h
src/mds/MDSMap.h

index 0c9475cf5c16eb48d80cb7fa147dba7f884f0ac8..f441574befa3e2d4a522578fdff8cd5fd16bc349 100644 (file)
@@ -179,6 +179,7 @@ struct config_option config_optionsp[] = {
   OPTION(mon_osd_nearfull_ratio, 0, OPT_INT, 85), // what % full makes an OSD near full
   OPTION(mon_globalid_prealloc, 0, OPT_INT, 100),   // how many globalids to prealloc
   OPTION(mon_osd_report_timeout, 0, OPT_INT, 900),    // grace period before declaring unresponsive OSDs dead
+  OPTION(mon_force_standby_active, 0, OPT_BOOL, true), // should mons force standby-replay mds to be active
   OPTION(paxos_propose_interval, 0, OPT_DOUBLE, 1.0),  // gather updates for this long before proposing a map update
   OPTION(paxos_min_wait, 0, OPT_DOUBLE, 0.05),  // min time to gather updates for after period of inactivity
   OPTION(paxos_observer_timeout, 0, OPT_DOUBLE, 5*60), // gather updates for this long before proposing a map update
index a8b00a66b184772635bab5b3284acc1c05fad5dc..12fece6ee74aacae95aba513881e435f1db1e33d 100644 (file)
@@ -178,6 +178,8 @@ struct md_config_t
   int mon_globalid_prealloc;
   int mon_osd_report_timeout;
 
+  bool mon_force_standby_active;
+
   double paxos_propose_interval;
   double paxos_min_wait;
   double paxos_observer_timeout;
index 708844817dc6fa008c39cb420371de421245af2d..46160f98c1758b26c8c3970dad9a64da7d3cf93e 100644 (file)
@@ -347,7 +347,8 @@ public:
         ++p) {
       if (p->second.rank == -1 &&
          (p->second.standby_for_rank == MDS_NO_STANDBY_PREF ||
-          p->second.standby_for_rank == MDS_MATCHED_ACTIVE) &&
+          p->second.standby_for_rank == MDS_MATCHED_ACTIVE ||
+          (p->second.standby_for_rank == MDS_STANDBY_ANY && g_conf.mon_force_standby_active)) &&
          p->second.state == MDSMap::STATE_STANDBY &&
          !p->second.laggy()) {
        return p->first;