]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: debug recovery_ops_reserved
authorSage Weil <sage@redhat.com>
Fri, 2 Feb 2018 21:26:52 +0000 (15:26 -0600)
committerSage Weil <sage@redhat.com>
Wed, 4 Apr 2018 13:26:51 +0000 (08:26 -0500)
Signed-off-by: Sage Weil <sage@redhat.com>
src/osd/OSD.cc
src/osd/OSD.h
src/osd/OpQueueItem.h

index 356d5f1734ae2e13452075a06f21952aac0b391a..303b9f405138a80e7171e10bb013faee4985b24b 100644 (file)
@@ -8794,6 +8794,9 @@ void OSDService::_maybe_queue_recovery() {
       cct->_conf->osd_recovery_max_single_start);
     _queue_for_recovery(awaiting_throttle.front(), to_start);
     awaiting_throttle.pop_front();
+    dout(10) << __func__ << " starting " << to_start
+            << ", recovery_ops_reserved " << recovery_ops_reserved
+            << " -> " << (recovery_ops_reserved + to_start) << dendl;
     recovery_ops_reserved += to_start;
   }
 }
@@ -8943,6 +8946,17 @@ bool OSDService::is_recovery_active()
   return local_reserver.has_reservation() || remote_reserver.has_reservation();
 }
 
+void OSDService::release_reserved_pushes(uint64_t pushes)
+{
+  Mutex::Locker l(recovery_lock);
+  dout(10) << __func__ << "(" << pushes << "), recovery_ops_reserved "
+          << recovery_ops_reserved << " -> " << (recovery_ops_reserved-pushes)
+          << dendl;
+  assert(recovery_ops_reserved >= pushes);
+  recovery_ops_reserved -= pushes;
+  _maybe_queue_recovery();
+}
+
 // =========================================================
 // OPS
 
index ce05eb67615b538c327f1eeaa97e35cc02ef6434..1734e2dc15ccedfe34337c4ca26372b457e6b0b9 100644 (file)
@@ -821,12 +821,7 @@ public:
   void start_recovery_op(PG *pg, const hobject_t& soid);
   void finish_recovery_op(PG *pg, const hobject_t& soid, bool dequeue);
   bool is_recovery_active();
-  void release_reserved_pushes(uint64_t pushes) {
-    Mutex::Locker l(recovery_lock);
-    assert(recovery_ops_reserved >= pushes);
-    recovery_ops_reserved -= pushes;
-    _maybe_queue_recovery();
-  }
+  void release_reserved_pushes(uint64_t pushes);
   void defer_recovery(float defer_for) {
     defer_recovery_until = ceph_clock_now();
     defer_recovery_until += defer_for;
index 35cfdc8cdcd52f5b12fc85bf5eb864305b3e6a7e..e981fc67338539ef105f63886dbe3876dda2b13b 100644 (file)
@@ -196,11 +196,15 @@ public:
   }
 
   friend ostream& operator<<(ostream& out, const OpQueueItem& item) {
-    return out << "OpQueueItem("
-              << item.get_ordering_token() << " " << *item.qitem
-              << " prio " << item.get_priority()
-              << " cost " << item.get_cost()
-              << " e" << item.get_map_epoch() << ")";
+     out << "OpQueueItem("
+        << item.get_ordering_token() << " " << *item.qitem
+        << " prio " << item.get_priority()
+        << " cost " << item.get_cost()
+        << " e" << item.get_map_epoch();
+     if (item.get_reserved_pushes()) {
+       out << " reserved_pushes " << item.get_reserved_pushes();
+     }
+    return out << ")";
   }
 }; // class OpQueueItem