]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: maintain stretch_recovery_triggered in new OSDMon::set_*_stretch_mode
authorGreg Farnum <gfarnum@redhat.com>
Tue, 13 Apr 2021 05:28:31 +0000 (05:28 +0000)
committerGreg Farnum <gfarnum@redhat.com>
Mon, 3 May 2021 22:58:36 +0000 (22:58 +0000)
Signed-off-by: Greg Farnum <gfarnum@redhat.com>
(cherry picked from commit 73b461a4f3ab87e20b4df5cae292e70a85a65d69)

src/mon/Monitor.cc
src/mon/OSDMonitor.cc
src/mon/OSDMonitor.h

index cbec370443a4f9950518bb58099b93a1d5ca15d9..99b33801e5edf26d1d20cc2ce5b0204cae90e28e 100644 (file)
@@ -6685,6 +6685,7 @@ void Monitor::set_recovery_stretch_mode()
 {
   degraded_stretch_mode = true;
   recovering_stretch_mode = true;
+  osdmon()->set_recovery_stretch_mode();
 }
 
 void Monitor::maybe_go_degraded_stretch_mode()
@@ -6745,6 +6746,7 @@ void Monitor::set_degraded_stretch_mode()
 {
   degraded_stretch_mode = true;
   recovering_stretch_mode = false;
+  osdmon()->set_degraded_stretch_mode();
 }
 
 struct CMonGoHealthy : public Context {
@@ -6778,6 +6780,7 @@ void Monitor::set_healthy_stretch_mode()
 {
   degraded_stretch_mode = false;
   recovering_stretch_mode = false;
+  osdmon()->set_healthy_stretch_mode();
 }
 
 bool Monitor::session_stretch_allowed(MonSession *s, MonOpRequestRef& op)
index a48c07a872e22a10a74bf619e054c09bba77a69d..e4f13b0538c3a7d923a5c2f5c50732770b1d099c 100644 (file)
@@ -959,6 +959,8 @@ void OSDMonitor::update_from_paxos(bool *need_bootstrap)
          dout(10) << "Enabling recovery stretch mode in this map" << dendl;
          mon.go_recovery_stretch_mode();
        }
+      } else {
+       mon.set_recovery_stretch_mode();
       }
     }
     if (marked_osd_down &&
@@ -966,9 +968,6 @@ void OSDMonitor::update_from_paxos(bool *need_bootstrap)
       dout(20) << "Checking degraded stretch mode due to osd changes" << dendl;
       mon.maybe_go_degraded_stretch_mode();
     }
-    if (osdmap.recovering_stretch_mode && stretch_recovery_triggered.is_zero()) {
-      stretch_recovery_triggered = ceph_clock_now();
-    }
   }
 }
 
@@ -14507,6 +14506,23 @@ void OSDMonitor::trigger_recovery_stretch_mode()
   propose_pending();
 }
 
+void OSDMonitor::set_degraded_stretch_mode()
+{
+  stretch_recovery_triggered.set_from_double(0);
+}
+
+void OSDMonitor::set_recovery_stretch_mode()
+{
+  if (stretch_recovery_triggered.is_zero()) {
+    stretch_recovery_triggered = ceph_clock_now();
+  }
+}
+
+void OSDMonitor::set_healthy_stretch_mode()
+{
+  stretch_recovery_triggered.set_from_double(0);
+}
+
 void OSDMonitor::notify_new_pg_digest()
 {
   dout(20) << __func__ << dendl;
index 255902169d9bd8fe42dd2c92ed18552c123918f4..7ad412086dc090c2af5262479ed41fa5c0ef9da6 100644 (file)
@@ -834,10 +834,22 @@ public:
    */
   void trigger_degraded_stretch_mode(const set<int>& dead_buckets,
                                     const set<string>& live_zones);
+  /**
+   * This is just to maintain stretch_recovery_triggered; below
+   */
+  void set_degraded_stretch_mode();
   /**
    * Set recovery stretch mode in the OSDMap, resetting pool size back to normal
    */
   void trigger_recovery_stretch_mode();
+  /**
+   * This is just to maintain stretch_recovery_triggered; below
+   */
+  void set_recovery_stretch_mode();
+  /**
+   * This is just to maintain stretch_recovery_triggered; below
+   */
+  void set_healthy_stretch_mode();
   /**
    * Tells the OSD there's a new pg digest, in case it's interested.
    * (It's interested when in recovering stretch mode.)